Product SiteDocumentation Site

15.4. Tornando-se um Mantenedor de Pacotes

15.4.1. Aprendendo a Fazer Pacotes

Creating a quality Debian package is not always a simple task, and becoming a package maintainer takes some learning, both with theory and practice in technical and legal matters. It is not a simple matter of building and installing software; rather, the bulk of the complexity comes from understanding the problems and conflicts, and more generally the interactions, with the myriad of other packages available.

15.4.1.1. Regras

Um pacote Debian deve respeitar as regras precisas elaboradas na política Debian, e cada mantenedor do pacote deve conhecê-las. Não há nenhuma exigência de conhecê-las de cor, mas sim de saber que elas existem e para consultá-las sempre que uma escolha apresente uma alternativa não-trivial. Todo mantenedor Debian comete erros por não conhecer uma regra, mas isso não é um grande problema, contanto que o erro seja corrigido quando um usuário o relate com um relatório de bug (o que tende a acontecer muito em breve graças a usuários avançados). O campo Standards-Version no nome debian/control/ especifica a versão da política do Debian com a qual o pacote está em conformidade. Os mantenedores devem obedecer à última versão da política Debian.

15.4.1.2. Procedimentos

O Debian não é uma simples coleção de pacotes individuais. O trabalho de empacotamento de cada um é parte de um projeto coletivo; ser um desenvolvedor Debian envolve saber como o projeto Debian funciona como um todo. Todo desenvolvedor irá, mais cedo ou mais tarde, interagir com os outros. O livro Referência do Desenvolvedor Debian (o pacote developers-reference) resume o que todo desenvolvedor deve saber, a fim de interagir da melhor forma possível com as diversas equipes dentro do projeto, e para levar a melhores vantagens possíveis dos recursos disponíveis. Este documento também enumera uma série de deveres que se espera que um desenvolvedor cumpra.

15.4.1.3. Ferramentas

Muitas ferramentas ajudam os mantenedores de pacotes em seu trabalho. Esta seção as descreve rapidamente, mas não dá todos os detalhes, já que cada uma delas contém documentação detalhada.
15.4.1.3.1. devscripts
O pacote devscripts contém diversos programas que ajudam com uma vasta gama do trabalho dos desenvolvedores Debian:
  • debuild permite gerar um pacote (com dpkg-buildpackage) e executar lintian para verificar a compatibilidade com a política Debian depois.
  • debclean limpa um pacote fonte após o pacote binário ter sido gerado.
  • dch permite a edição rápida e fácil do arquivo debian/changelog num pacote fonte.
  • uscan verifica se foi liberada uma nova versão de um software pelo autor principal; Isso requer um arquivo debian/watch com uma descrição da localização de tais lançamentos.
  • debi permite a instalação (com dpkg -i) do pacote Debian que acabou de ser gerado sem a necessidade de digitar seu nome e caminho completos.
  • De uma maneira similar, debc permite varrer o conteúdo de um pacote recentemente criado (com dpkg -c), sem a necessidade de digitar o nome e caminho completos.
  • bts controls the bug tracking system from the command line; this program automatically generates the appropriate emails.
  • debrelease envia um pacote recém gerado a um servidor remoto, sem a necessidade de digitar o nome e caminho completos do arquivo .changes relacionado.
  • debsign assina os arquivos *.dsc e *.changes.
  • uupdate automatiza a criação de uma nova revisão de um pacote quando uma nova versão upstream é lançada.
All of the mentioned commands are documented in their respective manual pages. They can further be configured per user in one file: ~/.devscripts.
15.4.1.3.2. debhelper e dh-make
Debhelper is a set of scripts easing the creation of policy-compliant packages; these scripts are invoked from debian/rules. Debhelper has been widely adopted within Debian, as evidenced by the fact that it is used by the majority of official Debian packages. All the commands it contains have a dh_ prefix. Each of them is documented in a manual page. The different compatibility levels and common options are described in debhelper(7).
O script dh_make (no pacote dh-make) cria arquivos necessários para a geração de um pacote Debian em um diretório inicialmente contendo os fontes do programa. Como você pode ter adivinhado pelo nome do programa, o arquivo gerado usa por padrão o debhelper.
15.4.1.3.3. lintian
Esta ferramenta é uma das mais importantes: é o verificador de pacotes Debian. É baseada em uma vasta matriz de testes criada pela política do Debian, e detecta rápido e automaticamente muitos erros que podem ser então consertados antes de os pacotes serem lançados.
Esta ferramenta é apenas um ajudante, e algumas vezes falha (por exemplo, já que a política do Debian muda com o tempo, lintian fica algumas vezes desatualizado). Também não é exaustiva: não receber nenhum erro no Lintian não deve ser interpretado como prova de que o pacote é perfeito; no máximo, ele evita os erros mais comuns.
15.4.1.3.4. piuparts
Esta é outra ferramenta importante: ele automatiza a instalação, atualização, remoção e limpeza de um pacote (em um ambiente isolado), verifica se nenhuma dessas operações leva a um erro. Ela pode ajudar na detecção de dependências que estão faltando, e também detecta quando os arquivos são deixados incorretamente depois que o pacote foi expurgado.
15.4.1.3.5. autopkgtest
autopkgtest runs tests on binary packages, using the tests supplied in the source package in debian/tests/. Several commands allow the easy creation of chrooted or virtual test environments.
15.4.1.3.6. reprotest
reprotest constrói o mesmo código fonte duas vezes em ambientes diferentes, e verifica se os binários produzidos em cada ambiente em busca de diferenças. Se qualquer diferente é encontrada, o diffoscope (ou o diff) é usado para mostrá-las em detalhes para análise posterior.
15.4.1.3.7. dupload e dput
The dupload and dput commands allow uploading a Debian package to a (possibly remote) server. This allows developers to publish their package on the main Debian server (ftp-master.debian.org) so that it can be integrated to the archive and distributed by mirrors. These commands take a .changes file as a parameter, and deduce the other relevant files from its contents.
15.4.1.3.8. git-buildpackage and dgit
The project has been using various version control systems over the years to store packaging efforts or package source code, or allow collaborative package maintenance. In an effort to unify the systems and efforts, it was ultimately decided in 2017 to move (almost) all package sources into Git (CULTURA Git) onto a Gitlab instance called salsa.debian.org.
To make packaging using Git easier for Debian developers, tools have been developed. These allow not only to store the packaging files in Git, but also to use the Git repositories (and their history) of software projects, put patches applied to package sources into Git history, maintain software versions per distribution, etc.
One of the most famous packages is git-buildpackage. An alternative is dgit. Of course it is still possible to use neither of those.
Below is an example for a ~/.gbp.conf configuration file
[DEFAULT]
builder = sbuild -d bullseye --build-dep-resolver=aptitude -s --source-only-changes --build-failed-commands "%SBUILD_SHELL"
pristine-tar = true

[buildpackage]
sign-tags = true
keyid = XXXX
postbuild  = autopkgtest --user debci --apt-upgrade -s "$GBP_CHANGES_FILE" -- lxc --sudo autopkgtest-bullseye-amd64 
export-dir = /tmp/build-area/
notify = off

[import-orig]
filter-pristine-tar = true
sign-tags = true

[pq]
drop = true
Building the package is then as easy as running gbp buildpackage in the Git tree. It will start a package build in a Debian Bullseye chroot using sbuild. When the build succeeds, the created files are checked running the autopkgtest-testsuite (if defined). All the various options are explained in gbp.conf(5) and /etc/git-buildpackage/gbp.conf.
All the tools mentioned so far have been included in the continuous integration (CI) process in the salsa.debian.org instance as well:

15.4.2. Processo de Aceitação

Tornar-se um desenvolvedor Debian não é somente uma questão administrativa. O processo compreende vários passos, e é tanto uma iniciação quando um processo seletivo. Em todo caso, é formalizado e bem documentado, então qualquer um pode verificar o progresso no site web dedicado para o processo de novos membros.

15.4.2.1. Pré-requisitos

É esperado de todos os candidatos ter ao menos conhecimento da lingua inglesa. Isto é requerido em todos os níveis: para a comunicação inicial com o examinador, é claro, mas também depois, já que o inglês é a lingua preferida na maioria dos documentos; também, os usuários dos pacotes se comunicarão em inglês quando reportarem erros, e os mesmos esperam uma reposta em inglês.
Outro pré-requisito lida com motivação. Tornar-se um desenvolvedor Debian é um processo que somente faz sentido se o candidato sabe que seu interesse no Debian durará mais do que muitos meses. O processo de aceitação em si deve durar diversos meses, e o Debian precisa de desenvolvedores para um longo trajeto; cada pacote precisa de manutenção permanente, e não somente uma versão inicial.

15.4.2.2. Registrando

O primeiro passo (real) consiste em encontrar um patrocinador ou defensor; isso significa um desenvolvedor oficial disposto a afirmar que ele acredita que aceitar X seria uma coisa boa para o Debian. Isso geralmente significa que o candidato já foi ativo dentro da comunidade, e que o seu trabalho foi apreciado. Se o candidato é tímido e seu trabalho não é apresentado publicamente, ele pode tentar convencer um desenvolvedor Debian para defendê-lo, mostrando o seu trabalho em privado.
Ao mesmo tempo, o candidato deve gerar um par de chaves RSA pública/privada com o GnuPG, que deve ser assinado por pelo menos dois desenvolvedores oficiais Debian. A assinatura autentica o nome da chave. Efetivamente, durante uma festa de assinatura de chaves, cada participante deve mostrar uma identificação oficial (normalmente um cartão de identificação ou passaporte), juntamente com os seus identificadores de chave. Esta etapa confirma a ligação entre o humano e as chaves. Esta assinatura, portanto, requer um encontro na vida real. Se você ainda não encontrou quaisquer desenvolvedores Debian em uma conferência pública de software livre, você pode procurar explicitamente desenvolvedores que vivem nas proximidades usando a lista na seguinte página web como um ponto de partida.
Uma vez que o registro no nm.debian.org foi validado pelo defensor, um Gerenciador de Aplicações é atribuído ao candidato. O gerenciador de aplicativos, então, conduz o processo através de várias etapas e verificações pré-definidas.
A primeira verificação é uma verificação de identidade. Se você já tiver uma chave assinada por dois desenvolvedores Debian, este passo é fácil; caso contrário, o Gerenciador de aplicativos irá tentar e guiá-lo em sua busca por desenvolvedores Debian por perto para organizar um encontro e uma assinatura de chaves.

15.4.2.3. Aceitando os Princípios

Estas formalidades administrativas são seguidas por considerações filosóficas. O ponto é ter certeza de que o candidato compreende e aceita o contrato social e os princípios por trás do Software Livre. Se juntar ao Debian só é possível se a pessoa compartilha os valores que unem os desenvolvedores atuais, como expresso nos textos fundamentais (e resumido na Capítulo 1, O Projeto Debian).
Além disso, de cada candidato que pretende aderir às fileiras Debian é esperado saber o funcionamento do projeto e como interagir de forma adequada para resolver os problemas que elas irão sem dúvida encontrar com o passar do tempo. Toda esta informação geralmente está documentada nos manuais feitos para o novo mantenedor e na Referência do Desenvolvedor Debian. Uma leitura atenta deste documento deve ser suficiente para responder às perguntas do examinador. Se as respostas não forem satisfatórias, o candidato será informado. Em seguida, ele terá que ler (novamente) a documentação pertinente antes de tentar novamente. Nos casos onde a documentação existente não contém a resposta adequada para a questão, o candidato geralmente pode chegar a uma resposta com alguma experiência prática dentro do Debian, ou potencialmente, discutindo com outros desenvolvedores Debian. Esse mecanismo garante que candidatos se envolvam um pouco no Debian antes de se tornarem parte integral dele. É uma postura deliberada, por que candidatos que eventualmente se unem ao projeto integram-se como uma peça de um quebra-cabeça infinitamente extensível.
Esta etapa é geralmente conhecida como Filosofia & Procedimentos (P&P, abreviando) no jargão dos desenvolvedores envolvidos no processo de novos membros.

15.4.2.4. Verificando Habilidades

Cada aplicação para se tornar um desenvolvedor oficial Debian deve ser justificada. Se tornar um membro do projeto requer demonstrar que esse status é legítimo, e que facilita o trabalho do candidato no sentido de ajudar o Debian. A justificativa mais comum é que a concessão de status de desenvolvedor Debian facilita a manutenção de um pacote Debian, mas não é o única. Alguns desenvolvedores participam do projeto para contribuir para portar para uma arquitetura específica, outros querem melhorar a documentação, e assim por diante.
Esta etapa representa a oportunidade para o candidato afirmar o que ele pretende fazer dentro do projeto Debian e para mostrar o que ele já fez para esse fim. Debian é um projeto pragmático e dizer alguma coisa não é suficiente, se as ações não correspondem ao que é anunciado. Geralmente, quando o papel pretendido dentro do projeto está relacionado a manutenção depacotes, uma primeira versão do pacote prospectado terá que ser validada tecnicamente e enviada para os servidores Debian por um patrocinador entre os desenvolvedores Debian existentes.
Finally, the examiner checks the candidate's technical (packaging) skills with a detailed questionnaire. Bad answers are not permitted, but the answer time is not limited. All the documentation is available and several attempts are allowed if the first answers are not satisfactory. This step does not intend to discriminate, but to ensure at least a modicum of knowledge common to new contributors.
Este passo é conhecido como Tasks & Skills - Tarefas & Habilidades passo (T&S abreviando) no jargão dos examinadores.

15.4.2.5. Aprovação Final

No último passo, todo o processo é revisado por um DAM (Debian Account Manager - Gerente de Contas Debian). O DAM irá rever todas as informações sobre o candidato que o examinador coletou, e tomar decisão sobre se deve ou não criar uma conta nos servidores Debian. Nos casos em que informação adicional é necessária, a criação da conta pode ser adiada. As recusas são bastante raras, se o examinador faz um bom trabalho ao acompanhar o processo, mas às vezes acontecem. Elas nunca são permanentes, e o candidato é livre para tentar novamente em um momento posterior.
A decisão do DAM é autoritária e (quase sempre) sem apelação, o que explica porque pessoas nessa posição foram frequentemente criticadas no passado.