Celso R.

Apt-Build – Optimize o seu sistema Debian ou derivado

Posted in GNU/Linux by Celso R. on 31 de Janeiro de 2007

Retirado em grande parte de : http://www.debian-rs.org/sites/www.debian-rs.org/artigos/apt-build-pt-br.html


Desde a chegada das primeiras versões da distribuição Gentoo, algumas pessoas tem dito que “O Debian é bom, mas não é optimizado” (como as distribuições que se está sempre a fazer make o tempo todo). Isto é errado, cada um é livre para recompilar software que usa no Debian, usando o apt. Baixar o source, descompactar, rodar os scripts de configuração (configure) e instalar (make install) é uma tarefa fácil para todos os users de Linux, mas esta forma de instalação não é integrada ao sistema de pacotes do Debian. O Stow era uma maneira de compilar os softwares sem muito esforço, mas o software compilado não era realmente integrado nas dependencias do apt, ou seja, ficava fora da árvore de pacotes. A solução é usar o apt-build para recompilar um software que já foi empacotado (.deb) para o Debian.

Instalação…

Para instalar o apt-build, o custume:

linteam@debian:~# apt-get install apt-build

Com a instalação completa, o script de pós-instalação irá fazer algumas perguntas sobre o diretório de construção dos pacotes, as opções de optimização para o gcc e arquitetura do processador. Estas informações serão gravadas no arquivo /etc/apt/apt-build.conf. Se foi cometido algum erro, é possível editar o arquivo manualmente para ajustá-lo. Exemplo:

linteam@debianpc1:~$ cat /etc/apt/apt-build.conf
build-dir = /media/hda6/apt-build/build
repository-dir = /media/hda6/apt-build/repository
Olevel = -O3
mtune = -mtune=pentium4
options = ” ”
make_options = ” “

Certifique-se de que os parâmetros build-dir e repository-dir apontem para um directório em uma partição com bastante espaço livre. Por fim, adicione a linha no arquivo /etc/apt/sources.list, caso não exista:

deb file:/media/hda6/apt-build/repository apt-build main

Certifiquem-se de que, caso como, eu tenham posto o repositório noutra partição, que essa partição tenha a opção [b]exec[/b] no mount, senão dá erro de permissão ao instalar.

Usando…

Como no apt-get, existem alguns comandos como update, upgrade, install, source, clean-build.

Primeiro o comando update; ele actualiza a lista de pacotes instaláveis, nada mais para explicar. O mesmo para o comando upgrade, o qual não necessita maiores explicações. Um exemplo com o comando install:

linteam@debian:~# apt-build install memstat
—–> Installing build dependencies (for memstat) —–
Reading Package Lists… Done
Building Dependency Tree… Done
0 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
—–> Downloading memstat source (memstat) —–
Reading Package Lists… Done
Building Dependency Tree… Done
Need to get 22.4kB of source archives.
Get:1 ftp://127.0.0.1 1.0.4/main memstat 0.4-1 (dsc) [482B]
Get:2 ftp://127.0.0.1 1.0.4/main memstat 0.4-1 (tar) [21.9kB]
Fetched 22.4kB in 0s (322kB/s)
dpkg-source: extracting memstat in memstat-0.4
—–> Building memstat —–



dpkg-genchanges: binary-only upload – not including any source code
dpkg-buildpackage: binary only upload (no source included)
—–> Moving packages to repository —–
—–> Updating repository —–
Using: -O3 -mcpu=athlon-xp -march=athlon-xp


Reading Package Lists… Done
Building Dependency Tree… Done
Reading Package Lists… Done
Building Dependency Tree… Done
The following NEW packages will be installed:
memstat

Podemos ver que o apt-build realiza vários passos: instalação dos pacotes necessários para a compilação, download do código-fonte, e então a compilação e instalação do pacote requerido. Ao compilar um pacote com o dpkg, o dpkg-buildpackage não instala as dependências como o apt-build faz e a compilação pode tornar-se dificil. Até agora, nós vimos uma recompilação simples, para optimizar o software, mas se você quer modificar o código-fonte, ou outros arquivos no diretório debian/, o apt-build pode ser útil, e trazendo a possibilidade de ver todos os arquivos e diretórios do pacote. É aconselhável a leitura do maintainer guide.

Recompilando tudo…

O último comando “world”, deve lembrar algo para as pessoas que gostam de gentoo. Com este comando é possível compilar todos os pacotes (que tenho a source disponível claro).

Primeiro dar uma olhadela ao /usr/share/doc/apt-build/README.Debian

Depois criar a lista de pacotes a recompilar:

linteam@debian:~#dpkg –get-selections | awk ‘{if ($2 == “install”) print $1}’ > /etc/apt/apt-build.list

Edita-la (!) e retirar pacotes como kernel, gcc, pacotes que instalaram sem ser dos repositórios,[/u] …

linteam@debian: gedit /etc/apt/apt-build.list

Por fim:

linteam@debian:~#apt-build world –reinstall –force-yes

O –reinstall para instalar reinstalar e o –force-yes para passar a autenticação dos pacotes.

Alguns pacotes podem não ter a source para download (como aqueles que instalamos manualmente) e então o apt-build pára (este é o principal defeito do apt-build). Nesse caso teremos que editar o /etc/apt/apt-build.list , apagar esse pacote e todos os anteriores que já foram recompilados e instalados.

Por fim…

“O autor do apt-build cuidadosamente avisa você a não compilar o gcc e outros softwares.”
Não me sinto responsável por danos causados no sistema pelo uso deste guia.

Eu noto a diferença a nível de performance.

7 Respostas

Subscribe to comments with RSS.

  1. awk said, on 7 de Agosto de 2007 at 19:26

    muito bom esse tutorial, valeu

  2. victoruas said, on 29 de Outubro de 2007 at 0:26

    Quando s instala o apt-build este pede para ser indicada a arquitectura do processador, no meu caso ele é um amd64, mas o sistema que eu tenho instalado é o Debian i386 ou seja a versão de 32BITS.
    O que eu pergunto é neste caso qual a arquitecdtura que eu indico para o apt-build, o amd64 ou o Athlon xp ?
    Espero que tenham entendido a minha duvida
    Obrigado

  3. CR_ said, on 29 de Outubro de 2007 at 14:34

    Se estás a usar um SO x86 tens de indicar uma arquitectura desse tipo. Logo amd64 não pode ser. Nesse caso pressuponho que seja o Athlon xp.

  4. victoruas said, on 29 de Outubro de 2007 at 23:20

    Obrigado CR_ pela tua resposta, essa realmente foi a escolha que eu fiz, mas devo estar com algum problema á que os pacotes estão a demorar imenso tempo a compilar, o vim demorou mais de 1 hora e o openoffice demorou tanto que acabei desistindo de o compilar.

  5. celsor said, on 30 de Outubro de 2007 at 0:08

    O vim não sei mas o Open Office é normal. Pode demorar horas e horas. Esquece o Open Office ;)

    BTW: Em cima assinei CR_ porque estava num pc público e não queria fazer log in.

  6. victoruas said, on 30 de Outubro de 2007 at 23:47

    Penso que já descobri o problema, deve no meu source.list, é que eu andei googlando e adicionei uns repositórios que encontrei, experimentei retirá-los e deixar só os repositórios que foram instalados inicialmente com o sistema e agora já consegui compilar alguns pacotes, vamos se realmente é esse o problema.

  7. victoruas said, on 31 de Outubro de 2007 at 0:24

    Eu comecei a usar Debian há pouco e ainda não entendi bem a mecânica dos repositórios, eu coloquei lá repositórios “deb http” e “deb-src”, e penso que estão em conflito, posso estar a dizer asneira mas acho que o problema está aí.


Os comentários estão fechados.

%d bloggers like this: