Aqui está um exemplo específico usando "httpd" como o pacote para baixar e instalar. Este processo foi testado no CentOS6 e CentOS7.
Instale o material necessário e crie um local para colocar os RPMs baixados:
# yum install yum-plugin-downloadonly yum-utils createrepo
# mkdir /var/tmp/httpd
# mkdir /var/tmp/httpd-installroot
Faça o download dos RPMs. Isso usa o truque installroot sugerido aqui para forçar o download completo de todas as dependências, já que nada está instalado nessa raiz vazia. Yum criará alguns metadados, mas vamos jogar tudo fora. Note que para o CentOS7 releasever
seria "7".
# yum install --downloadonly --installroot=/var/tmp/httpd-installroot --releasever=6 --downloaddir=/var/tmp/httpd httpd
Sim, isso foi a versão pequena. Você deveria ter visto o tamanho dos downloads de repositório completo!
Gere os metadados necessários para transformar nossa nova pilha de RPMs em um repositório YUM e limpe as coisas que não precisamos mais:
# createrepo --database /var/tmp/httpd
# rm -rf /var/tmp/httpd-installroot
Configure o diretório de download como um repositório. Observe que para o CentOS7 a gpgkey seria nomeada "7" em vez de "6":
# vi /etc/yum.repos.d/offline-httpd.repo
[offline-httpd]
name=CentOS-$releasever - httpd
baseurl=file:///var/tmp/httpd
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Para verificar as dependências ausentes:
# repoclosure --repoid=offline-httpd
Eu não descobri por que no CentOS7 isso relata coisas como libssl.so.10(libssl.so.10)(64bit)
falta de httpd-tools
quando openssl-libs-1.0.1e-51.el7_2.2.x86_64.rpm
(o provedor dessa biblioteca) está claramente presente no diretório. Ainda assim, se houver algo obviamente ausente, pode ser uma boa chance de voltar e adicioná-lo usando o mesmo yum install --downloadonly
método acima.
Quando estiver offline ou depois de copiar o /var/tmp/httpd
diretório de repositório para outro servidor, configure o repositório lá:
# vi /etc/yum.repos.d/offline-httpd.repo
[offline-httpd]
name=CentOS-$releasever - httpd
baseurl=file:///var/tmp/httpd
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
# yum --disablerepo=\* --enablerepo=offline-httpd install httpd
Espero que não haja dependências ausentes!