web-dev-qa-db-fra.com

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

J'ai un ensemble de packages (* .rpm). Pour chaque paquet, je peux faire rpm -qRp <package> pour lister nécessite, 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 simple 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 désinstaller 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> suivi par yum remove <list> et assurez-vous que les packages de la liste ne sont pas en conflit.

J'y ai une meilleure façon? J'aimerais essentiellement quelque chose comme yum-builddep, mais pour require, pas buildrequires.

Mes distributions sont Fedora/RHEL

19
Miroslav Franc

Vous pouvez utiliser le yum deplist commande 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 le provider: lignes de ceci 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 install pour installer les packages:

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

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.

4
James Antill