A grande vantagem de usar pacotes tipo RPM ou Deb é justamente não ter que recompilar os programas a partir dos códigos fonte. É claro, vez ou outra um pacote RPM nos dá dor de cabeça e recompilar acaba sendo uma boa opção.
Os problemas começam quando você recompila o programa, instala e deixa o sistema cheio de lixo, pois o Fedora trabalha com RPM e, é claro, não pode gerenciar programas que sejam diferentes do seu sistema de pacotes. Basicamente, isso equivale a dizer qiue quando você instala um programa que não é RPM, o banco de dados do Fedora nem fica sabendo que ele existe e ele não será atualizado pelo YUM, nem gerenciado pelo RPM. Por isso existe o primeiro mandamento das distribuições: "Não instalarás um tipo de pacote diferente ao do seu sistema!" (pois pode dar merda).
O que fazer então? Você pode fazer seu próprio RPM, assim continua respeitando o primeiro mandamento e acaba fazendo o programa otimizado para o SEU PC... seria algo assim: com um RPM pronto você está comprando roupa de liquidação (todo mundo tem uma, o tamanho é sempre M e tem cheiro de naftalina), fazendo seu próprio RPM é como ir num alfaiate (a roupa é sob medida, feita especialmente para você e apenas tem o inconveniente de você ser palmeado por uma bixinha).
Recompilar um RPM vale à pena então, quando:
- Você sabe consertar aquele problema que os desenvolvedores não consertam
- Quando o programa é pesado demais e você precisa desesperadamente torná-lo mais rápido (nem que seja um pouco)
- Quando você ouve vozes e as vozes mandam você fazer isso porque pode ser divertido
- Quando você é um nerd paranóico que quer ter cada bit do seu sistema próximo da perfeição
Vamos então à receita.
Primeiro, vamos criar nosso ambiente de desenvolvimento. para isso basta instalar alguns pacotes:
# yum install rpmdevtools yum-utils rpmdev-setuptree ncurses-devel
Um ponto que muita gente desconhece é que fazer um RPM sendo root é uma brecha de segurança, pois o pacote resultante poderia violar os critérios de permissão. Para isso, criaremos o usuário "mockbuild"
# adduser mockbuild
# passwd mockbuild
O próximo passo é criar as pastas de construção e gerar a macro que permite ao seu usuário mortal gerar RPMs:
$ cd ~
$ mkdir -p rpmbuild/{SRPMS,RPMS,SPECS,BUILD,SOURCES}
$ echo "%_topdir %(echo $HOME)/rpmbuild" > .rpmmacros
Todos os RPMs do Fedora têm seu código fonte (SRPM) disponível e o próprio YUM pode baixá-los:
$ yumdownloader updates-source --source <nome_do_pacote>
A instalação desse SRPM pode ser feita com o usuário comum e ele vai para dentro das pastas de criação de RPMs que acabamos de criar:
$ rpm -ivh <nome_do_pacote>.src.rpm
Dentro da pasta rpmbuild tem as pastas SRPMS, RPMS, SPECS, BUILD, SOURCES e o que devine como nosso RPM vai ser criado é o arquivo .spec, dentro da pasta SPECS. Se apenas quiser recompilar, basta ir na pasta SPECS e executar o comando:
$ rpmbuild -ba <nome_do_arquivo>.spec
Todo o processo é automatizado e gera os novos RPMs. Se você pretende mudar algo, edite o seu arquivo .spec (não vou entrar em detalhes por preguiça).
Basicamente é isso. =)
Posts relacionados:





Lauro, essa é pra vc. =)
Disse, mas ñ disse.
Cara, bom dia.
O arquivo firefox.spec que baixei qdo fiz “yumdownloader updates-source –source ” não possui nenhum patch! Abri-o para comentar as linhas contendo o pango como vc me falou, mas não haviam patchs nele. Comparei com o seu arquivo spec do Firefox 2 e notei que ao contrário do seu, que possui vários patch (muitos com o pango), o que baixei com o yundownloader não possui nenhum:
http://cid-aa8b0531af5ff5b1.skydrive.live.com/self.aspx/P%c3%bablica/firefox.spec
O que estou fazendo de errado?rs
Um abraço.
Não deu certo:
[root@laptop i386]# rpm –Uvh –force firefox-3.0–0.60.beta5.fc9.i386.rpm
Preparando… ########################################### [100%]
1:firefox ########################################### [100%]
erro: a descompactação do arquivo falhou no arquivo /usr/lib/firefox-3.0b5/firefox;484ac141: cpio: soma MD5 não coincide
Tentei baixar o source do xfce4 aqui e não deu em nada :
yumdownloader updates-source –source xfce4
Plugins carregados: refresh-packagekit
Enabling updates-source repository
Enabling livna-source repository
Enabling fedora-source repository
No Match for argument updates-source
No Match for argument xfce4
Nothing to download
Só pra ver no que dá, comente a linha 70.
Carlos, fui dar uma olhada no repositório e realmente esse pacote não existe lá. Tem alguns outros pacotes xfce mas nenhum xfce puro. Tente com xfce*.
http://gd.tuwien.ac.at/opsys/linux/fedora/linux/updates/9/SRPMS/?fisel=xX