Guía de embalaxe de Ubuntu

Documentación

Embalaxe con Debhelper


[Importante]

Requisitos: os requisitos da sección chamada "Empaquetado desde cero" máis debhelper e dh-make

Como empaquetador, raramente creará paquetes desde cero como fixemos na sección anterior. Como podes imaxinar, moitas das tarefas e información no ficheiro de regras , por exemplo, son comúns aos paquetes. Para facer que o envase sexa máis sinxelo e eficiente, pode usar debhelper para axudar con estas tarefas. Debhelper é un conxunto de scripts de Perl (prefixado con dh_ ) que automatizan o proceso de creación de paquetes. Con estes scripts, a construción dun paquete de Debian é moi sinxelo.

Neste exemplo, volvemos a crear o paquete de GNU Hello, pero esta vez compararemos o noso traballo co paquete de Ubuntu hello-debhelper . De novo, cree un directorio onde estará a traballar:

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

Entón, obtén o paquete fonte de Ubuntu:

apt-get source hello-debhelper cd ..

Do mesmo xeito que o exemplo anterior, o primeiro que debemos facer é descomprimir o tarball orixinal (anterior).

tar -xzvf hello-2.1.1.tar.gz

En vez de copiar o tarball cara arriba a hello_2.1.1.orig.tar.gz como fixemos no exemplo anterior, imos deixar que dh_make faga o traballo para nós. O único que tes que facer é cambiar o nome do cartafol de orixe polo que está en forma de - onde o nome do paquete é minúsculo. Neste caso, só ordenando o tarball produce un directorio de orixe co nome correcto para que poidamos pasar a el:

cd hello-2.1.1

Para crear a "debianización" inicial da fonte usaremos dh_make .

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

dh_make entón preguntarache unha serie de preguntas:

Tipo de paquete: binario único, binario múltiple, biblioteca, módulo de kernel ou cdbs? [s / m / l / k / b] s
Nome do mantedor: Enderezo de correo electrónico do emisor de capitán: packager@coolness.com Data: Xov, 06 de abril de 2006 10:07:19 -0700 Nome do paquete: hello Versión: 2.1.1 Licenza: en branco Tipo de paquete: sinxelo Prema para confirmar: entrar


[Precaución]

Executar só dh_make -e unha vez. Se a executas de novo despois de facelo a primeira vez, non funcionará correctamente. Se quere cambialo ou cometeu un erro, elimine o directorio fonte e desprácese o tarball cara a arriba. Entón podes migrar ao directorio fonte e tentalo de novo.

Correr dh_make -e fai dúas cousas:

O programa Hello non é moi complicado e, como vimos na sección "Envases desde cero", a embalaxe non require moito máis que os arquivos básicos. Polo tanto, elimine os ficheiros .ex :

cd debian rm * .ex * .EX

Para ola , tamén non

* Licenza

* Índice de Guía de Empaquetado de Ubuntu

necesita README.Debian (ficheiro README para problemas específicos de Debian, non README do programa), dirs (usado por dh_installdirs para crear os directorios necesarios), docs (usado por dh_installdocs para instalar documentación do programa) ou información (usado por dh_installinfo para instalar a información ficheiro) no directorio debian . Para obter máis información sobre estes ficheiros, consulte a sección chamada "dh_make examples files".

Neste punto, só debería ter control de cambios , compatibilidade , control , dereitos de autor e regras de ficheiros no directorio debian . Desde a sección chamada "Empaquetado de Scratch", o único arquivo novo é compatible , que é un ficheiro que contén a versión debhelper (neste caso 4) que se usa.

Necesitará axustar o changelog un pouco neste caso para reflectir que este paquete está chamado hello-debhelper en lugar de só ola :

hello-debhelper (2.1.1-1) dapper; Urxencia = baixo * Lanzamento inicial - Capitán Packager Xov, 06 Abr 2006 10:07:19 -0700

Usando debhelper , as únicas cousas que necesitamos cambiar de control son o nome (substituíndo ola por hello-debhelper ) e engadindo debhelper (> = 4.0.0) ao campo Build-Depends para o paquete fonte. O paquete Ubuntu para o hello-debhelper parece:

Podemos copiar o ficheiro de dereitos de autor e as secuencias de comandos postinst e prerm do paquete de Ubuntu hello-debhelper , xa que non cambiaron desde a sección chamada "Empaquetado de Scratch". Tamén copiaremos o ficheiro de regras para que poidamos inspeccionalo.

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 temos que mirar é regras , onde se pode ver o poder dos scripts debhelper . A versión debhelper das regras é algo menor (54 liñas fronte a 72 liñas na versión da sección chamada "regras").

A versión debhelper parece:

#! / usr / bin / make -f package = 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 build - $ (MAKE) -i distclean install: build dh_clean dh_installdirs $ (MAKE) prefix = $ (CURDIR) / debian / $ (package) / usr \ mandir = $ (CURDIR) / debian / $ (paquete) / usr / share / man \ infodir = $ (CURDIR) / debian / $ (paquete) / usr / share / info \ install build: ./configure --prefix = / usr $ (MAKE) CC = "$ (CC) "CFLAGS =" $ (CFLAGS) "

touch build binary-indep: install # Non hai ficheiros independentes de arquitectura que se cargarán # xerados por este paquete. Se houbera algunha xente faríase aquí #. binary-arch: instalar dh_testdir -a dh_testroot -a dh_installdocs -a NOTICIAS 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 binario: binario-indep binario- arco .PHONY: binary-arch binary-indep checkroot binario binario

Teña en conta que tarefas como probar se está no directorio correcto ( dh_testdir ), asegurándose de que está a construír o paquete con privilexios de root ( dh_testroot ), instalando a documentación ( dh_installdocs e dh_installchangelogs ) e limpeza despois da compilación ( dh_clean ) manéxanse automaticamente . Moitos paquetes moito máis complicados que hola teñen ficheiros de regras non máis grandes porque as secuencias de comandos de debhelper xestionan a maior parte das tarefas. Para obter unha lista completa de scripts debhelper , consulte a sección chamada "Lista de scripts debhelper ". Tamén están ben documentados nas súas respectivas páxinas man . É un exercicio útil para ler a páxina de man (está ben escrita e non é longa) para cada script de axuda usado no ficheiro de regras anterior.