yumdownloader
in yum-utils
fará o download de todos os pacotes que você passar para ele ou, opcionalmente, poderá gerar as URLs das quais os pacotes podem ser baixados.
Eu tenho uma máquina do CentOS na qual eu já instalei o openssl-devel usando
$ yum install openssl-devel
Baixou e instalou todos os pacotes de dependências. Agora eu preciso de todos esses pacotes RPM. É possível baixar apenas os pacotes RPM? Quando 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
desde que já está instalado.
Alguém sabe como baixar esses pacotes RPM no mesmo sistema?
yumdownloader
in yum-utils
fará o download de todos os pacotes que você passar para ele ou, opcionalmente, poderá gerar as URLs das quais os pacotes podem ser baixados.
Você pode usar o comando repotrack do pacote yum-utils. Ele fará o download de toda a árvore de dependências - , mesmo que já esteja instalado .
Exemplo:
sudo yum install yum-utils # Install yum-utils
sudo repotrack openssl-devel # Download all dependencies for openssl-devel
Exemplo de saída:
[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
É possível baixar os pacotes de um RPM que já está instalado usando a opção --downloadonly
. 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 isso 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
É claro que o yum não saberá quais dependências foram instaladas apenas para este pacote, então se você pegar os RPMs e tentar instalá-los em um sistema diferente, algumas dependências podem estar faltando. 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.
Uma possibilidade a longo prazo pode ser designar uma máquina como a que pode ser baixada da internet, e então executar o NFS (ou um servidor web) para expor / var / cache / yum aos hosts internos.
Você precisaria então atualizar sua configuração do yum, para adicionar:
[main]
keepcache = 1
Por link :
Once you enabled caching, every yum operation may download package data from the configured repositories.
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 reinstall
para os pacotes que você já possui e desejar RPMs para.