Como instalar dependências de um pacote rpm sem instalar o pacote em si? (rhel / fedora)

12

Eu tenho um conjunto de pacotes (* .rpm). Para cada pacote eu posso fazer rpm -qRp <package> para lista requer, mas eu gostaria de instalá-los (aqueles requer) sem instalar os pacotes eles mesmos. O requer todos ao vivo em repositórios ativados. Existe alguma maneira fácil de fazer isso sem escrever meu próprio script que analise a saída de rpm -qRp ... , por exemplo.

Eu sei que poderia fazê-lo instalando tudo com requer ( yum localinstall ) e depois desinstalando os pacotes originais, mas o problema é que meu conjunto contém pacotes com dependências e conflitos entre eles. Os pacotes necessários, no entanto, não entram em conflito. Eu teria que fazer vários yum localinstall <list> seguidos por yum remove <list> e ter certeza de que os pacotes na lista não estão em conflito.

Eu tenho uma maneira melhor? Eu basicamente gostaria de algo como yum-builddep , mas para requer, não requer construção.

Minhas distros são Fedora / RHEL

    
por Miroslav Franc 06.08.2015 / 10:43

2 respostas

19

Você pode usar o comando yum deplist para gerar uma lista de dependências de pacotes:

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

Pegue as linhas provider: disso para uma lista de pacotes:

$ 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

Envie esta saída para yum install para instalar os pacotes:

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

A melhor maneira é:

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

... usando o deplist / etc. vai funcionar principalmente, mas não é garantido para obter o mesmo resultado exato.

    
por 07.08.2015 / 22:03

Tags