Jak zainstalować zależności pakietu rpm bez instalowania samego pakietu? (rhel / fedora)

18

Mam zestaw pakietów (* .rpm). Dla każdego pakietu, który mogę zrobić, rpm -qRp <package>aby wyświetlić listę wymaga, ale chciałbym je zainstalować (te wymagają) bez instalowania samych pakietów. Wymaga wszystkich aktywnych w włączonych repozytoriach. Czy jest jakiś prosty sposób, aby to zrobić bez pisania własnego skryptu, który analizowałby rpm -qRp ...na przykład dane wyjściowe .

Wiem, że mógłbym to zrobić, instalując wszystko za pomocą wymaga ( yum localinstall), a następnie odinstalowując oryginalne pakiety, ale problem polega na tym, że mój zestaw zawiera pakiety z zależnościami i konfliktami między nimi. Wymagane pakiety nie powodują jednak konfliktu. Musiałbym zrobić wiele, yum localinstall <list>a następnie yum remove <list>upewnić się, że pakiety na liście nie powodują konfliktu.

Czy jest lepszy sposób? Zasadniczo chciałbym coś takiego yum-builddep, ale dla potrzeb, a nie wymagań budowania.

Moje dystrybucje to Fedora/RHEL

Miroslav Franc
źródło

Odpowiedzi:

24

Możesz użyć yum deplistpolecenia, aby wygenerować listę zależności pakietów:

$ 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
[...]

Chwyć za to provider:wiersze, aby uzyskać listę pakietów:

$ 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

Wyślij to wyjście, yum installaby zainstalować pakiety:

$ yum deplist bind | awk '/provider:/ {print $2}' | sort -u |
  xargs yum -y install
Larsks
źródło
1
Dzięki. Wydaje się, że działa nawet na plikach rpm. Właśnie tego szukałem.
Miroslav Franc,
1
Czy ktoś chce mieć do -1? Czy jest coś, co mogę naprawić?
larsks
4

Najlepszym sposobem jest:

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

... za pomocą deplist / etc. będzie w większości działać, ale nie ma gwarancji uzyskania dokładnie tego samego rezultatu.

James Antill
źródło
yum -ymoże być potrzebne.
caot
-y nie jest domyślny z kilku powodów, a ważne nie zmieniają się powyżej.
James Antill