15.4.1. Aprendendo a Fazer Pacotes
Criar um pacote Debian de qualidade não é sempre uma tarefa simples, e se tornar um mantenedor de pacote requer aprendizado, tanto na teoria quanto na prática em questões técnicas e legais. Não é simplesmente uma questão de construir ou instalar programas; em vez disso, a maior parte da complexidade vem do entendimento de problemas e conflitos, e mais geralmente as interações, com a miríade de outros pacotes disponíveis.
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.
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.
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.
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
controla o sistema de bug pela linha de comando, este programa automaticamente gera os e-mails apropriados.
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.
Todos os comandos mencionados estão documentados em suas respectivas páginas de manual. Eles podem ainda ser configurados por usuário em um arquivo: ~/.devscripts
.
15.4.1.3.2. debhelper e dh-make
Debhelper é um conjunto de scripts que facilitam a criação de pacotes compatíveis com a política; esses scripts são chamados a partir do debian/rules
. Debhelper tem sido amplamente adotado no Debian, como evidenciado pelo fato de que ele é usado pela maioria dos pacotes Debian oficiais. Todos os comandos dele contém um prefixo dh_
. Cada um deles é documentado em uma página de manual. Os diferentes níveis de compatibilidade e opções comuns são descritos em 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.
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.
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.
autopkgtest
executa testes em pacotes binários, usando os testes fornecidos no pacote fonte em debian/tests/
. Vários comandos permitem a fácil criação de ambientes de teste em chroot ou virtuais.
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
Os comandos dupload
e dput
permitem o upload de um pacote Debian para um servidor (possivelmente remoto). Isto permite aos desenvolvedores publicarem seu pacote no servidor principal Debian (ftp-master.debian.org
) de modo que ele possa ser integrado ao repositório e distribuído pelos espelhos. Estes comandos pegam um arquivo .changes
como parâmetro, e deduzem os outros arquivos relevantes a partir de seu conteúdo.
15.4.1.3.8. git-buildpackage e dgit
O projeto tem usado vários sistemas de controle de versão ao longo dos anos para armazenar os esforços de empacotamento ou o código-fonte do pacote, ou permitir a manutenção colaborativa do pacote. Em um esforço para unificar os sistemas e esforços, foi finalmente decidido em 2017 mover (quase) todas as fontes de pacotes para
Git (
CULTURA Git) para uma instância do GitLab chamado
salsa.debian.org
.
Para tornar o empacotamento usando Git mais fácil para desenvolvedores Debian, ferramentas foram desenvolvidas. Isso permite não apenas armazenar os arquivos de empacotamento no Git, mas também usar os repositórios Git (e seu histórico) de projetos de software, colocar patches aplicados a fontes de pacotes no histórico do Git, manter versões de software por distribuição, etc.
Um dos pacotes mais famosos é o git-buildpackage. Uma alternativa é dgit. Claro que ainda é possível usar nenhum desses.
Abaixo está um exemplo para um arquivo de configuração ~/.gbp.conf
[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
Construir o pacote é tão fácil quanto executar gbp buildpackage
na árvore do Git. Ele iniciará a construção de um pacote em um chroot do Debian Bullseye usando sbuild
. Quando a construção é bem-sucedida, os arquivos criados são verificados executando o autopkgtest
-testsuite (se definido). Todas as várias opções são explicadas em gbp.conf(5) e /etc/git-buildpackage/gbp.conf
.
Todas as ferramentas mencionadas até agora também foram incluídas no processo de integração contínua (CI) na instância
salsa.debian.org
:
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.
É 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.
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.
Finalmente, o examinador verifica as habilidades técnicas (de empacotamento) do candidato com um questionário detalhado. Respostas ruins não são permitidas, mas o tempo de resposta não é limitado. Toda a documentação está disponível e várias tentativas são permitidas se as primeiras respostas não são satisfatórias. Esta etapa não tem a intenção de discriminar, mas de garantir pelo menos um mínimo de conhecimento comum para novos colaboradores.
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.