Translation(s): English - Español - Português Brasileiro

(!) ?Discussion


Este tutorial pretende ensinar você a fazer o download, corrigir, construir e instalar um pacote Debian modificado. Você precisa de muito pouco conhecimento prévio, mas você precisa trabalhar com a distribuição Debian e não ter medo da linha de comando.

Primeiro passo: usando deb-src

Para poder construir um pacote debian, você necessitará ter ao menos a linha deb-src em seu arquivo /etc/apt/sources.list . Isso normalmente se obtém copiando uma linha existente deb e mudando para deb-src. Segue um exemplo:

   deb-src http://http.us.debian.org/debian unstable main contrib

(Uma boa idéia seria usar unstable como repositório, porque você estará trabalhando com a última versão do pacote, mas se você pretende modificar um pacote enquanto está na stable ou testing você também poderia usar aquelas distribuições).

Uma vez que você editou o arquivo, você devera fazer apt-get update para trazer a lista dos fontes para o cache do apt.

Escolhendo o pacote

Nós estamos indo fazer o download do fonte de um pacote e faremos uma pequena modificação, para que trabalhe melhor. Você pode escolher qualquer pacote que você goste. Como exemplo o tutorial , Eu estou usando o pacote capplets.

Se você foi surpreendido por uma mensagem de erro Gnome XKB ? A janela mostra quando você registrou Gnome 2.6 ou 2.8 isso indica que você tem um problema dentro do XKB, mesmo se tudo está trabalhando corretamente. Veja Bug #261219 para mais insformações. Bem, se você estiver começando com essa mensagem, a seguir você pode começar livrado dela seguindo este tutorial e matar dois pássaros com uma pedra.

Voce deve instalar o pacote(ou checar se esta instalado ou em uma versão anterior) antes de prosseguir, desde que você necessitará ter as dependências classificadas acima de quando você quiser instalar modificado. Voce pode fazer o seguinte:

  apt-get install capplets

(ou o pacote que você escolher).

Comecando a fonte do pacote

Entao, a próxima coisa para se fazer é apontar aonde você deseja que seja feito o download deste pacote, eu geralmente deixo o download em ~/sources/debian/ mas pode deixar aonde você desejar. Va para o diretório escolhido:

   apt-get source capplets

(ou o nome do pacote que você quer modificar).

Voce observará que aparecera linhas quando estiver em download, e depois que terminar, ele lhe diz o nome do diretório criado. Se você der ls você vera um novo diretorio e três novos arquivos nele. As três linhas são usadas pelo dpkg extrair o diretório. O que interessa a você é o que esta somente dentro do diretório.

No exemplo de capplets é chamado control-center-2.8.1 (ou uma versão diferente, se você estiver fazendo este em uma data futura). Por que isto? Porque os capplets são pacote binário, gerado do pacote da fonte do controle-centro (e dele não é único).

Comecando a configurar dependências

Para construir um pacote, você necessitará de muitas dependências da configuração, geralmente um grupo dos pacotes que terminam no -dev, mas pôde também ser outras coisas como o automake ou GCC, dependendo de quantas ferramentas de desenvolvimento você instalou nessa máquina.

Em todo o caso, pode levar um longo tempo para instalar todas as dependências da configuração, uma boa idéia fazer isto em uma janela separada que você possa deixar lá ao fazer as modificações no pacote.

Para começar a configurar as dependências :

   apt-get build-dep capplets

Ele dirá quanto de MB ele necessita para o download (desculpe se for muito, este é um pacote de GNOME, e tem muitas dependências da configuração), e você terá que dizer-lhe Y.

Editando o código fonte

Quando estiver em build-dep download, se você tem tempo para explorar o código fonte você vera o código do pacote. o cd ira ao diretório do pacote para explora uma parte.

Os pacotes de Debian geralmente tem um diretório do debian. Este é o diretório que o mantedor do pacote adicionou ao código de fonte à configuração o pacote, neste diretório que você encontrará geralmente lotes de arquivos relacionadas à versão de Debian do programa, remendos específicos de Debian, man pages, documentação, e assim por diante.

O estado dos índices é geralmente parte upstream, este diz que, a fonte que você deveria fazer o download do site do programa, se você não tivesse Debian.

Quando você está tentando reparar um erro do pacote, as vezes sera localizado no código upstream , as vezes ele será relacionado como o programa que foi empacotado para Debian. Assim você estará editando arquivos diferentes dependendo de onde está o problema.

No exemplo de capplets o erro está na fonte upstream. Nós não fixaremos diretamente nele, desde que o reparo é ainda (como janeiro de 5 2005) desconhecido, mas nós estaremos impedindo que o aconteça

Voce terá que editar gnome-settings-daemon/gnome-settings-daemon.c e ir à linha 279. Voce tem que comentar para fora das linhas 279 e 280. Em C isto é feito pondo o código comentado entre /* e */. como em:

  /* gnome_settings_keyboard_init (client);
     gnome_settings_multimedia_keys_init (client); */

Salvando aquele arquivo, nós modificamos o código de fonte

Comecando fakeroot

Se as dependências da configuração terminarem de ser baixadas, você está quase pronto para construir seu pacote modificado. Se não, por favor vai tomando café até terminar.

Voce necessitará instalar um pacote extra, aquele não é absolutamente necessário, mas está pronto para tê-lo:

  apt-get install fakeroot

Este programa encontra-se ao comando que você invoca e diz-se que você o está executando como a root, mesmo se você está executando como um usuário normal. Voce poderia ir realmente construir o pacote como a root.Mas porque ser o root se você não precisa dele?

Contruindo o pacote modificado

Uma vez que você tem tudo no lugar, você deve ir e mudar ao diretório principal do pacote(em nosso exemplo control-center-2.8.1) e:

  fakeroot debian/rules binary

Este é um comando, quase como make, que constrói o pacote. Este comando fará exame provavelmente de quando estiver em funcionamento, desde que geralmente primeiramente tem que funcionar ./configure, então ele tem que compilar o código de fonte e então construir o pacote

Voce verá muitos GCC na saída de sua tela. Isto não é muito interessante, a menos que você estiver procurando um erro que seja relacionado à compilação do próprio pacote . Normalmente, eu deixo apenas este ir quando eu tiver que fazer algo mais (pegue alguns bolinhos para seu café, por exemplo).

Quando a configuração é terminada, você verá na saída de sua tela dizendo que determinado pacote (ou os pacotes neste caso) estiveram construídos.

Instalando o pacote modificado

Na origem da mudança do diretório você encontrará um ou mais arquivos que termina em .deb (no exemplo dos capplets, você ira ver três pacotes de .deb). Aqueles são os pacotes que foram construídos. Para instalar estes pacotes você não usará apt , porque não necessita ser baixado, apenas instalado . Entao, como o root : dpkg - i capplets_2.8.1-3_i386.deb ou o que quer que seu pacote binário seja chamado.

Teste-o

Agora o pacote é instalado em seu sistema, você deve agora testá-lo e ver se o bug foi reparado pelas modificações que você fez. Se em qualquer caso piorar a situação, você pode sempre reverter à versão de Debian fazendo:

  apt-get install capplets --reinstall

Se o que você fez melhorou o comportamento do pacote, então você deve mandar um email com seus resultados ao BTS (e para incluir um emendo se você souber, e faça -- este deve ser o assunto de um outro tutorial).

Comecar escrever para um próximo pacote

Voce viu como se modifica o pacote, você pode agora manter erros do fixing em outros pacotes de Debian! Estes são os comandos que importantes você necessitará recordar:

   apt-get source the-package
   apt-get build-dep the-package
   (...)
   fakeroot debian/rules binary
   dpkg -i the-package-blabla.deb

Se você quiser ver o que mais o seu pacote faz, você pode ler algo no AdvancedBuildingTips

Feedback

Eu espero que você aprecíe o tutorial, por favor emita-me seu Feedback falando o que achou, ou modifique-o este wiki se você quiser adicionar alguma informação útil que eu de repente posso ter deixado de fora.