Sem usar o cache Yum, posso recuperar ou reconstruir um RPM depois que ele foi instalado?

0

Minha empresa gerencia alguns sistemas RHEL 7 para vários clientes. Um cliente em particular possui um pacote instalado a partir de um repositório não padrão em seu sistema. Várias semanas atrás, esse repositório subitamente 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 nos sistemas de produção. Estamos em contato com o fornecedor para obter uma cópia do pacote sem sorte até o momento.

Supondo que o cache do Yum não contenha uma cópia, existe alguma maneira de recuperar ou reconstruir um pacote RPM após ele ter sido instalado no 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 específico é dizer ao cliente que não há nada que possamos fazer até que o fornecedor atue em conjunto, mas digamos que, em nome dessa questão, o cliente é, hipoteticamente, nosso maior cliente. Vamos nos deixar se não tivermos um novo sistema com seu software instalado, então devemos obter uma cópia do pacote, ou então nossa empresa corre o risco de ir abaixo. (Na verdade, estou apenas curioso para saber se há uma maneira de fazer isso, minha subsistência não depende disso.)

    
por jayhendren 28.12.2017 / 19:53

2 respostas

0

Um respondente de uma pergunta antiga no SuperUser sugere usar rpm --rebuild . No entanto, a versão do RPM que vem com o RHEL 7 não parece suportar essa opção.

Outra abordagem é usar rpmrebuild , que está disponível por meio do EPEL no RHEL 7. Consegui usar essa ferramenta para recriar pacotes instalados. Os pacotes resultantes serão quase idênticos aos originais. Notavelmente:

  • Quaisquer alterações nos arquivos no disco serão detectadas pelo novo pacote (o mais provável de ocorrer nos arquivos de configuração)
  • O pacote não será assinado, mesmo que o pacote original tenha sido assinado, já que ninguém além dos assinantes do pacote original tem uma cópia da chave privada usada para assinar o pacote
por 28.12.2017 / 20:36
0

A maneira manual irritante lenta pode ser executada ao longo das linhas de

$ rpm -ql openssh-server
...

e construa um tarball a partir desses arquivos. No entanto, talvez seja necessário excluir alguns desses arquivos ou diretórios, dependendo. Além disso, você precisará coletar os scripts, se houver

$ rpm -q --scripts openssh-server
...

e, em seguida, localize ou adapte um newhope.spec adequado para usar seu newhope.tar.gz como a origem, insira os scripts nesse arquivo de especificação e, em seguida, uma quantidade desconhecida de testes e rpmbuild ing para obter a %files e scripts acima de tudo, devidamente ajustados, resolvem quaisquer conflitos que o método acima do make-a-tarball possa criar com outros pacotes, etc.

(também rpm -q --conflicts e --requires e --triggers e --provides podem precisar de inspeção e possível inclusão manual na especificação; basicamente man rpm e percorrer todas as bandeiras mencionadas no sinal query-options seção para ver o que o RPM instalado contém ...)

    
por 28.12.2017 / 20:35