Come installare le dipendenze di un pacchetto rpm senza installare il pacchetto stesso? (RHEL / Fedora)


18

Ho una serie di pacchetti (* .rpm). Per ogni pacchetto che posso fare rpm -qRp <package>per elencare è necessario, ma vorrei installarli (quelli richiesti) senza installare i pacchetti stessi. È necessario che tutti vivano in repository abilitati. C'è un modo semplice per farlo senza scrivere il mio script che analizzerebbe l'output di rpm -qRp ...per esempio.

So che potrei farlo installando tutto ciò che richiede ( yum localinstall) e quindi disinstallando i pacchetti originali, ma il problema è che il mio set contiene pacchetti con dipendenze e conflitti tra di loro. I pacchetti richiesti tuttavia non sono in conflitto. Dovrei fare multiplo yum localinstall <list>seguito da yum remove <list>e assicurarsi che i pacchetti nell'elenco non siano in conflitto.

C'è un modo migliore? Vorrei fondamentalmente qualcosa del genere yum-builddep, ma per esigenze, non per costruire.

Le mie distro sono Fedora/RHEL

Risposte:


24

È possibile utilizzare il yum deplistcomando per generare un elenco di dipendenze di pacchetti:

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

Prendi le provider:righe da questo per un elenco di pacchetti:

$ 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

Invia questo output a yum installper installare i pacchetti:

$ yum deplist bind | awk '/provider:/ {print $2}' | sort -u |
  xargs yum -y install

1
Grazie. Sembra funzionare anche su file rpm. Esattamente quello che stavo cercando.
Miroslav Franc,

1
Qualcuno vuole possedere fino al -1? C'è qualcosa che posso aggiustare?
Larks

4

Il modo migliore è:

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

... usando deplist / etc. funzionerà principalmente, ma non è garantito per ottenere lo stesso risultato esatto.


yum -ypotrebbe essere necessario.
Caot

-y non è il valore predefinito per alcuni motivi e quelli importanti non cambiano in base a quanto sopra.
James Antill,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.