Faça o download dos pacotes RPM para o comando que já está instalado

12

Eu tenho uma máquina CentOS na qual eu já instalei o openssl-devel usando

$ yum install openssl-devel 

Ele baixou e instalou todos os pacotes de dependência. Agora eu preciso de todos esses pacotes RPM. É possível baixar apenas os pacotes RPM? Quando eu faço isso:

 $ yum install  openssl-devel -y --downloadonly 

Diz

Package 1:openssl-devel-1.0.1e-4.fc18.x86_64 already installed and latest version

já que já está instalado.

Alguém sabe como baixar esses pacotes RPM no mesmo sistema?

abubacker
fonte

Respostas:

13

É possível baixar os pacotes de um RPM que já esteja instalado usando o --downloadonlyswitch. Não sei por que o yum não verifica essa configuração antes de verificar se o pacote já está instalado, mas acho que pode ser causado pela arquitetura subjacente da ferramenta.

Enfim, tudo que você precisa fazer é dizer ao yum para reinstalar o pacote:

yum --downloadonly --downloaddir=/tmp/rpm_files/ reinstall package_name

Obviamente, o yum não saberá quais dependências foram instaladas apenas para este pacote; portanto, se você pegar os RPMs e tentar instalá-los em um sistema diferente, algumas dependências poderão estar ausentes. Existem maneiras de explorar todo o gráfico de dependência e tenho certeza de que isso já foi descrito em outro lugar no SE.

JohnEye
fonte
7

yumdownloaderO in yum-utilsfará o download dos pacotes que você passar para ele ou, opcionalmente, gerará os URLs dos quais os pacotes podem ser baixados.

Ignacio Vazquez-Abrams
fonte
suas dependências não resolver, é só baixar openssl-devel.x86_64.rpm
abubacker
Não, ele não resolve dependências. Mas há quanto tempo você gostaria que a ferramenta resolvesse as dependências? glibc? filesystem?
Ignacio Vazquez-Abrams
1
minha exigência é simples, eu preciso para obter a lista de rpms, para instalá-lo em outra máquina, que é em fora de linha
abubacker
Você diz "simples", mas na verdade não é tão simples quanto você pensa. Não há ferramenta que resolva dependências, apenas uma lista de quais pacotes já estão instalados.
Ignacio Vazquez-Abrams
1
Na verdade, é simples, yum install openssl-devel -y --downloadonly se eu executar este comando em outra máquina, ele resolverá todas as dependências, mas minha pergunta é se é possível fazer o mesmo em uma máquina na qual instalamos esse comando já
abubacker 17/05
3

Você pode usar o comando repotrack do pacote yum-utils. Ele fará o download de toda a árvore de dependência - mesmo que já esteja instalada .

Exemplo:

sudo yum install yum-utils      # Install yum-utils
sudo repotrack openssl-devel    # Download all dependencies for openssl-devel


Saída de amostra:

[sbadra@rhel6 ~]$ sudo yum install openssl-devel
Loaded plugins: product-id, search-disabled-repos, subscription-manager
Setting up Install Process
Package openssl-devel-1.0.1e-57.el6.x86_64 already installed and latest version
Nothing to do

[sbadra@rhel6 ~]$ sudo repotrack openssl-devel
Downloading audit-libs-2.4.5-6.el6.x86_64.rpm
Downloading audit-libs-2.4.5-6.el6.i686.rpm
Downloading basesystem-10.0-4.el6.noarch.rpm
Downloading bash-4.1.2-48.el6.x86_64.rpm
Downloading ca-certificates-2017.2.14-65.0.1.el6_9.noarch.rpm
Downloading chkconfig-1.3.49.5-1.el6.x86_64.rpm
Downloading coreutils-8.4-46.el6.x86_64.rpm
Downloading coreutils-libs-8.4-46.el6.x86_64.rpm
.... more packages ....
Downloading openssl-1.0.1e-57.el6.i686.rpm
Downloading openssl-1.0.1e-57.el6.x86_64.rpm
Downloading openssl-devel-1.0.1e-57.el6.i686.rpm
Downloading openssl-devel-1.0.1e-57.el6.x86_64.rpm
.... more packages ....
Downloading sed-4.2.1-10.el6.x86_64.rpm
Downloading setup-2.8.14-23.el6.noarch.rpm
Downloading tzdata-2018c-1.el6.noarch.rpm
Downloading zlib-1.2.3-29.el6.x86_64.rpm
Downloading zlib-1.2.3-29.el6.i686.rpm
Downloading zlib-devel-1.2.3-29.el6.i686.rpm
Downloading zlib-devel-1.2.3-29.el6.x86_64.rpm
Sami Badra
fonte
1
Recuei a observação sobre o bug da arquitetura, pois é realmente o comportamento esperado. (x86_64 é um superconjunto do i686, motivo pelo qual o comando também baixa os pacotes do i686) Consulte este e este artigo para obter mais informações.
Sami Badra 23/02
2

Uma possibilidade a longo prazo pode ser designar uma máquina como a única a ser baixada da Internet e executar o NFS (ou um servidor da Web) nela para expor / var / cache / yum aos hosts internos.

Você precisaria atualizar sua configuração do yum para adicionar:

[main]
keepcache = 1

Por https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-Working_with_Yum_Cache.html :

Depois de ativar o cache, todas as operações do yum podem fazer o download dos dados do pacote dos repositórios configurados.

Em termos mais práticos:

$ sudo yum install -y nginx
$ sudo find /var/cache/yum/ -type f -name '*.rpm'
<...snip....>
/var/cache/yum/x86_64/7/epel/packages/nginx-1.10.2-1.el7.x86_64.rpm

As outras respostas realmente resolverão seu problema imediato, onde isso só ajudará se você executar yum reinstallos pacotes que já possui e desejar RPMs.

iwaseatenbyagrue
fonte
0

Aqui está o que eu faço:

O comando sudo yum install --config =. / yum.conf --installroot = / tmp / f541Sdex --downloadonly --downloaddir / tmp / DL-e25xds $ (lista de pacotes cat)

Sparsile
fonte