Установка dkms на машину с Ubuntu, на которой нет компилятора

Я пытаюсь установить dkms на машины без make или gcc. Я планирую отправлять на эти целевые машины только двоичные файлы.

На моей сборочной машине я планирую использовать dkms для сборки модулей с поддержкой dkms, а затем использовать dkms mktarball ... --binaries-only для создания архивов для распространения.

Я хочу отправить эти tar-архивы на целевые машины, и на этих машинах я хочу использовать dkms ldtarball, поэтому целевым машинам нужны dkms, но им не нужен gcc (или сделать).

  1. Сборка (хост) и целевые машины работают под управлением одной и той же Ubuntu
  2. apt-get install dkms на цели автоматически вводит gcc
  3. Загрузка dkms.deb (apt-get download dkms) и установка его с помощью dpkg --install --ignore-depends=gcc ... dkms.deb действительно работает, но оставляет зависимость неразрешенной, так что любое будущее apt-get (например, установка какого-либо другого пакета) терпит неудачу.
  4. Я могу попробовать использовать пакет equiv для создания фиктивных установок gcc и make, но это выглядит как ужасный хак, который я бы предпочел избегать. Также это может создать проблемы, если я когда-нибудь захочу установить gcc на цель в будущем.

Об этом есть примечание в файле README dkms (раздел 3), но нет указаний, как это сделать. «Если вы решите не загружать исходный код модуля в свою систему или если вы решите не загружать компилятор ... DKMS все равно можно использовать для установки модулей».

(извините, если теги вводят в заблуждение... нет доступных тегов для dkms)


person halm    schedule 13.08.2015    source источник


Ответы (2)


Создайте локальный фиктивный пакет, который делает вид, что устанавливает gcc и любые другие приложения, которые вы хотите убрать из вашей системы. Для этого можно использовать пакет equivs, но его достаточно просто сделать и вручную.

person tripleee    schedule 13.08.2015
comment
Спасибо. Это была и моя мысль (как я уже упоминал, я пробовал equiv), но затем любая последующая установка, которая действительно требует gcc, пропустит его (если только я заранее не удалю фиктивный файл). На самом деле я надеялся найти способ создать новую версию dkms‹.deb, в которой просто нет этих зависимостей… что-то вроде dkms-target-‹version›.deb. Просматривая код dkms, кажется, что цели на самом деле не нужен gcc при установке бинарного архива. Зависимость существует только (я думаю), так что dkms build может делать свое дело, если это необходимо. - person halm; 13.08.2015

Большое спасибо Дарику Хорну за отличный (офлайн) ответ.

Он предложил использовать /etc/apt/preferences.d для закрепления нежелательных пакетов. Это решение выглядит многообещающе, и я буду изучать его дальше (и, если возможно, опубликую здесь результаты).

Мне удалось найти другое решение на форумах Ubuntu и на Superuser, который выглядит многообещающе.

Шаги, которые выполняет скрипт, могут быть выполнены вручную и в основном таковы:

  1. мкдир
  2. dpkg-deb -x dkms...deb
  3. dpkg-deb --control dkms...deb /DEBIAN
  4. Отредактируйте строку Depends в файле /DEBIAN/control.
  5. dpkg -b dkms-modified-...deb
person halm    schedule 13.08.2015
comment
То же решение (с рабочим скриптом) находится здесь: чтобы легко редактировать управляющий файл в пакете deb">superuser.com/questions/280370/ - person halm; 14.08.2015