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
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
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.