Como instalar dependências de um pacote rpm sem instalar o próprio pacote? (rhel / fedora)

18

Eu tenho um conjunto de pacotes (* .rpm). Para cada pacote que posso fazer rpm -qRp <package>para listar, é necessário, mas eu gostaria de instalá-los (isso requer) sem instalar os próprios pacotes. O requer todos vivem em repositórios habilitados. Existe alguma maneira fácil de fazer isso sem escrever meu próprio script que analisaria a saída, rpm -qRp ...por exemplo.

Eu sei que poderia fazê-lo instalando tudo com require ( yum localinstall) e 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 garantir que os pacotes na lista não entrem em conflito.

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

Minhas distros são Fedora/RHEL

Franco de Miroslav
fonte

Respostas:

24

Você pode usar o yum deplistcomando 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 provider:linhas a seguir para obter 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 yum installpara instalar os pacotes:

$ yum deplist bind | awk '/provider:/ {print $2}' | sort -u |
  xargs yum -y install
larsks
fonte
1
Obrigado. Parece estar funcionando mesmo em arquivos rpm. Exatamente o que eu estava procurando.
Franco Miroslav
1
Alguém quer possuir até -1? Existe algo que eu possa consertar?
Larsks
4

A melhor maneira é:

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

... usando deplist / etc. funcionará principalmente, mas não é garantido que você obtenha exatamente o mesmo resultado.

James Antill
fonte
yum -ypode ser necessário.
caot 07/02
-y não é o padrão por alguns motivos, e os importantes não são alterados pelos itens acima.
James Antill