# 5. Trabalhando em um pacote

Uma vez que você tenha a ramificação do pacote fonte em um repositório compartilhado, você deverá criar ramificações adicionais para as correções ou outro trabalho que planeje fazer. Você deverá basear a sua ramificação fora do ramo de origem do pacote para a versão de distribuição para a qual planeja enviar. Normalmente, é a versão de desenvolvimento atual, mas pode ser de versões mais antigas, se você está fazendo um backport de uma SRU, por exemplo.

## 5.1. Ramificação para uma alteração

A primeira coisa a fazer é ter certeza de que seu ramo do pacote fonte está atualizado. Ele estará se você tiver conferido, caso contrário, faça isto:

    $ cd tomboy.dev
    $ bzr pull

Any updates to the package that have uploaded since your checkout will now be pulled in. You do not want to make changes to this branch. Instead, create a branch that will contain just the changes you’re going to make. Let’s say you want to fix bug 12345 for the Tomboy project. When you’re in the shared repository you previously created for Tomboy, you can create your bug fix branch like this:

    $ bzr branch tomboy.dev bug-12345
    $ cd bug-12345

Now you can do all my work in the `bug-12345` directory. You make changes there as necessary, committing as you go along. This is just like doing any kind of software development with Bazaar. You can make intermediate commits as often as you like, and when your changes are finished, you will use the standard `dch` command (from the `devscripts` package):

    $ dch -i

Isso irá deixá-lo em um editor para adicionar uma entrada ao o arquivo debian/changelog.

When you added your `debian/changelog` entry, you should have included a bug fix tag that indicated which Launchpad bug issue you’re fixing. The format of this textual tag is pretty strict: `LP: #12345`. The space between the `:` and the `#` is required and of course you should use the actual bug number that you’re fixing. Your `debian/changelog` entry might look something like:

    tomboy (1.12.0-1ubuntu3) trusty; urgency=low

      * Don't fubar the frobnicator. (LP: #12345)

     -- Bob Dobbs <subgenius@example.com>  Mon, 10 Sep 2013 16:10:01 -0500

Submeter com o normal:

    bzr commit

A hook in bzr-builddeb will use the debian/changelog text as the commit message and set the tag to mark bug #12345 as fixed.

Isto funciona somente com o bzr-builddeb 2.7.5 e o bzr 2.4, para versões mais antigas, use “debcommit”.

## 5.2. Construindo o pacote

Along the way, you’ll want to build your branch so that you can test it to make sure it does actually fix the bug.

A fim de construir o pacote você pode usar o comando `bzr builddeb` do pacote `bzr-builddeb`. Você pode construir um pacote fonte com:

    $ bzr builddeb -S

(`bd` é um nome alternativo para o `builddeb`.) Você pode deixar o pacote não assinado, anexando `-- -uc -us`` para o comando.

Também é possível utilizar as suas ferramentas normais, contanto que elas sejam capazes de remover os diretórios .bzr do pacote, por exemplo:

    $ debuild -i -I

If you ever see an error related to trying to build a native package without a tarball, check to see if there is a `.bzr-builddeb/default.conf` file erroneously specifying the package as native. If the changelog version has a dash in it, then it’s not a native package, so remove the configuration file. Note that while `bzr builddeb` has a `--native` switch, it does not have a `--no-native` switch.

Uma vez que você tenha obtido o pacote fonte, você pode construí-lo normalmente com “pbuilder-dist”` (ou “pbuilder” ou “sbuild”_).