Принудительно обновлять зависимости yum, только если установлено - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть номер для пакетов RPM.Один пакет - это основной пакет, который всегда установлен.Другие пакеты являются дополнительными и предоставляют некоторые дополнительные функции.Я хочу обеспечить синхронизацию этих пакетов с версией программного обеспечения.Если основные RPM-пакеты обновляются с помощью 'yum update mypackage', я хотел бы также принудительно обновить дополнительные пакеты, но , только если они установлены .

.файл RPM SPEC:

Requires: optionalPackage1 >= 3.4.5

, где версия будет моей текущей версией mainPackage (все пакеты будут иметь одинаковую версию).Но я понимаю, что это всегда будет устанавливать optionPackage1, если он не установлен в данный момент, когда используется yum update mainPackage .

Я хотел бы добавить что-то в файл SPEC такого рода:

RequiresIfInstalled: optionalPackage1 > 3.4.5
RequiresIfInstalled: optionalPackage2 > 3.4.5
RequiresIfInstalled: optionalPackage3 > 3.4.5

Тогда, если я это сделаю:

yum update mainPackage

и дополнительный пакет установлен, но в версии 3.4.1 он будет обновлен до версии 3.4.5, но если дополнительный пакет не установлен, то егоне будет установлен в данный момент.

Есть ли способ указать это в файле SPEC RPM?

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019

, поскольку нумерация вашего основного пакета и дополнительных пакетов развиваются вместе, могу ли я предположить, что они создаются одним и тем же файлом spec?В этом случае я бы просто перевернул зависимости.

В файле спецификации:

name: main-package

%package -n optionalPackage1
Requires %{name} = %{version}-%{release}

таким образом, необязательные пакеты должны быть установлены вместе с основным пакетом с точнымта же версияПоэтому, когда оба сценария будут работать:

  • обновление только основного пакета будет работать
  • обновление основного пакета, пока установлен optionalPackage1, приведет к обновлению optionalPackage1 доточно такая же версия.

ПРИМЕЧАНИЕ : вы можете применить этот метод также, когда ваши основной и дополнительный пакеты не находятся в одном и том же хранилище, но это будет означать, что вам потребуетсяприменять изменения во всех спецификациях для всех дополнительных пакетов каждый раз, когда вы генерируете новый основной пакет.

NOTE2 : это не будет работать с >=, потому что тогдаобновление основного пакета с 1.2.3 до 2.0.0 не приведет к принудительному обновлению для optionalPackage1, для которого требуется main >= 1.2.3 ... Если вам не нужны точные требования, вы можете выбрать какую-то стратегию «диапазона», что-токак:

Requires: main >= 1.2
Requires: main < 1.3
0 голосов
/ 26 сентября 2019

RPM имеет концепцию " рекомендует ", но он довольно новый, и я не уверен, какие дистрибутивы его поддерживают.Fedora упоминает об этом в Руководстве по упаковке без какой-либо информации о версии.

...