Skip to main content

Guia de empacotamento do Ubuntu - Embalagem com Debhelper

Compactando e descompactando arquivos com zip no Linux (Pode 2025)

Compactando e descompactando arquivos com zip no Linux (Pode 2025)
Anonim

Embalagem com Debhelper

Importante

Requisitos: Os requisitos da seção "Embalagem do zero" mais debhelper e dh-make

Como empacotador, você raramente criará pacotes do zero, como fizemos na seção anterior. Como você pode imaginar, muitas das tarefas e informações no regras arquivo, por exemplo, são comuns aos pacotes. Para tornar a embalagem mais fácil e eficiente, você pode usar desmembrador para ajudar nessas tarefas. Debhelper é um conjunto de scripts Perl (prefixado com dh_) que automatizam o processo de construção de pacotes. Com esses scripts, construir um pacote Debian se torna bastante simples.

Neste exemplo, vamos construir novamente o pacote GNU Hello, mas desta vez vamos comparar nosso trabalho com o Ubuntu ola-debhelper pacote. Novamente, crie um diretório onde você estará trabalhando:

mkdir ~ / hello-debhelper cd ~ / hello-debhelper wget http://ftp.gnu.org/gnu/hello/hello-2.1.1.tar.gz mkdir do ubuntu cd do ubuntu

Então, pegue o pacote fonte do Ubuntu:

fonte de apt-get hello-debhelper cd ..

Como no exemplo anterior, a primeira coisa que precisamos fazer é descompactar o tarball original (upstream).

tar -xzvf hello-2.1.1.tar.gz

Em vez de copiar o tarball upstream para ola_2.1.1.orig.tar.gz como fizemos no exemplo anterior, vamos deixar dh_make faça o trabalho por nós. A única coisa que você precisa fazer é renomear a pasta de origem para que ela esteja na forma de - em que packagename é minúscula. Nesse caso, apenas descompactar o tarball produz um diretório de origem nomeado corretamente para que possamos nos mover para ele:

cd hello-2.1.1

Para criar a "debianização" inicial da fonte, usaremos dh_make.

dh_make -e your.maintainer@address -f ../hello-2.1.1.tar.gz

O dh_make então fará uma série de perguntas:

Tipo de pacote: binário simples, binário múltiplo, biblioteca, módulo do kernel ou cdbs? s / m / l / k / b s Nome do mantenedor: Captain Packager Endereço de e-mail: [email protected] Data: quinta, 6 abr 2006 10:07:19 -0700 Nome do pacote: hello Versão: 2.1.1 Licença: blank Tipo de pacote: Single Hit confirmar: Entrar

Cuidado

Só corre dh_make -e uma vez. Se você executá-lo novamente depois de fazê-lo pela primeira vez, ele não funcionará corretamente. Se você quiser alterá-lo ou cometer um erro, remova o diretório de origem e descompacte o tarball upstream novamente. Então você pode migrar para o diretório de origem e tentar novamente.

Corrida dh_make -e faz duas coisas:

  • Cria o ola_2.1.1.orig.tar.gz arquivo no diretório pai,
  • Cria os arquivos básicos necessários em debian / e muitos arquivos de modelo (.ex) que podem ser necessários.

o Olá programa não é muito complicado, e como vimos na seção chamada "Embalagem From Scratch", embalagem não requer muito mais do que os arquivos básicos. Portanto, vamos remover o .ex arquivos:

cd debian rm * .ex * .EX

Para Olávocê também não

* Licença

* Índice do Guia de Empacotamento do Ubuntu

precisar README.Debian (Arquivo README para questões específicas do Debian, não o README do programa), dirs (usado por dh_installdirs para criar diretórios necessários), docs (usado por dh_installdocs para instalar a documentação do programa), ou informação (usado por dh_installinfo para instalar o arquivo info) arquivos no debian diretório. Para obter mais informações sobre esses arquivos, consulte a seção "arquivos de exemplo dh_make".

Neste ponto, você deve ter apenas changelog, compat, ao controle, direito autorale regras arquivos no debian diretório. Na seção chamada "Empacotando a partir do zero", o único arquivo novo é compat, que é um arquivo que contém o desmembrador versão (neste caso 4) que é usada.

Você precisará ajustar o changelogligeiramente, neste caso, para refletir que este pacote é nomeado ola-debhelper em vez de apenas Olá:

ola-debhelper (2.1.1-1) dapper; urgência = baixa * Liberação inicial - Captain Packager Quinta, 6 de abril de 2006 10:07:19 -0700

Usando desmembrador, as únicas coisas que precisamos mudar ao controle são o nome (substituindo Olá para ola-debhelper) e adicionando debhelper (> = 4.0.0) ao Construir Depende campo para o pacote de origem. O pacote do Ubuntu para ola-debhelper parece:

Fonte: hello-debhelper Seção: devel Prioridade: manutenção extra: Capitan Packager Padrões-Versão: 3.6.1 Build-Depends: debhelper (> = 4) Pacote: hello-debhelper Arquitetura: qualquer Depende: $ {shlibs: Depende} Conflitos: hello Fornece: hello Substitui: hello Descrição: A saudação clássica e uma bom exemplo O programa GNU hello produz uma saudação familiar e amigável. Ele permite que os não-programadores usem uma ferramenta clássica de informática que, de outra forma, não estaria disponível para eles. . Sério, porém: este é um exemplo de como fazer um pacote Debian. É a versão Debian do programa 'hello world' do Projeto GNU (que é em si um exemplo para o Projeto GNU). . Este é o mesmo que o pacote hello, exceto que ele usa o debhelper para fazer o deb. Por favor, veja o debhelper sobre o que é.

Nós podemos copiar o direito autoral arquivo e o postinst e prerm scripts do Ubuntu ola-debhelper pacote, como eles não mudaram desde a seção chamada "Packaging From Scratch". Nós também vamos copiar o regras arquivo para que possamos inspecioná-lo.

cp ../../ubuntu/hello-debhelper-2.1.1/debian/copyright. cp ../../ubuntu/hello-debhelper-2.1.1/debian/postinst. cp ../../ubuntu/hello-debhelper-2.1.1/debian/prerm. cp ../../ubuntu/hello-debhelper-2.1.1/debian/rules.

O último arquivo que precisamos analisar é regras, onde o poder de desmembrador scripts podem ser vistos. o desmembrador versão de regras é um pouco menor (54 linhas em oposição a 72 linhas na versão da seção chamada "regras").

o desmembrador versão parece com:

#! / usr / bin / make -f pacote = hello-debhelper CC = gcc CFLAGS = -g -Wall ifeq (, $ (findstring noopt, $ (DEB_BUILD_OPTIONS))) CFLAGS + = -O2 endif #export DH_VERBOSE = 1 limpo : dh_testdir dh_clean rm -f compilação - $ (MAKE) -i distclean install: compilação dh_clean dh_installdirs $ (MAKE) prefixo = $ (CURDIR) / debian / $ (pacote) / usr mandir = $ (CURDIR) / debian / $ (pacote) / usr / share / man infodir = $ (CURDIR) / debian / $ (pacote) / usr / share / info install build: ./configure --prefix = / usr $ (MAKE) CC = "$ (CC) "CFLAGS =" $ (CFLAGS) "

touch build binary-indep: install # Não há arquivos independentes de arquitetura a serem enviados # gerados por este pacote. Se houvesse algum, eles seriam # feitos aqui. binary-arch: instala dh_testdir -a dh_testroot -a dh_installdocs -a NOTÍCIAS dh_installchangelogs -a ChangeLog dh_strip -a dh_compress -a dh_fixperms -a dh_installdeb -a dh_shlibdeps -a dh_gencontrol -a dh_md5sums -a dh_builddeb -a binário: binary-indep binary- arco .PHONY: binary-arch binary-indep checkroot limpo binário

Observe que tarefas como testar se você estiver no diretório correto (dh_testdir), certificando-se de que você está construindo o pacote com privilégios de root (dh_testroot), instalando documentação (dh_installdocs e dh_installchangelogs) e limpeza após a compilação (dh_clean) são tratados automaticamente. Muitos pacotes muito mais complicados do que Olá ter regras arquivos não maiores porque o desmembrador scripts lidam com a maioria das tarefas. Para uma lista completa de desmembrador scripts, consulte a seção "Lista de desmembrador scripts ". Eles também estão bem documentados em seus respectivos homem Páginas. É um exercício útil ler a página do manual (eles estão bem escritos e não longos) para cada script de ajuda usado acima regras Arquivo.