Prefácio
Ser responsável por uma máquina significa cuidar do hardware, bem como dos componentes de software. Como visto na vida cotidiana como administrador do sistema, é muito melhor instalar o software como um pacote de software em vez de um monte de arquivos de origem. Isso reduz os custos para manter adequadamente o sistema.
Os pacotes disponíveis no seu distribuidor preferido são validados e supervisionados por um mantenedor de pacotes. Ele testou o software e garante que ele se encaixa nos outros pacotes de software disponíveis na distribuição. Além disso, o pacote é assinado com uma chave GPG do mantenedor de pacotes. Isso garante a integridade do pacote e mostra que o pacote é de uma fonte confiável.
O formato do pacote depende da sua distribuição Linux. Os formatos selecionados são os seguintes:
Deb
Pacotes usados em: Debian GNU/Linux, Ubuntu, Armbian, Linux Mint, Knoppix
RPM
Pacotes usados em: redhat, fedora, centos, openSuse
TGZ e TXZ
Pacotes usados em: Slackware
alcatrão.xz
Pacotes usados em: arch linux
Este documento explica como construir um pacote para o Debian GNU/Linux brevemente. Para obter informações detalhadas sobre o formato do pacote Debian e as ferramentas para manter um sistema Linux baseado em Deb ', você pode dar uma olhada no livro de gerenciamento de pacotes do Debian [DPMB] para criar pacotes para o Debian GNU/Linux, esses documentos são essenciais:
O pacote com o qual trabalharemos é chamado 'Helloworld' e tem a versão número 0.1. Para fins de demonstração, ele simplesmente contém um único script python que gera a famosa mensagem “Olá, mundo!”:
#!/usr/bin/pythonRequisitos
Como etapa 1, tenha sua chave GPG disponível. Mais tarde, a chave será necessária para assinar o pacote. Lembre -se de que pacotes não assinados não são confiáveis e não podem fazer parte do universo Debian.
Caso você não tenha uma chave GPG, mas crie um. Você pode seguir as três etapas abaixo. O primeiro comando gera uma nova chave, a segunda exporta sua nova chave para um arquivo separado, e a terceira adiciona a chave ao seu chaveiro pessoal.
$ GPG-Gen-KeyDurante a criação, certifique -se de que o nome dado _ seu nome esteja correto. É comum usar uma combinação de primeiro nome e sobrenome. Esse nome terá que ser exatamente o mesmo no pacote e, ao criar o arquivo 'Control' do pacote Debian. Para obter mais informações sobre o GPG, dê uma olhada no GNU Privacy Handbook [GPH].
Para construir um pacote Debian com código -fonte, os seguintes pacotes de software são necessários em seu sistema:
Como 'root' do usuário, você pode instalá -los usando o seguinte comando:
# instalação apt-get Build-essencial AutoConf Automake AutoTools-Dev DH-Make Debhelper Devscripts Fakerot Xutils Lintian PbuilderTemos que preparar um diretório para construir o pacote. Crie um diretório para preparar o ambiente em que construiremos o pacote:
$ mkdir -p ~./build/helloworld/0.1Copie o alcatrão.Arquivo comprimido de GZ no diretório:
$ cp helloworld-0.1.alcatrão.gz ~./build/helloworld/0.1Mude no diretório e extraia o pacote:
$ CD ~./build/helloworld/0.1Agora, o diretório contém o código -fonte em um diretório separado e o arquivo comprimido:
~/build/helloworld/0.1 $ lsDebianização
Neste ponto, adicionaremos os arquivos específicos a um pacote Debian. É por isso que esta etapa é chamada _debianization_ do software. Isso é feito em várias etapas únicas.
Mude para o diretório que mantém todo o código -fonte do pacote. Em nosso exemplo, o pacote contém o arquivo 'Helloworld.Py ', apenas:
~ $ CD Build/Helloworld/0.1/helloworld-0.1Vamos adicionar os arquivos específicos a um pacote Debian. A ferramenta 'dh_make' entra em jogo. O Switch '-e' usa o endereço fornecido como o endereço de email no campo 'mantenedor' do arquivo 'Debian/Control'. Construir o pacote Use seu próprio endereço de e -mail, em vez disso. Lembre -se de usar o mesmo endereço de e -mail que corresponde à sua chave GPG.
O Switch '-f' usa o arquivo especificado como o arquivo de origem original e pula a cópia da árvore do programa atual para 'Programa.origem '.
~/build/helloworld/0.1/helloworld-0.1 $ dh_make -e [email protected] -f… /helloworld -0.1.alcatrão.gzNo aviso, você deve selecionar o tipo de pacote que deve ser criado. Para escolher _single binary_ type 's'.
Tipo de pacote: binário único, binário independente, binário múltiplo, biblioteca, módulo de kernel, patch do kernel?Isso resulta em um diretório chamado 'Debian':
~/build/helloworld/0.1/helloworld-0.1 $ lsEste diretório contém todos os arquivos específicos do pacote.
O arquivo 'Debian/Control' mantém as dependências necessárias _ para construir_ o pacote. Usando o comando 'dpkg -depcheck -d ./Configure 'Você recebe uma lista com todos os pacotes necessários. No nosso caso, não há mais pacote mais necessário porque o Python é uma linguagem interpretada.
Em seguida, temos que editar o arquivo 'Debian/Control' e adicionar valores específicos para o pacote. Para o nosso exemplo, parece o seguinte:
Fonte: HelloworldO arquivo 'Debian/Copyright' contém as informações de licença para o pacote de software. Está preparado para a liberação via Licença pública 2 da GNU (GPLV2). Para o nosso exemplo, parece o seguinte:
Formato: http: // www.Debian.org/doc/packaging-manuals/direitos autorais/1.0/Após as informações de direitos autorais, o arquivo 'Debian/Changelog' deve ser ajustado. Em nosso exemplo, adicionamos as informações "lançamento inicial".
Helloworld (0.1-1) instável; urgência = baixoIsso é tudo o que precisamos até agora - agora podemos construir o pacote, finalmente.
Construa o pacote
Para construir o pacote, precisamos subir um diretório e executar o seguinte comando:
~/build/helloworld/0.1/helloworld-0.1 $ DPKG -BUILDPACKAGE -RFAKEROOTA opção '-rfakeroot' permite 'dpkg-buildpackage' executar comandos como um usuário privilegiado com a ajuda do comando 'fakerot'. Isso é necessário para preparar o pacote e criar arquivos e diretórios.
O comando acima resulta em uma lista mais longa de mensagens de saída (mostradas aqui em um ambiente de idioma alemão):
Parabéns - você conseguiu construir um pacote debian - sim! Agora, vamos dar uma olhada mais de perto no pacote. Aqui, 'Lintian' entra em jogo. Esta ferramenta valida o seu pacote para encontrar violações contra as regras estritas que os pacotes do Debian têm que cumprir.
Para executar os testes, digite o seguinte comando:
lintian helloworld_0.1-1_AMD64.DebA ferramenta não encontra violações de regras, mas também erros de ortografia e personagens errados. O interruptor '-Pedantic' pede que 'lintian' seja muito mais crítico do que o habitual. Como você pode ver abaixo 'Lintian' é um pouco mal -humorado e descobriu três avisos, e um erro.
Exceto pelo primeiro aviso, podemos facilmente fazer 'Lintian' feliz e causar o conteúdo do pacote de acordo com o conjunto de regras. O aviso 'Package-ombro-de-pacote-itp-bug' significa que não há relatório de bug no pacote ITP (ITP significa _pretendido para pacote_). Para um pacote debian regular, um relatório de bug deve ser enviado ao Bugtracker para o pacote ITP para notificar outras pessoas que você pretende começar a embalar este software.
O arquivo 'readme.Debian 'destina -se a manter anotações adicionais sobre este pacote. 'dh_make' criou este arquivo para nós:
Helloworld para DebianEm nosso exemplo, não temos informações adicionais, para que possamos excluir o arquivo.
Esse aviso é levantado porque a descrição mais longa do nosso pacote no arquivo 'Debian/Control' começa com mais de um único espaço. Assim que removermos um único espaço, o aviso desaparecerá.
Cada pacote requer uma descrição curta e mais longa em 'Debian/Control'. Este erro é levantado porque ambas as descrições são idênticas. Assim que estendemos a descrição mais longa, o erro se foi.
Links e referências
- [DDR] Andreas Barth, Adam Di Carlo, Raphaël Hertzog, Lucas Nussbaum, Christian Schwarz, Ian Jackson: a referência do desenvolvedor do Debian
- [DNMG] Josip Rodin, Osamu Aoki: O Guia do New Mantener Debian
- [DPMB] Axel Beckert, Frank Hofmann: O Livro de Gerenciamento de Pacote Debian
- [DPM] O Manual de Política Debian
- [DPT] O tutorial de embalagem do Debian
- [GPH] O Manual de Privacidade GNU
- [Lushpaipackage] Alex Lushpai: como criar o pacote Debian a partir da fonte
Reconhecimentos
O autor gostaria de agradecer a Axel Beckert e Gerold Ruprecht por seu apoio e críticos enquanto preparava este artigo.