Как узнать порядок, в котором rpm установит набор новых пакетов?

Как узнать порядок, в котором rpm установит набор новых пакетов?

У меня есть набор пакетов rpm. Я собираюсь установить их все сразу, но перед этим я хочу получить порядок, в котором они будут установлены. Я знаю, что если я предоставлю их все менеджеру пакетов в случайном порядке, менеджер определит зависимости между ними и установит их в правильном порядке. Как мне получить этот порядок?

решение1

Вы можете использовать отладочный вывод rpm с опцией --test. Это означает, что пакеты не будут установлены, но вывод stderr будет содержать внутренний порядок, например:

D: ========== tsorting packages (order, #predecessors, #succesors, depth)
D:     0    0    2    1   +cla-v1-r45.0.0.x86_64
D:     1    0   11    2   +ace-6.5.15-1.x86_64
D:     2    0    1    3       +ace-kokyu-6.5.15-1.x86_64
D:     3    0    1    3       +ace-xml-6.5.15-1.x86_64
D:     4    0    7    4       +tao-2.5.15-1.x86_64
D:     5    0    0    5       +tao-cosconcurrency-2.5.15-1.x86_64
D:     6    0    0    5       +tao-cosevent-2.5.15-1.x86_64
D:     7    0    0    5       +tao-cosnaming-2.5.15-1.x86_64
D:     8    0    0    5       +tao-cosnotification-2.5.15-1.x86_64
D:     9    0    0    5       +tao-costrading-2.5.15-1.x86_64
D:    10    0    0    5       +tao-rtevent-2.5.15-1.x86_64
D:    11    0    0    5       +tao-utils-2.5.15-1.x86_64
D:    12    0    0    3     +ace-gperf-6.5.15-1.x86_64
D:    13    0    0    1   +mpc-6.5.15-1.x86_64
D:    14    0    0    1   +PCMX-6.0A90-02.x86_64
D: installing binary packages

Затем используйте какой-нибудь фильтр для его разбора, например awk

rpm -Uvv --test *.rpm 2>&1 | awk 'BEGIN { FS = "+" }; /D: ========== tsorting packages/,/D: installing binary packages/ { printf "%s ",$2 }'

решение2

yumне имеет возможности распечатать этот заказ (см.руководство), и нет общеизвестного интерфейса к его базе данных и библиотекам, которые могут это сделать. Поэтому решение должно бытьснаружи yum. Вы всегда можете попросить yumраспечатать полный список дополнительных зависимостей пакета, но эта информация не очень полезна для получениязаказв котором пакеты должны быть установлены. Проще спросить rpm.

В принципе, можно написать скрипт, который использует вывод

rpm -qpR package-file

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

  • пакеты, которые не зависят ни от одного из других, то
  • пакеты, которые зависят от одного или нескольких предыдущих (и, возможно, от других вэтотгруппа) и
  • и так далее, пока не останется ни одного пакета

(Я сделал наоборот - искал пакеты дляудалять, и это сложно, но выполнимо).

Связанный контент