Файл SPEC создает два RPM, но зависимость делает невозможным обновление -Uvh

Я работаю над файлом спецификаций (foo.spec), который при сборке дает два RPM: foo-1-1.i386.rpm (основная программа) и libfoo- 1-1.i386.rpm (необходимые файлы библиотеки). В файле foo.spec указано, что для foo требуется libfoo той же версии и уровня выпуска:

Requires: libfoo = %{version}-%{release}

foo-1-1 прекрасно устанавливается с помощью:

rpm -ivh libfoo-1-1.i386.rpm

который устанавливает зависимую библиотеку, а затем:

rpm -ivh foo-1-1.i386.rpm

Но обновление до более новой версии (foo-2-1) не работает из-за зависимости от библиотек:

$ rpm -Uvh libfoo-2-1.i386.rpm
error: Failed dependencies:
       libfoo = 1-1 is needed by (installed) foo-1-1.i386

$ rpm -Uvh foo-2-1.i386.rpm
error: Failed dependencies:
       libfoo = 2-1 is needed by foo-2-1.i386

Так что я застрял. Я хочу, чтобы пользователи могли выполнить команду rpm -Uvh для обновления пакета foo (требовать от них игнорировать зависимости и т. д. — слишком многого от начинающих пользователей).

Любые идеи о том, как я могу обойти это, чтобы rpm -Uvh можно было использовать для обновления всех частей пакета, когда будет доступен новый выпуск?

Заранее спасибо.


person SteveJ    schedule 15.08.2011    source источник
comment
IIRC, вы можете запустить rpm -Uvh foo-2.1.i386.rpm libfoo-2-1.i386.rpm для обновления обоих одновременно   -  person Hasturkun    schedule 15.08.2011
comment
Можно ли просто хранить все библиотеки (содержимое libfoo) в RPM-пакете foo, если вы хотите, чтобы он был таким связанным? Привязка версии/выпуска libfoo к текущей версии foo как бы противоречит цели отдельных RPM, поскольку обновление одного потребует от вас обновления другого. Кроме того, чтобы ваш пример обновления работал, вам нужно сначала удалить foo-1-1, прежде чем обновлять libfoo. Или вы можете использовать yum, чтобы позаботиться обо всем этом: yum update foo. Однако для этого потребуется настроить (локальный) репозиторий.   -  person Manny D    schedule 15.08.2011


Ответы (1)


rpm не должен и не позволяет вам обновлять эти RPM по отдельности, так как состояние между установкой первого RPM и второго недействительно.

Вы можете, как указывает Хастуркун, установить их обоих в одной команде:

rpm -Uvh libfoo-2-1.i386.rpm foo-1-1.i386.rpm

FWIW, если вы создадите репозиторий yum и используете его для обновления, вы обнаружите, что обновление одного RPM автоматически перетаскивает другой.

person linuts    schedule 22.08.2011