Minha empresa gerencia alguns sistemas RHEL 7 para vários clientes. Um cliente em particular tem um pacote instalado de um repositório não padrão em seu sistema. Várias semanas atrás, esse repositório repentina e inesperadamente ficou offline. Agora o cliente quer um novo sistema com o mesmo pacote instalado. No entanto, não podemos obter uma cópia desse pacote - o repositório upstream está offline e limpamos /var/cache/yum
diariamente por meio de um processo automatizado (usando yum clean
) para economizar espaço em disco em sistemas de produção. Estamos em contato com o fornecedor para obter uma cópia do pacote sem sucesso até agora.
Supondo que o cache do Yum não contenha uma cópia, existe alguma maneira de recuperar ou reconstruir um pacote RPM depois de instalado pelo Yum?
Já existem várias perguntas ( 1 , 2 ) que abordam a obtenção de uma cópia de um pacote instalado, mas todas as respostas dependem do cache do Yum.
Obviamente, a melhor resposta em meu cenário particular é dizer ao cliente que não há nada que possamos fazer até que o fornecedor se recomponha, mas digamos, para o bem desta questão, que o cliente é hipoteticamente nosso maior cliente e eles nos deixarão se não tivermos um novo sistema instalado com o software instalado, devemos obter uma cópia do pacote ou então nossa empresa corre o risco de falir. (Na realidade, estou apenas curioso para saber se há uma maneira de fazer isso, meu sustento não depende disso.)
A maneira manual lenta e irritante pode seguir as linhas de
e crie um tarball a partir desses arquivos. No entanto, pode ser necessário excluir alguns desses arquivos ou diretórios, dependendo. Além disso, você precisará coletar os scripts, se houver
e, em seguida, encontre ou adapte um adequado
newhope.spec
para usarnewhope.tar.gz
como fonte, insira os scripts nesse arquivo de especificação e, em seguida, uma quantidade desconhecida de mexer e testar erpmbuild
obter os%files
scripts acima de todos adequadamente situados, resolva quaisquer conflitos acima método mudo make-a-tarball pode criar com outros pacotes, etc.(também
rpm -q
--conflicts
e--requires
e pode precisar de inspeção--triggers
e--provides
possível inclusão manual na especificação; basicamente,man rpm
e percorra todos os sinalizadores mencionados naquery-options
seção de sinalizadores para ver o que o RPM instalado contém...)Um respondente a uma pergunta antiga no SuperUser sugere o uso de
rpm --rebuild
. No entanto, a versão do RPM que acompanha o RHEL 7 parece não oferecer suporte a essa opção.Outra abordagem é usar
rpmrebuild
, que está disponível por meio do EPEL no RHEL 7. Pude usar essa ferramenta para recriar pacotes instalados. Os pacotes resultantes serão quase idênticos aos originais. Notavelmente: