Existem duas máquinas, versão / arco idêntico do SLES.
Na máquina # A, existe um software "foo" instalado que podemos ver usando rpm -qa
.
Na máquina #B, o software "foo" precisa ser instalado.
O foo.rpm
não está disponível em nenhuma fonte, na internet etc.
Questão
Como o pacote foo.rpm
foi instalado na máquina # A, podemos criar um foo.rpm
arquivo a partir dos arquivos já instalados?
Também existem scripts pré / pós nas rpm, eu acho. Portanto, o foo.rpm
( com dependências? ) Pode ser instalado.
Respostas:
É possível, mas altamente difícil, fazer isso para que seja feito corretamente. Se você estiver desesperado, poderá criar um novo
.spec
arquivo RPM e construir um arquivo RPM de origem "falso" (SRPM), que poderá ser usado para construir um arquivo RPM resultante usandorpmbuild --rebuild
.Em vez disso, continuaria pesquisando o RPM real. Você não indica qual é a sua pergunta, mas, de acordo com a minha experiência, você pode encontrar qualquer coisa na internet se souber como procurá-la. Eu encontrei versões antigas de RPMs para distribuições da Red Hat que não são usadas há mais de 10 anos, por isso acho difícil acreditar que não haja nenhum remanescente desse RPM em nenhum lugar.
Além disso, muitas vezes você pode voltar à origem do aplicativo contido no RPM e usá-lo para reconstruir o RPM também. Muitas vezes, os aplicativos de origem incluem um
.spec
arquivo necessário que é usado para reconstruir o RPM.Por fim, você pode obter a fonte e o
.spec
arquivo de um serviço de compilação, como o Koji para distribuições baseadas no Red Hat. O SuSE também mantém serviços de construção semelhantes, para que você possa pesquisar através deles para obter artefatos de construção antigos.Tomando os binários como estão
Você pode usar esse método para elevar os executáveis reais de um sistema e tará-los para implantação em outro sistema.
máquina A
máquina B
Versão do RPM do SLES
De acordo com um dos posts deste tópico: Re: Como criar pacotes RPM a partir de pacotes instalados
rpm
no SLES, é suposto ter o switch--repackage
. Isso não existe na versão Red Hat (no Fedora ou CentOS). Mas de acordo com o post, você pode usá-lo assim:Após a conclusão, você encontrará seu RPM acessível aqui:
Usando rpmerizor
O Rpmerizor é uma ferramenta / script de terceiros que você pode instalar, que irá empacotar novamente os arquivos de origem no RPM correspondente. O uso desse script pode ser acessado aqui, intitulado: man page de rpmerizor .
excerto
Usando rpmrebuild
Não deve ser confundido com a ferramenta de construção
rpmbuild
,rpmrebuild
é outro script de terceiros que você pode usar para fazer uma nova embalagem de um RPM já instalado.excerto
Exemplo
Digamos que queremos reembalar o openssh-server.
Agora empacote:
Referências
fonte
Como regra geral não.
Com um pouco de sorte
rpm -qi
erpm -q --changelog
forneça informações sobre a origem do pacote.Se ele foi construído no sistema em que está sendo executado, você ainda pode ter o arquivo de especificações usado para fazer a rpm real, se não os dois.
Como regra geral, eu não recomendo copiar arquivos / binários, mas a maioria das informações meta está no banco de dados RPM e você possui os arquivos reais.
rpm -q --list <pkg_name>
mostra todos os arquivos que um pacote implementa.rpm -q --scripts <pkg_name>
mostrar todos os scripts que são executados instalando (ou removendo) o pacote pode fornecer pelo menos tanto conhecimento sobre sua finalidade quanto os arquivos implantados.E todas as dependências que precisam ser instaladas podem ser encontradas com
rpm -q --requires <pkg_name>
.fonte