Questão Como posso modificar um arquivo RPM existente para instalação em um sistema Fedora 11


Eu tenho um RPM que instalamos em nossos sistemas de produção que eu gostaria de modificar para que o instalador do sistema operacional não precise fazer nenhuma alteração no sistema após a instalação. A distro é bem antiga (e infelizmente não podemos atualizá-la para uma mais nova) - Fedora 11.

Existe um método para eu poder descompactar o RPM, alterar o arquivo e depois empacotá-lo?

Outras soluções que tenho visto fazem referência aos utilitários "mock" e "mc" que eu não tenho.


0


origem


O Fedora 11 é 7 anos depois EOL. Atualize para algo atualizado para receber algum suporte. - Jakuje


Respostas:


Se o pacote rpm, que você quer descompactar, for para o Fedora 11 ou mais antigo, o Fedora 11 {rpm, rpm2cpio} pode extrair o arquivo com, por exemplo, unPack_rpm.sh :

#!/bin/bash
# Purpose: Unpack RPM archives (by @unSpawn)
# Args: /path/to/archive
# Deps: Bash, GNU utils, RPM
rpmDetails() { for Q in changelog provides requires scripts triggers triggerscripts; do 
 rpm -q -p --${Q} "${f}" 2>&1 | grep -v NOKEY > "${Q}.log"; done; }
rpmUnpack() { f=$(readlink -f "${f}"); file "${f}"|grep -q "RPM.v" && \
 { d=$(basename "${f}" .rpm); d="./${d:=ERROR_$$}"; mkdir -p "${d}" && \
 { cd "${d}" && rpm2cpio "${f}" | cpio -idmv && rpmDetails "${f}"; }; }; }
for f in $@; do rpmUnpack "${f}"; done
exit 0

Quando você tiver editado os arquivos descompactados, copie o diretório / diretórios superiores para BUILDROOT /. Quando / se rpmbuild -bb name.spec relatórios "não encontrados", crie a pasta com o nome do aplicativo solicitado dentro do BUILDROOT / e copie seus arquivos para lá. E corra rpmbuild -bb name.spec novamente.

Minha configuração recomendada do rpmbuild: http://www.linuxquestions.org/questions/linux-software-2/need-rpm-package-for-php-version-5-2-7-and-up-on-redhat-5-1-a- 766486 / # 13


0



Obrigado, isso é bastante útil. No entanto, eu tenho uma outra pergunta: uma vez descompactado, eu posso modificar o arquivo que eu quero mudar. É apenas um caso de copiar as fontes (em seus diretórios) para o diretório rpmbuild / SOURCES e, em seguida, criar / obter um arquivo de especificação e colocar em rpmbuild / SPECS antes de executar o comando rpmbuild. Ou há outra coisa que preciso fazer? - B. SAUNDERS
Não fonte. Os arquivos podem ser copiados para qualquer nova pasta. Ou para BUILDROOT /. Veja minha resposta editada. - Knud Larsen