Quer otimizar seus RPMs? Faça um novo.

by LonelySpooky

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. =)

Popularity: 23% [?]

  • Share/Bookmark

Posts relacionados:

  1. Quatro convites para o Novo Orkut. Quem quer?
  2. Delta RPMs fora do Fedora 11
  3. Ano novo, blog novo…
  4. Um novo jeito de VER as buscas na web: Viewzi
  5. O que seus funcionários vão fazer quando a rede cair?

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

{ 8 comments… read them below or add one }

1 LonelySpooky 5 de junho de 2008 às 13:26

Lauro, essa é pra vc. =)

Responder

2 Teseu 5 de junho de 2008 às 15:31

Disse, mas ñ disse.

Responder

3 Lauro César 7 de junho de 2008 às 10:45

Cara, bom dia.

O arquivo firefox.spec que bai­xei qdo fiz “yum­down­lo­a­der updates-source –source ” não pos­sui nenhum patch! Abri-o para comen­tar as linhas con­tendo o pango como vc me falou, mas não haviam pat­chs nele. Com­pa­rei com o seu arquivo spec do Fire­fox 2 e notei que ao con­trá­rio do seu, que pos­sui vários patch (mui­tos com o pango), o que bai­xei com o yun­down­lo­a­der não pos­sui nenhum:
http://cid-aa8b0531af5ff5b1.skydrive.live.com/self.aspx/P%c3%bablica/firefox.spec

O que estou fazendo de errado?rs

Um abraço.

Responder

4 Lauro César 7 de junho de 2008 às 14:19

Não deu certo:

[root@laptop i386]# rpm –Uvh –force firefox-3.0–0.60.beta5.fc9.i386.rpm
Pre­pa­rando… ########################################### [100%]
1:firefox ########################################### [100%]
erro: a des­com­pac­ta­ção do arquivo falhou no arquivo /usr/lib/firefox-3.0b5/firefox;484ac141: cpio: soma MD5 não coincide

Responder

5 Carlos Aquino 23 de junho de 2008 às 14:37

Ten­tei bai­xar o source do xfce4 aqui e não deu em nada :

yum­down­lo­a­der updates-source –source xfce4
Plu­gins car­re­ga­dos: refresh-packagekit
Ena­bling updates-source repo­si­tory
Ena­bling livna-source repo­si­tory
Ena­bling fedora-source repo­si­tory
No Match for argu­ment updates-source
No Match for argu­ment xfce4
Nothing to download

Responder

6 Stock Trader 31 de março de 2010 às 15:26

I seri­ously don’t beli­eve it. I pray Wayne Roo­ney is bet­ter for the world cup!

Responder

7 LonelySpooky 7 de junho de 2008 às 11:02

Só pra ver no que dá, comente a linha 70.

Responder

8 LonelySpooky 23 de junho de 2008 às 15:20

Car­los, fui dar uma olhada no repo­si­tó­rio e real­mente esse pacote não existe lá. Tem alguns outros paco­tes xfce mas nenhum xfce puro. Tente com xfce*.
http://gd.tuwien.ac.at/opsys/linux/fedora/linux/updates/9/SRPMS/?fisel=xX

Responder

Leave a Comment

You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre user="" computer="" escaped="">

Previous post:

Next post: