Назад | Перейти на главную страницу

построить пакет .rpm со всеми его зависимостями

Я не уверен, рекомендуется ли это подход или нет, в случае, если у пользователя нет доступа в Интернет, а мое программное обеспечение требует, скажем: libgcc-4.3.0.0.rpm (например), я хотел бы связать это для конкретной поддерживаемой ОС (например, RHEL 5.10) и всех ее зависимостей в одном .rpm.

какой лучший подход для этого?

Спасибо,

Было бы сложно связать все зависимости в один RPM, не в последнюю очередь потому, что система, на которой вы строите, может иметь другой состав пакетов, чем ваша цель (например, ваша цель имеет уже установленные более новые или конфликтующие пакеты, которые вы можете непреднамеренно перезаписать ).

Однако вместо этого вы можете получить список все необходимые пакеты и установите их все в то же время.

Предполагая, что у вас есть две системы (сборка и целевая версия), которые имеют одинаковый вид и выпуск (например, создание списка пакетов в CentOS 6 для CentOS 6), попробуйте что-нибудь следующее:

$ sudo yum install yum-utils # not necessary on the target
$ mkdir package-bundle
$ yumdownloader --destdir package-bundle `repoquery --resolve --requires $PACKAGE_NAME`
$ tar -czvf package-bundle.tar.gz package-bundle

В целевой системе:

$ tar -xzvf package-bundle.tar.gz
$ sudo yum install package-bundle/*.rpm

Вышеуказанное использование повторный запрос вместо того, чтобы полагаться на yumdownloader чтобы разрешить зависимости, как yumdownloader не рекурсивно разрешается, когда --resolve установлен флаг.

Я думаю, что вам нужно статически скомпилировать приложение. Это снизит вероятность того, что пользователь получит какие-либо зависимости, которые для него уже недоступны.

Вам не нужно связывать зависимости. Если у конечного пользователя нет доступа в Интернет, это их проблема. В таких местах есть множество способов справиться с этим, например, использование установочного носителя для установки и обновления пакетов, поддержка локального зеркала дистрибутива и т. Д.