Quem customiza pacotes deb já existentes ou cria novos, já se deparou com a seguinte situação: Baixar diversos outros pacotes para satisfazer as dependências de construção (Build-Depends e Build-Depends-Indep) do que você acaba de criar ou customizar, ou então preparar o sistema para que isto seja feito de forma transparente. Tudo instalado e removido sem 'contaminar' seu ambiente de desenvolvimento e te confundir no futuro. Acredite, já foi bem chato fazer esse tipo de coisa sem usar ferramentas idênticas as que rodam nos autobuilders do projeto Debian.
Nesse post divido com vocês minha experiência no uso do cowdancer, que nada mais é do que o bom, velho e lento pbuilder, só que agora mais rápido.
Instale os seguintes pacotes (é provável que alguns você já tenha instalado):
cowdancer pbuilder cdebootstrap fakeroot
Edite o arquivo /etc/pbuilderrc e altere a variável MIRRORSITE. O padrão é ftp.jp.debian.org, é provável que você queira ftp.br.debian.org ou linorg.usp.br que funcionarão melhor se sua máquina de "build" está fisicamente no Brasil. Na dúvida ftp.us.debian.org é uma boa escolha.
Para compilar pacotes para Debian sid (unstable), você precisará criar um "chroot" antes. O cowbuilder cuida disso para você, execute:
cowbuilder --create --distribution sid --basepath /var/cache/pbuilder/base-sid.cow
Notas:
Se você omitir '--basepath' o cowbuilder irá salvar tudo em /var/cache/pbuilder/base.cow , o que não é bom se você quiser manter múltiplos "chroots" (ex.: sid, etch, ...).
No fim das contas, não importa se você está usando Debian Etch, Testing ou Sid, você terá em /var/cache/pbuilder/base-sid.cow um "chroot" sid pronto para compilar pacotes, mas você não quer mantê-lo limpo, atualizado e tudo mais passando por tediosas sessões de 'backups', update, upgrade e afins, certo?
Teste que é possível compilar um pacote, se você tiver linhas "deb-src" adequadas no seu /etc/apt/sources.list o comando abaixo irá baixar o "source" deb do pacote hello:
apt-get source hello
dpkg-source -x hello*dsc
Entre no diretório que foi criado, algo como hello-X.Y e de dentro dele compile o pacote a partir do source deb e utilizando seu "chroot" sid com o comando:
pdebuild --pbuilder 'cowbuilder --build --basepath /var/cache/pbuilder/base-sid.cow'
Se tudo correr bem, ao final você terá tanto o pacote source deb como o binário em /var/cache/pbuilder/result
Para manter o chroot sid sempre atualizado, antes de cada "pdebuild ..." eu executo o seguinte comando:
cowbuilder --update --basepath /var/cache/pbuilder/base-sid.cow
Se você seguiu os comandos até aqui deve estar se perguntando o que tem dentro do /var/cache/pbuilder/base-sid.cow agora. Eu garanto que ele contém somente o que foi incluído por lá quando você executou "cowbuilder --create ..." mais o que entrou no "cowbuilder --update. ..". Tudo o que foi feito durante o "pdebuild ..." *não* está lá para atrapalhar futuros "builds".
Para quem quiser conferir, você pode logar no "chroot" sid de forma a não manter o que você alterar lá dentro salvo. Use o comando:
cowbuilder --login --basepath /var/cache/pbuilder/base-sid.cow
Tudo o que você alterar não será salvo, pois, a grosso modo, está ocorrendo o processo de "copy-on-write". Quando você escreve algo dentro do chroot, na verdade, o arquivo alvo está sendo copiado para outro lugar em caráter temporário, de forma que os comandos "--login" e "--build" do cowbuilder não modificam o base-sid.cow. Ao contrário do "--create" e "--update", que por motivos óbvios modificam o base-sid.cow. :)
Enfim, esse pequeno tutorial não se aplica somente ao pacote hello! Tente com pacotes maiores, estude-os, e mande seus "patches" para o Debian Bug Tracking System. Talvez eu fale mais a respeito em breve. Para os que se intimidam com a nossa interface web atual e a necessidade de compreender diversos comandos, tags, e etc eu recomendo o uso do reportbug-ng, que pode ser instalado em qualquer Debian sid, pois, o mesmo já se encontra no repositório sid (unstable). Lembre-se que de qualquer maneira é indispensável o conhecimento da língua inglesa.
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário