# 2. Guia de configuração

Há várias coisas que você precisa saber para começar a desenvolver para o Ubuntu. Esta artigo foi desenvolvido para deixar o seu computador preparado para que você possa começar a trabalhar com pacotes e enviá-los para a plataforma que hospeda o Ubuntu, o Launchpad. Eis o que vamos cobrir:

- Instalando pacotes de programas relacionados. Isto inclui:

  - Utilitários de empacotamento específicos do Ubuntu

  - Programas de criptografia para que seu trabalho possa ser verificado se foi feito por você

  - Programas adicionais de criptografia para que você possa transferir seus arquivos com segurança

- Criando e configurando sua conta no Launchpad

- Configurando o seu ambiente de desenvolvimento para ajudá-lo a fazer compilações de pacotes locais, interagir com outros desenvolvedores, e propor as alterações no Launchpad.

Nota

É recomendado fazer o trabalho de empacotamento utilizando a versão do Ubuntu que atualmente estiver em desenvolvimento. Isto irá permitir que você teste as alterações no mesmo ambiente em que elas serão aplicadas e utilizadas.

Don’t worry though, you can use Testdrive or chroots to safely use the development release.

## 2.1. Instalar os programas de empacotamento básico

Há várias ferramentas que irão fazer a sua vida como desenvolvedor do Ubuntu muito mais fácil. Você irá encontrar essas ferramentas mais adiante neste guia. Para instalar a maioria dessas ferramentas você precisará executar este comando:

    $ sudo apt-get install gnupg pbuilder ubuntu-dev-tools bzr-builddeb apt-file

Nota: Desde o Ubuntu 11.10 “Oneiric Ocelot” (ou se você tiver backports habilitados em uma versão atualmente suportada), o seguinte comando irá instalar as ferramentas acima e outras que são bem comuns no desenvolvimento do Ubuntu:

    $ sudo apt-get install packaging-dev

Este comando instalará os seguintes programas:

- `gnupg` – GNU Privacy Guard contém as ferramentas que você irá precisar para criar a chave criptográfica com a qual irá assinar seus arquivos que deseja enviar ao Launchpad.

- `pbuilder` – uma ferramenta para fazer a reprodução da construção dos pacotes em um ambiente limpo e isolado.

- “ubuntu-dev-tools” (e “devscripts”, uma dependência direta) – uma coleção de ferramentas para tornar mais fácil muitas tarefas de empacotamento.

- `bzr-builddeb` (and `bzr`, a dependency) – distributed version control with Bazaar, a new way of working with packages for Ubuntu that will make it easy for many developers to collaborate and work on the same code while keeping it trivial to merge each other’s work.

- `apt-file` fornece um caminho fácil para pesquisar um pacote binário que contém o determinado arquivo.

### 2.1.1. Criar sua chave GPG

GPG stands for GNU Privacy Guard and it implements the OpenPGP standard which allows you to sign and encrypt messages and files. This is useful for a number of purposes. In our case it is important that you can sign files with your key so they can be identified as something that you worked on. If you upload a source package to Launchpad, it will only accept the package if it can absolutely determine who uploaded the package.

Para gerar uma nova chave GPG, execute:

    $ gpg --gen-key

GPG will first ask you which kind of key you want to generate. Choosing the default (RSA and DSA) is fine. Next it will ask you about the keysize. The default (currently 2048) is fine, but 4096 is more secure. Afterwards, it will ask you if you want it to expire the key at some stage. It is safe to say “0”, which means the key will never expire. The last questions will be about your name and email address. Just pick the ones you are going to use for Ubuntu development here, you can add additional email addresses later on. Adding a comment is not necessary. Then you will have to set a passphrase, choose a safe one (a passphrase is just a password which is allowed to include spaces).

Agora o GPG irá criar uma chave para você, o que pode levar uma pouco de tempo. Ele precisa de bytes aleatórios, então será bom se você fornecer ao sistema algum trabalho para fazer. Mova o cursor pela tela, digite alguns parágrafos de texto aleatório, carregue uma página da Internet.

uma vez feito isso, você receberá uma mensagem semelhante a esta:

    pub   4096R/43CDE61D 2010-12-06
          Key fingerprint = 5C28 0144 FB08 91C0 2CF3  37AC 6F0B F90F 43CD E61D
    uid                  Daniel Holbach <dh@mailempfang.de>
    sub   4096R/51FBE68C 2010-12-06

Neste caso, `43CDE61D` é o ID da chave.

A seguir, você deve enviar a parte pública de sua chave para um servidor de chaves para que o mundo possa identificar mensagens e arquivos como sendo seus. Para fazer isso, digite:

    $ gpg --send-keys --keyserver keyserver.ubuntu.com <KEY ID>

This will send your key to the Ubuntu keyserver, but a network of keyservers will automatically sync the key between themselves. Once this syncing is complete, your signed public key will be ready to verify your contributions around the world.

### 2.1.2. Criar sua chave SSH

SSH stands for Secure Shell, and it is a protocol that allows you to exchange data in a secure way over a network. It is common to use SSH to access and open a shell on another computer, and to use it to securely transfer files. For our purposes, we will mainly be using SSH to securely upload source packages to Launchpad.

Para gerar uma chave SSH, digite:

    $ ssh-keygen -t rsa

O nome de arquivo padrão geralmente faz sentido, então você pode deixar como está. Por motivo de segurança, é altamente recomendado que você utilize uma frase secreta.

### 2.1.3. Configurando o pbuilder

`pbuilder` permite você construir pacotes localmente em sua máquina. Ele serve para vários propósitos:

- A construção será feita em um sistema mínimo e limpo. Isto ajuda a assegurar que suas construções sejam feitas com sucesso de uma maneira reprodutível, sem modificar seu sistema local

- Não há necessidade de instalar todas as dependências de construção localmente

- Você pode configurar múltiplas instâncias de várias versões do Ubuntu e do Debian

Configurar o `pbuilder` é muito fácil, execute:

    $ pbuilder-dist <release> create

where <release> is for example raring, saucy, trusty or in the case of Debian maybe sid. This will take a while as it will download all the necessary packages for a “minimal installation”. These will be cached though.

## 2.2. Prepare-se para trabalhar com o Launchpad

Com uma configuração local básica estabelecida, seu próximo passo será configurar o seu sistema para trabalhar com o Launchpad. Esta seção irá se concentrar nos seguintes tópicos:

> - O que o Launchpad é e criando uma conta nele

> - Enviando suas chaves GPG e SSH para o Launchpad

> - Configurando o Bazaar para trabalhar com o Launchpad

> - Configurando o Bash para trabalhar com o Bazaar

### 2.2.1. Sobre o Launchpad

O Launchpad é uma peça central da infraestrutura que usamos no Ubuntu. Ela não só armazena nossos pacotes e nossos códigos, mas também coisas como traduções, relatórios de erros, e informações sobre as pessoas que trabalham no Ubuntu e os seus grupos de membros. Você também irá usar o Launchpad para publicar propostas de correções, e conseguir outros desenvolvedores para revisão e orientação.

Você irá precisar se registrar no Launchpad e fornecer algumas informações mínimas. Isto irá permitir que você baixe e envie códigos, envie relatórios de erros e mais.

Além de hospedar o Ubuntu, o Launchpad pode hospedar qualquer projeto de Software Livre. Para mais informações, veja a wiki de ajuda do Launchpad.

### 2.2.2. Obter uma conta do Launchpad

Se você já não tiver uma conta no Launchpad, você pode facilmente criar uma. Se você tem uma conta no Launchpad mas não se lembra da sua id, você pode descobrir indo a https://launchpad.net/~ e olhando para a parte depois do “~” no URL.

O processo de registro do Launchpad irá pedir que você escolha um nome de exibição. O uso do nome real é encorajado aqui, de modo que seus colegas desenvolvedores do Ubuntu sejam capazes de lhe conhecer melhor.

Quando você registrar uma nova conta, o Launchpad enviará um email com um link que precisa ser aberto no seu navegador para verificar o seu endereço de email. Se você não recebê-lo, verifique na sua pasta de spam.

A página de ajuda a novas contas no Launchpad possui mais informações sobre o processo e configurações adicionais que você pode alterar.

### 2.2.3. Enviar sua chave GPG para o Launchpad

First, you will need to get your fingerprint and key ID.

Para pesquisar sobre sua impressão digital GPG, execute:

    $ gpg --fingerprint email@address.com

e será exibido alguma coisa como:

    pub   4096R/43CDE61D 2010-12-06
          Key fingerprint = 5C28 0144 FB08 91C0 2CF3  37AC 6F0B F90F 43CD E61D
    uid                  Daniel Holbach <dh@mailempfang.de>
    sub   4096R/51FBE68C 2010-12-06

Then run this command to submit your key to Ubuntu keyserver:

    $ gpg --keyserver keyserver.ubuntu.com --send-keys 43CDE61D

where `43CDE61D` should be replaced by your key ID (which is in the first line of output of the previous command). Now you can import your key to Launchpad.

Vá para https://launchpad.net/~/+editpgpkeys e copie a “Key fingerprint” na caixa de texto. No caso acima seria “5C28 0144 FB08 91C0 2CF3 37AC 6F0B F90F 43CD E61D”. Agora clique em “Import Key”.

O Launchpad irá usar a impressão digital para verificar a sua chave no servidor de chaves do Ubuntu e, se tudo ocorrer bem, enviar para você um e-mail criptografado pedindo para confirmar a importação da chave. Verifique a sua conta de e-mail e leia a mensagem que o Launchpad lhe enviou. “Se o seu cliente de e-mail tiver suporte a criptografia OpenPGP, ele irá pedir a senha que você escolheu para a chave quando o GPG a gerou. Digite a senha, e então clique no link para confirmar que a chave é sua”.

Launchpad encrypts the email, using your public key, so that it can be sure that the key is yours. If you are using Thunderbird, the default Ubuntu email client, you can install the Enigmail plugin to easily decrypt the message. If your email software does not support OpenPGP encryption, copy the encrypted email’s contents, type `gpg` in your terminal, then paste the email contents into your terminal window.

De volta ao site do Launchpad, clique no botão Confirm e o Launchpad irá completar a importação da sua chave OpenPGP.

Encontre mais informações em https://help.launchpad.net/YourAccount/ImportingYourPGPKey

### 2.2.4. Enviar sua chave SSH para o Launchpad

Open https://launchpad.net/~/+editsshkeys in a web browser, also open `~/.ssh/id_rsa.pub` in a text editor. This is the public part of your SSH key, so it is safe to share it with Launchpad. Copy the contents of the file and paste them into the text box on the web page that says “Add an SSH key”. Now click “Import Public Key”.

Para mais informações sobre este processo, visite a página do Launchpad criando um par de chaves SSH

### 2.2.5. Configurar o Bazaar

O Bazaar é a ferramenta que usamos para armazenar as alterações de código de maneira lógica, para trocar alterações propostas e mesclá-las, mesmo se o desenvolvimento já estiver atualmente terminado. Ele é usado pelo novo método de Desenvolvimento Distribuído do Ubuntu de trabalho com pacotes do Ubuntu.

Para dizer ao Bazaar quem você é, simplesmente execute:

    $ bzr whoami "Bob Dobbs <subgenius@example.com>"
    $ bzr launchpad-login subgenius

“whoami” irá dizer ao Bazaar que nome e endereço de e-mail você deve usar para submeter mensagens. Com “launchpad-login”, você define a sua ID no Launchpad. Assim, o código que você publicar no Launchpad será associado a você.

Nota: se você não lembra do seu ID, vá para https://launchpad.net/~ e veja onde ele redireciona você. A parte depois do “~” na URL é seu ID do Launchpad.)

### 2.2.6. Configurar seu shell

De maneira similar ao Bazaar, as ferramentas de empacotamento do Debian/Ubuntu precisam aprender sobre você também. Abra o seu “~/.bashrc” em um editor de texto e adicione algo parecido com isso ao final:

    export DEBFULLNAME="Bob Dobbs"
    export DEBEMAIL="subgenius@example.com"

Agora salve o arquivo e reinicie o seu terminal ou execute:

    $ source ~/.bashrc

(se você não usa o shell padrão, que o é “bash”, favor editar devidamente o arquivo de configuração para o seu shell.)