Capítulo 3. Pré-requisitos

# Capítulo 3. Pré-requisitos

Aqui estão os pre-requisitos que você precisa compreender antes de se envolver com Debian.

## 3.1. Pessoas em redor de Debian

Existem vários tipos de pessoas a interagir em redor de Debian com diferentes papeis:

- autor upstream: a pessoa que fez o programa original.
- upstream maintainer: a pessoa que actualmente mantém o programa.
- maintainer: a pessoa que faz o pacote Debian do programa.
- sponsor: uma pessoa que ajuda os maintainers a enviar pacotes para o arquivo de pacotes oficial de Debian (após verificar o seu conteúdo).
- mentor: uma pessoa que ajuda maintainers novatos com empacotamento e etc.
- Debian Developer (DD): um membro do projeto Debian com totais direitos de envio para o arquivo de pacotes Debian oficial.
- Debian Maintainer (DM): uma pessoa com direitos de envio limitados para o arquivo de pacotes Debian oficial.

Por favor note que você não pode tornar-se um Debian Developer (DD) oficial da noite pró dia, pois isso requer mais do que habilidades técnicas. Não fique desencorajado por isto. Se o seu trabalho for útil para outros, você pode à mesma enviar o seu pacote seja como um maintainer através dum sponsor ou como um Debian Maintainer.

Por favor note que você não precisa de criar um pacote novo para se tornar num Debian Developer oficial. Contribuir para os pacotes existentes também pode fornecer um caminho para se tornar num Debian Developer oficial. Existem muitos pacotes à espera de bons maintainers (veja “"`Secção 3.8, “Abordagens de contribuição””`").

## 3.2. Como contribuir

Por favor consulte o seguinte para aprender a como contribuir para Debian:

- “Como você pode ajudar Debian?” (oficial)
- “O Debian GNU/Linux FAQ, Capítulo 13 - Contribuir para o projecto Debian” (semi-oficial)
- “Debian Wiki, HelpDebian” (suplementar)
- “Sítio do Novo Membro Debian” (oficial)
- “Debian Mentors FAQ” (suplementar)

## 3.3. Dinâmicas sociais de Debian

Por favor compreenda as dinâmicas sociais de Debian para se preparar para interagir com Debian:

- Somos todos voluntários.

  - Você não pode impor tarefas aos outros.
  - Você deve ser auto-motivado a fazer as coisas.

- Cooperação amigável é a força motriz.

  - O seu contributo não deve sobre-esforçar os outros.
  - O seu contributo só tem valor quando os outros o apreciam.

- Debian não uma escola onde você obtêm atenção automática dos professores.

  - Você deve ser capaz de aprender muitas coisas independentemente.
  - A atenção de outros voluntários é um recurso escasso.

- Debian está em melhoria constante.

  - Espera-se que você crie pacotes de alta qualidade.
  - Você deve adaptar-se à mudança.

Como nós nos focamos apenas nos aspectos técnicos do empacotamento no resto deste guia, por favor consulte o seguinte para compreender as dinâmicas sociais de Debian:

- “Debian: 17 anos de Software Livre, "do-ocracy", e democracia” (Slides Introdutórios pelos ex-DPL)

## 3.4. Lembretes técnicos

Aqui estão alguns lembretes técnicos para ajudar outros maintainers a trabalhar no seu pacote facilmente e efectivamente, maximizando o resultado de Debian como um todo.

- Faça o seu pacote fácil de depurar.

  - Mantenha o seu pacote simples.
  - Não torne o seu pacote num engenho-excessivo.

- Mantenha o seu pacote bem documentado.

  - Use estilo de código legível.
  - Faça comentários no código.
  - Formate o código de modo consistente.
  - Manter o repositório git [4] do pacote.

| Nota
A depuração do software tende em consumir mais tempo que escrever o software inicial funcional.

Não é inteligente correr o seu sistema base sob a suite unstable mesmo para objectivos de desenvolvimento.

- A criação e verificação de pacotes binário deb deve usar um mínimo de chroot unstable como descrito em “Secção 4.7, “Configuração do sbuild””.
- Atividades de desenvolvimento de pacotes interativas básicas devem usar uma chroot unstable como descrito em “Secção 4.8, “Configuração chroot persistente””.

| Nota
Atividades avançadas de desenvolvimento de pacotes tais como testes de sistemas Desktop completos, daemons de rede, e pacotes de instalador de sistemas, devem usar a suite unstable a correr sob “virtualização”.

## 3.5. Documentação de Debian

Por favor prepare-se para ler a parte pertinente da documentação Debian mais recente para gerar pacotes Debian perfeitos.

- “Manual de Política Debian”

  - As regras “é para seguir” oficiais (https://www.debian.org/doc/devel-manuals#policy)

- “Debian Developer’s Reference”

  - O documento “melhores práticas” oficial (https://www.debian.org/doc/devel-manuals#devref)

- “Guide for Debian Maintainers”— este guia

  - Um documento “referência tutorial” (https://www.debian.org/doc/devel-manuals#debmake-doc)

Todos estes documentos são publicados em https://www.debian.org usando as versões da suite unstable dos pacotes Debian correspondentes. Se você deseja ter acesso local a todos estes documentos a partir do seu sistema base, por favor considere usar técnicas como “apt-pinning” e “chroot”.

Se este guia contradizer a documentação Debian oficial, a documentação Debian oficial está correta. Por favor envie um relatório de bug sobre o pacote debmake-doc usando o comando reportbug.

Aqui estão documentos tutorial alternativos, que pode ler juntamente com este guia:

- “Tutorial de Empacotamento Debian”

  - https://www.debian.org/doc/devel-manuals#packaging-tutorial
  - https://packages.qa.debian.org/p/packaging-tutorial.html

- “Guia de Empacotamento de Ubuntu” (Ubuntu é baseado em Debian.)

  - http://packaging.ubuntu.com/html/

- “Guia de Novos Maintainers Debian” (antecessor deste manual, descontinuado)

  - https://www.debian.org/doc/devel-manuals#maint-guide
  - https://packages.qa.debian.org/m/maint-guide.html

| Dica
Ao ler estes tutoriais, pode considerar usar o comando debmake em vez do comando dh_make.

## 3.6. Recursos de ajuda

Antes de decidir perguntar a sua questão num lugar público, por favor faça a sua parte ao ler a documentação relevante:

- informação do pacote disponível através dos comandos aptitude, apt-cache, e dpkg.
- ficheiro em /usr/share/doc/pacote para todos os pacotes pertinentes.
- conteúdo de man comando para todos os comandos pertinentes.
- conteúdo de info comando para todos os comandos pertinentes.
- o conteúdo de “arquivo de lista de mail debian-mentors@lists.debian.org”.
- o conteúdo de “arquivo de lista de mail debian-devel@lists.debian.org”.

Você pode encontrar a sua desejada informação ao usar uma string de busca bem-formada como "keyword site:lists.debian.org" para limitar o domínio da busca do motor de busca web.

Criar um pequeno pacote de teste é uma boa maneira de aprender detalhes do empacotamento. Inspecionar pacotes bem mantidos existentes é a melhor maneira de aprender como as outras pessoas criam pacotes.

Se ainda tiver questões sobre empacotamento, você pode pergunta-las interactivamente:

- lista de mail debian-mentors@lists.debian.org. (Esta lista de mail é para novatos.)
- lista de mail debian-devel@lists.debian.org. (Esta lista de mail é para experientes.)
- canal IRC tal como #debian-mentors.
- As equipas focam-se num conjunto específico de pacotes. (Lista completa em https://wiki.debian.org/Teams)

- Listas de mail especificas de linguagem.

  - “debian-devel-{french,italian,portuguese,spanish}@lists.debian.org”
  - “debian-chinese-gb@lists.debian.org” (Esta lista de mail é para discussão geral em Chinês (Simplificado).)
  - “debian-devel@debian.or.jp”

Desenvolvedores Debian mais experientes irão ajuda-lo, se perguntar de modo apropriado após fazer os esforços requeridos.

| Cuidado
O desenvolvimento Debian é um alvo em movimento. Alguma informação encontrada na web pode estar desatualizada, incorreta, ou não ser aplicável. Por favor use tal informação com cuidado.

## 3.7. Situação de arquivo

Por favor perceba a situação do arquivo Debian.

- Debian já tem pacotes para a maioria dos tipos de programas.
- O número de pacotes já existentes no arquivo Debian é várias dezenas de vezes maior que os maintainers activos.
- Infelizmente, a alguns pacotes falta-lhes um nível apropriado de atenção por parte do maintainer.

Assim, contributos a pacotes que já existem no arquivo são muito mais apreciados (e mais prováveis de receber patrocínios para o envio) pelos outros maintainers.

| Dica
O comando wnpp-alert do pacote devscripts pode procurar por pacotes instalados que estão para ser adotados ou órfãos.

| Dica
O pacote how-can-i-help pode mostrar oportunidades para contribuir para Debian com base em pacotes instalados localmente.

## 3.8. Abordagens de contribuição

Aqui está o código pseudo-Python para as suas abordagens de contribuição a Debian com um programa:

    if exist_in_debian(program):
      if is_team_maintained(program):
        join_team(program)
      if is_orphaned(program): # maintainer: Debian QA Group
        adopt_it(program)
      elif is_RFA(program): # Request for Adoption
        adopt_it(program)
      else:
        if need_help(program):
          contact_maintainer(program)
          triaging_bugs(program)
          preparing_QA_or_NMU_uploads(program)
        else:
          leave_it(program)
    else: # new packages
      if not is_good_program(program):
        give_up_packaging(program)
      elif not is_distributable(program):
        give_up_packaging(program)
      else: # worth packaging
        if is_ITPed_by_others(program):
          if need_help(program):
            contact_ITPer_for_collaboration(program)
          else:
            leave_it_to_ITPer(program)
        else: # really new
          if is_applicable_team(program):
            join_team(program)
          if is_DFSG(program) and is_DFSG(dependency(program)):
            file_ITP(program, area="main") # This is Debian
          elif is_DFSG(program):
            file_ITP(program, area="contrib") # This is not Debian
          else: # non-DFSG
            file_ITP(program, area="non-free") # This is not Debian
          package_it_and_close_ITP(program)

Aqui:

- Para exist_in_debian(), e is_team_maintained(); veja:

  - o comando aptitude
  - página web “Pacotes Debian”
  - Página “Equipas” do Debian wiki

- Para is_orphaned(), is_RFA(), e is_ITPed_by_others(); veja:

  - O resultado do comando wnpp-alert.
  - “Pacotes Prospectivos e Com-Falta-de-Mão-de-Obra”
  - “Registos de relatórios de Bug Debian: Bugs em pseudo-pacote wnpp em unstable”
  - “Pacotes Debian que precisam de Amor”
  - “Navegar em bugs wnpp baseados em debtags”

- Para is_good_program(), veja:

  - O programa deve ser útil.
  - O programa não deve introduzir preocupações de segurança e manutenção no sistema Debian.
  - O programa precisa estar bem documentado e o seu código precisa ser compreensível (isto é, não ofuscado).
  - O autor do programa concorda com o empacotamento e é amistoso de Debian. [5]

- Para is_it_DFSG(), e is_its_dependency_DFSG(); veja:

  - “Directrizes de Software Livre Debian” (DFSG).

- Para is_it_distributable(), veja:

  - O software tem de ter uma licença e esta deve permitir a sua distribuição.

Você ou precisa de preencher um ITP ou adotar um pacote para começar a trabalhar nele. Veja “Debian Developer’s Reference”:

- “5.1. Novos pacotes”.
- “5.9. Mover, remover, renomear, orfanar, adotar, e reintroduzir pacotes”.

## 3.9. Contribuidor e maintainer novato

O contribuidor e maintainer novato pode se questionar sobre o que aprender para começar o seu contributo a Debian. Aqui estão as minhas sugestões dependendo do seu objectivo.

- Empacotamento

  - Bases de shell POSIX e make.
  - Algum conhecimento rudimentar de Perl e Python.

- Tradução

  - Bases sobre como o sistema de tradução baseada em PO funciona.

- Documentação

  - Bases sobre marcações de texto (XML, ReST, Wiki, …​).

O contribuidor e maintainer novato pode questionar onde começar a sua contribuição para Debian. Aqui estão algumas sugestões que dependem das suas habilidades:

- Habilidades shell POSIX, Perl, e Python:

  - Enviar patches para o Instalador Debian.
  - Enviar patches para os scripts de ajuda em empacotamento Debian como os devscripts, sbuild, schroot, etc. mencionados neste documento.

- Habilidades C e C++:

  - Enviar patches para os pacotes com a prioridade required e important.

- Habilidades Não-Inglês:

  - Enviar patches para o ficheiro PO do Instalador Debian.
  - Enviar patches para ficheiros PO dos pacotes com a prioridade required e important.

- Habilidades de documentação:

  - Actualizar conteúdo da “Debian Wiki”.
  - Enviar patches para a “Documentação Debian” existente.

Esta atividades devem dar-lhe boa exposição às outras pessoas de Debian para estabilizar a sua credibilidade.

O maintainer novato deve evitar empacotar programas com exposição alta de segurança:

- programa setuid ou setgid
- programa daemon
- programa instalado nos directórios /sbin/ ou /usr/sbin/

Quando você ganhar mais experiência em empacotamento, você vai ser capaz de empacotar tais programas.

[4] A grande maioria de maintainers Debian usa git sobre outros sistemas VCS como os hg, bzr, etc.

[5] Isto não é um requerimento absoluto. O autor hostil por tornar-se num grande consumo de recursos para todos nós. O autor amigável pode ser consultado para resolver quaisquer problemas com o programa.

Capítulo 2. Visão geral |  | Capítulo 4. Configurações de Ferramenta