Comment installer les dépendances d'un package rpm sans installer le package lui-même? (rhel / fedora)

18

J'ai un ensemble de packages (* .rpm). Pour chaque package que je peux faire rpm -qRp <package>pour lister les besoins, mais je voudrais les installer (ceux-ci nécessitent) sans installer les packages eux-mêmes. Le requiert tous en direct dans des référentiels activés. Existe-t-il un moyen facile de le faire sans écrire mon propre script qui analyserait la sortie de rpm -qRp ...par exemple.

Je sais que je pourrais le faire en installant tout avec require ( yum localinstall) puis en désinstallant les packages d'origine, mais le problème est que mon ensemble contient des packages avec des dépendances et des conflits entre eux. Les packages requis ne sont cependant pas en conflit. Je devrais faire plusieurs yum localinstall <list>suivis yum remove <list>et m'assurer que les paquets dans la liste ne sont pas en conflit.

J'y ai une meilleure façon? Je voudrais essentiellement quelque chose comme yum-builddep, mais pour les besoins, pas les exigences de construction.

Mes distributions sont Fedora/RHEL

Miroslav Franc
la source

Réponses:

24

Vous pouvez utiliser la yum deplistcommande pour générer une liste de dépendances de package:

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

Prenez les provider:lignes de cela pour une liste de packages:

$ 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

Envoyez cette sortie à yum installpour installer les packages:

$ yum deplist bind | awk '/provider:/ {print $2}' | sort -u |
  xargs yum -y install
larsks
la source
1
Merci. Semble fonctionner même sur les fichiers rpm. Exactement ce que je cherchais.
Miroslav Franc
1
Quelqu'un veut-il posséder le -1? Y a-t-il quelque chose que je peux réparer?
larsks
4

La meilleure façon est:

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

... en utilisant deplist / etc. fonctionnera principalement, mais il n'est pas garanti d'obtenir exactement le même résultat.

James Antill
la source
yum -ypourrait être nécessaire.
caot
-y n'est pas la valeur par défaut pour plusieurs raisons, et les importantes ne changent pas par ce qui précède.
James Antill