Gostaria de modificar um pacote do Fedora 15 ( gnome-shell-extensions-alternative-status-menu
). É uma pequena modificação (revertendo esse commit ). Usando yumdownloader
eu sou capaz de baixar um SRPM ( gnome-shell-extensions-3.0.2-1.g63dd27cgit.fc15.src.rpm
).
Depois disso, como faço para descompactar e depois reconstruí-lo?
Respostas:
O que eu faço, como usuário ROOT:
Instale o SRPM como faria com qualquer outro pacote (
rpm --install [source-rpm-filename]
)Examine o
/root/rpmbuild/SPECS
diretório e encontre o arquivo de especificações que corresponde ao seu pacoterpmbuild -bb /root/rpmbuild/SPECS/[found-filename]
Os pacotes binários resultantes são então localizados no
/root/rpmbuild/RPMS/
diretório que está pronto para ser instalado através dorpm --install
comando padrão .NOTA: Isso apenas cria o que está no pacote binário padrão. Estou postando isso respondendo à pergunta específica, não como fazer alterações na fonte e gerar novos pacotes.
Para fazer as modificações, você pode fornecer correções como entrada e alterar o arquivo SPECS .... ou substituir o padrão
*.tar.bz2
localizado/root/rpmbuild/SOURCES
por você mesmo com a alteração e, em seguida, fazer a construção conforme descrito acima.Cuidado, talvez seja necessário alterar o pacote SPECS para fazê-lo funcionar (geralmente removendo o patch e alterando alguns nomes de arquivos programados pelo arquivo SPECS).
EDITAR
Parece que construir rpms como root é uma prática ruim ( fonte ). Funciona bem como um usuário não root.
Instruções passo a passo para adicionar um patch ( daqui ):
rpmbuild/SOURCES
.rpmbuild/SPECS/package.spec
e adicione umPatch0: mypatch.patch
logo após aSource0: ...
linha.%setup ...
linha, adicione uma%patch0 -p1
linhaAgora ele irá construir normalmente, ie. com:
rpmbuild -ba SPECS/package.spec
fonte
sudo dnf install rpmdevtools
é necessário para o comando rpmbuild. E a%patch0 -p1
linha deve ser omitida se o arquivo de especificação usar uma%autosetup
linha em vez de uma%setup
(como%autosetup
o patch se aplica automaticamente).sudo rpm -ivh --force your.rpm
OpenSSL Package Rebuild O CentOS 6.4 é um exemplo detalhado de uma reconstrução de pacote SRPM.
O exemplo acima usa Mock - o Jedi Light Saber dos construtores de pacotes.
O mock foi criado para preencher um chroot de maneira confiável e, em seguida, reconstruir um pacote nesse chroot.
Para mais, consulte http://fedoraproject.org/wiki/Projects/Mock
No exemplo, o mock é usado três vezes - uma vez para "descompactar" o pacote, depois para reconstruir o .src.rpm e, finalmente, para criar o .rpm.
fonte