Как установить зависимости пакета rpm без установки самого пакета? (RHEL / Fedora)

18

У меня есть набор пакетов (* .rpm). Для каждого пакета, который я могу сделать, rpm -qRp <package>требуется список, но я хотел бы установить их (те, которые требуются), не устанавливая сами пакеты. Требуются все живые во включенных репозиториях. Есть ли какой-нибудь простой способ сделать это без написания собственного скрипта, который бы анализировал вывод, rpm -qRp ...например.

Я знаю, что мог бы сделать это, установив все с помощью require ( yum localinstall) и затем удалив исходные пакеты, но проблема в том, что мой набор содержит пакеты с зависимостями и конфликтами между ними. Однако необходимые пакеты не конфликтуют. Я должен сделать несколько, yum localinstall <list>а затем yum remove <list>убедиться, что пакеты в списке не конфликтуют.

Я там лучше? Я бы в принципе хотел что-то вроде yum-builddep, но для требует, а не для сборки требуется.

Мои дистрибутивы Fedora/RHEL

Мирослав Франк
источник

Ответы:

24

Вы можете использовать yum deplistкоманду для генерации списка зависимостей пакетов:

$ yum deplist bind
  dependency: /bin/bash
   provider: bash.x86_64 4.3.39-5.fc21
  dependency: /bin/sh
   provider: bash.x86_64 4.3.39-5.fc21
  dependency: bind-libs(x86-64) = 32:9.9.6-10.P1.fc21
   provider: bind-libs.x86_64 32:9.9.6-10.P1.fc21
  dependency: coreutils
   provider: coreutils.x86_64 8.22-22.fc21
[...]

Возьмите provider:строки из этого списка пакетов:

$ yum deplist bind | awk '/provider:/ {print $2}' | sort -u
bash.x86_64
bind-libs.x86_64
coreutils.x86_64
glibc.i686
glibc.x86_64
grep.x86_64
krb5-libs.x86_64
libcap.x86_64
libcom_err.x86_64
libxml2.x86_64
openssl-libs.x86_64
shadow-utils.x86_64
systemd.x86_64
zlib.x86_64

Отправьте эти выходные данные yum installдля установки пакетов:

$ yum deplist bind | awk '/provider:/ {print $2}' | sort -u |
  xargs yum -y install
larsks
источник
1
Благодарю. Кажется, работает даже на rpm-файлах. Именно то, что я искал.
Мирослав Франк
1
Кто-нибудь хочет владеть до -1? Есть ли что-то, что я могу исправить?
Жаворонки
4

Лучший способ это:

yum shell <<EOF
install foo
ts solve
remove foo
run
EOF

... используя deplist / и т.д. будет в основном работать, но не гарантированно получить тот же результат.

Джеймс Антилл
источник
yum -yможет понадобиться
около
-у не по умолчанию по нескольким причинам, и важные из них не меняются в соответствии с вышеизложенным.
Джеймс Антилл