Como descompactar, modificar, reconstruir e instalar um SRPM

8

Eu gostaria de modificar um pacote do Fedora 15 ( gnome-shell-extensions-alternative-status-menu ). É uma pequena modificação (revertendo este commit ). Usando yumdownloader , posso baixar um SRPM ( gnome-shell-extensions-3.0.2-1.g63dd27cgit.fc15.src.rpm ).

Depois disso, como descompactar e reconstruí-lo?

    
por Vitor Py 18.07.2011 / 21:00

2 respostas

6

O que eu faço, como usuário ROOT:

  1. Instale o SRPM como faria com qualquer outro pacote ( rpm --install [source-rpm-filename] )

  2. Examine o diretório /root/rpmbuild/SPECS e encontre o arquivo de especificações que corresponde ao seu pacote

  3. rpmbuild -bb /root/rpmbuild/SPECS/[found-filename]

Os pacotes binários resultantes são então localizados no diretório /root/rpmbuild/RPMS/ , que estão prontos para serem instalados através do comando padrão rpm --install .

NOTA: Isto apenas constrói o que está no pacote binário padrão. Eu estou postando isso respondendo a questão específica, não como fazer alterações na fonte e gerar novos pacotes.

Para fazer as modificações, você poderia fornecer as correções como entrada e alterar o arquivo SPECS .... ou substituir o padrão *.tar.bz2 localizado em /root/rpmbuild/SOURCES com o seu próprio com a alteração e, em seguida, fazer a compilação como descrito acima.

Tenha em atenção que poderá ter de alterar o pacote SPECS para que funcione (normalmente retirando o patch e alterando alguns nomes de ficheiro que são programados pelo ficheiro SPECS).

EDITAR

Parece que a criação de rpms como root é uma prática ruim ( source ). Funciona bem como um usuário não-root.

Instruções passo a passo para adicionar um patch (de aqui ):

  1. Copie seu patch para rpmbuild/SOURCES .
  2. Edite o rpmbuild/SPECS/package.spec e adicione um Patch0: mypatch.patch logo após a linha Source0: ... .
  3. Após a linha %setup ... , adicione uma linha %patch0 -p1

Agora, ele será construído normalmente, isto é. com: rpmbuild -ba SPECS/package.spec

    
por 18.07.2011 / 21:19
4

Reconstrução do pacote OpenSSL CentOS 6.4 é um exemplo detalhado de um Reconstrução do 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, depois reconstruir um pacote naquele chroot.

Para mais, veja link

No exemplo, o mock é usado 3 vezes - uma vez para "desempacotar" o pacote, depois para reconstruir o .src.rpm e, finalmente, para criar o .rpm.

    
por 04.07.2013 / 20:46

Tags