Sumari
The rewrite of this tutorial document with updated contents and more practical examples is available as Guide for Debian Maintainers. Please use this new tutorial as the primary tutorial document.
Aquest document descriurà com es construeix un paquet Debian GNU/Linux per a un usuari comú Debian i per a futurs desenvolupadors, fent servir un llenguatge informal i incloent molts exemples. Un antic dit romà diu Longum iter est per preaecepta, breve et efficax per exempla! («És un llarg camí amb les normes, però curt i eficient amb els exemples»).
This document is made available for the Debian Buster
release since this offers many translations. This document will be dropped
in the following releases since contents are getting outdated. [1]
Una de les característiques que fan de Debian una de les distribucions més importants del mercat és el seu sistema de paquets. Tot i què hi ha una gran quantitat de programes disponibles en paquets de Debian, de vegades pots haver de fer servir programes que no estan disponibles en aquest format. Pot ésser que et demanis com construir els teus paquets i que pensis que és una tasca difícil. Bé doncs, si ets un principiant en GNU/Linux, pot ésser difícil, però si acabes de començar amb aquest sistema, no és recomanable que comencis per aquí :-). Cal saber algunes coses sobre programació en Unix, tot i què no és necessari ésser un mestre [2].
Tot i així, una cosa és del tot segura: per construir i fer el manteniment de paquets Debian adequadament, calen moltes hores. Per a què el nostre sistema no tengui errors, cal que els nostres desenvolupadors siguin tècnicament competents.
If you need some help with packaging, please read Secció 1.4, «On demanar ajuda.».
Les noves versions d'aquest document es publiquen a http://www.debian.org/doc/maint-guide/ i en el paquet maint-guide
. Les traduccions es poden aconseguir
en els paquets del tipus maint-guide-ca
. Teniu en compte que les
traduccions poden estar sense actualitzar.
Com es tracta d'un tutorial, he decidit explicar detalladament cada etapa dels temes importants. Alguns d'ells poden semblar-te irrellevants. Sigues pacient. També he omès intencionadament alguns casos extrems i sempre punters només per mantenir senzill aquest document.
Aquest és un recull de les meves observacions sobre la interacció social a Debian: espero que t'ajudin en la teva interacció amb Debian:
Tots som voluntaris.
No podeu imposar als altres el que s'ha de fer.
Cal estar motivat per fer les coses per tu mateix.
La cooperació amistosa és la força motriu.
La teva contribució no ha de sobre-esforçar als altres.
La teva contribució és valuosa només quan els altres t'ho agraeixen.
Debian no és la teva escola on automàticament reps atenció dels docents.
Cal ésser capaç d'aprendre moltes coses per un mateix.
L'atenció d'altres voluntaris és un recurs molt escàs.
Debian millora contínuament.
S'espera que construeixis paquets d'alta qualitat.
Cal adaptar-se al canvi.
En el desenvolupament i manteniment de Debian, es fan servir les següents expressions per referir-se a les persones implicades en la construcció i manteniment dels programes i paquets:
autor original («upstream author»): és la persona que ha escrit el codi original del programa (o l'original del document en el cas de paquets de documentació).
desenvolupador original («upstream maintainer»): la persona actualment responsable del manteniment del codi original.
empaquetador (desenvolupador) («maintainer»): la persona encarregada de la construcció i actualització dels paquets per a Debian.
patrocinador («sponsor»): la persona (cal que sigui un DD o DM) que transfereix els paquets construïts pels desenvolupadors al repositori de Debian després de comprovar que el paquet s'ajusta a las normes de Debian.
mentor: la persona que ajuda als desenvolupadors principiants a iniciar-se en la construcció i manteniment del paquet.
desenvolupador de Debian (DD) («Debian Developer»): la persona que es membre de Debian. Té autorització (sense limitacions) per transferir paquets al repositori oficial de Debian.
empaquetador/responsable de Debian (DM)(«Debian Maintainer»): la persona amb autorització limitada per transferir paquets al repositori oficial de Debian.
No és possible arribar a ésser desenvolupador oficial de Debian (DD) de la nit al dia degut a què no és suficient ésser tècnicament competent. Cal no desanimar-se per això. Pots aconseguir que el teu paquet passi al repositori, si és d'utilitat als usuaris, com a responsable mitjançant un patrocinador o un responsable de Debian.
No és necessari construir un nou paquet per ésser desenvolupador oficial de Debian. Una opció és contribuir en el manteniment d'algun dels paquets de la distribució. Hi ha molts paquets pendents d'algú que s'en faci càrrec (consulta Secció 2.2, «Seleccionar el programa.»).
Com que ens concentrem només en els aspectes tècnics dels paquets en el present document, consulta el següent per saber com funciona Debian i com pots participar-hi:
Debian: 17 years of Free Software, "do-ocracy", and democracy (PDF amb diapositives d'introducció en anglès)
How can you help Debian? (document oficial)
The Debian GNU/Linux FAQ, Chapter 13 - 'Contributing to the Debian Project' (document semi-oficial)
Debian Wiki, HelpDebian (documentació complementària)
Debian New Member site (document oficial)
Debian Mentors FAQ (documentació complementària)
Abans de començar, cal instal·lar els paquets necessaris per a la
construcció de paquets. A la llista de paquets no estan inclosos paquets
amb prioritat «essencial» o «requerit» (essential
i
required
) degut a què segurament ja estan instal·lats.
The following packages come with the standard Debian installation, so you
probably have them already (along with any additional packages they depend
on). Still, you should check them with aptitude show
or with package
dpkg -s
.
package
El paquet imprescindible per al desenvolupament és build-essential
. Quan s'instal·la,
també s'instal·len altres paquets necessaris,
obtenint-se la instal·lació bàsica per a la construcció de paquets.
Per a la construcció d'alguns paquets, amb això seria suficient, però n'hi ha d'altres que, sense ésser imprescindibles, pot ésser útil instal·lar-los o, fins i tot, necessaris:
autoconf
, automake
i autotools-dev
- molts programes fan servir
fitxers de configuració i fitxers Makefile
que es
gestionen amb aquests programes (llegeix info autoconf
,
info automake
). El paquet autotools-dev
permet mantenir versions
actualitzades dels fitxers «autoconf» i «automake» i conté documentació per
aprendre a fer servir amb eficàcia aquest tipus de fitxers.
dh-make
i debhelper
- dh-make
es fa servir en la construcció de
l'esquelet dels paquets, i es faran servir algunes eines de debhelper
per construir alguns paquets. Tot i
que no són imprescindibles per a la construcció de paquets és del
tot recomanable per als nous desenvolupadors.
Faciliten molt el procés de construcció inicial així com el manteniment
posterior (llegiu dh_make(8), debhelper(1), /usr/share/doc/debhelper/README
)
[3].
La nova ordre debmake
es pot fer
servir com a alternativa a l'ordre dh-make
. Compte amb més funcionalitats i una
documentació extensa en format HTML amb exemples per a la construcció de
paquets a debmake-doc
.
devscripts
- aquest paquet conté
alguns guions útils per als desenvolupadors, però no són necessaris en la
construcció de paquets. Val la pena mirar els paquets recomanats i
suggerits per aquest paquet (llegeix
/usr/share/doc/devscripts/README.gz
).
fakeroot
- this utility lets you
emulate being root, which is necessary for some parts of the build process.
(See fakeroot(1).)
file
- aquest programa és molt útil
per saber de quin tipus és un fitxer determinat (consulta file(1)).
gfortran
- el compilador GNU per a
Fortran 95, necessari si el programa està escrit en Fortran (llegeix
gfortran(1)).
git
- aquest paquet instal·la el
popular sistema de control de versions, dissenyat per al seguiment de grans
projectes amb eficàcia i rapidesa; es fa servir amb molts projectes de codi
lliure importants entre el quals el nucli de Linux (llegeix git(1),
git Manual (/usr/share/doc/git-doc/index.html
)).
gnupg
- a tool that enables you to
digitally sign packages. This is especially important
if you want to distribute packages to other people, and you will certainly
be doing that when your work gets included in the Debian distribution. (See
gpg(1).)
gpc
- el compilador GNU de Pascal,
necessari si el programa fa servir aquest llenguatge. També hi ha el
compilador fp-compiler
, de codi
lliure per a Pascal (llegeix gpc(1)
i ppc386(1)).
lintian
- this is the Debian package
checker, which lets you know of any common mistakes after you build the
package and explains the errors found. (See lintian(1), Lintian User's Manual.)
patch
- és una utilitat molt útil.
Permet aplicar un arxiu amb una llista de diferències (produït pel programa
diff) en el fitxer original, i obtenir una versió
apedaçada del fitxer original (vegeu patch(1)).
patchutils
- aquest paquet
proporciona programes per gestionar els pegats, entre d'altres
lsdiff, interdiff i
filterdiff.
pbuilder
- this package contains
programs which are used for creating and maintaining a
chroot environment. Building a Debian package in this
chroot environment verifies the proper build dependency
and avoids FTBFS (Fails To Build From Source) bugs. (see pbuilder(8) and pdebuild(1))
perl
- Perl és un dels llenguatges
interpretats usats amb més freqüència per als guions (o «scripts») en els
sistemes Un*x. Tant és així que es fa servir l'expressió «navalla suïssa
d'Unix» per fer referència en aquest llenguatge (llegeix perl(1)).
python
- Python és una altre
llenguatge interpretat per a fer guions a Debian degut a la combinació de
funcionalitat i clara sintaxi (consulta python(1)).
quilt
- aquest paquet permet aplicar
els pegats i fer el seguiment dels canvis realitzats. Fa les modificacions
segons l'ordre establert i, amb ell, és possible aplicar («push»), desfer
(«pop») i actualitzar les modificacions fàcilment (llegeix quilt(1) i /usr/share/doc/quilt/quilt.pdf.gz
).
xutils-dev
- alguns programes, si
més no els escrits per a X11, fan servir aquest paquet per generar fitxers
Makefile
executant conjunts de funcions macro (llegeix
imake(1) i xmkmf(1)).
Les descripcions anteriors només són un resum de la funcionalitat de cada paquet. Abans de continuar, si us plau, llegeix la documentació de cada programa, al menys pel que fa a la seva funcionalitat bàsica. Pot semblar una mica pesat, però et farà molt profit aquesta lectura.
La documentació llistada a continuació és imprescindible llegir-la mentre es llegeix aquest document:
debian-policy
- a Debian Policy Manual s'explica l'estructura i
contingut del repositori, alguns aspectes del disseny del sistema operatiu,
l'estàndard del sistema de fitxers («Filesystem Hierarchy Standard») i el
què és més important, descriu els requisits per a què un paquet s'afegeixi a
la distribució (llegix les còpies locals de
/usr/share/doc/debian-policy/policy.pdf.gz
i /usr/share/doc/debian-policy/fhs/fhs-3.0.pdf.gz
).
developers-reference
- the Debian Developer's Reference describes
all matters not specifically about the technical details of packaging, like
the structure of the archive, how to rename, orphan, or adopt packages, how
to do NMUs, how to manage bugs, best packaging practices, when and where to
upload, etc. (See the local copy of
/usr/share/doc/developers-reference/developers-reference.pdf
.)
La documentació següent és important llegir-la mentre es llegeix aquest document:
Autotools Tutorial provides a very good tutorial for the GNU Build System known as the GNU Autotools, whose most important components are Autoconf, Automake, Libtool, and gettext.
gnu-standards
- aquest paquet
proporciona dos documents del projecte GNU: «GNU
Coding Standards» i «Information for
Maintainers of GNU Software». Encara que no són d'aplicació
obligada a Debian, són útils com a orientació (llegeix les còpies locals de
/usr/share/doc/gnu-standards/standards.pdf.gz
i
/usr/share/doc/gnu-standards/maintain.pdf.gz
).
Si aquest document és contradictori amb algun aspecte amb els documents
anteriors, serà d'aplicació l'establert per aquest darrers. En aquest cas,
si us plau comunica l'error del paquet maint-guide
fent servir
reportbug.
The following is an alternative tutorial document that you may read along with this document:
Before you decide to ask your question in some public place, please read this fine documentation:
els arxius de
/usr/share/doc/
per a
cada paquet
package
el contingut de man
per a cada una de les ordres
command
el contingut de info
per a cada una de les ordres
command
els continguts de l'arxiu de la llista de correu [email protected]
el contingut de l'arxiu de la llista de correu [email protected]
Considera fer servir el motor de cerca web mitjançant la inclusió eficaç de
cadenes de recerca, com ara site:lists.debian.org
per
limitar el domini.
Començar a treballar en un paquet petit és una bona opció per aprendre els detalls de la creació de paquets. Inspeccionar els paquets mantinguts per altres persones és una excel·lent manera d'aprendre.
Si encara tens preguntes sobre la construcció de paquets que no poden trobar resposta en la documentació disponible i els recursos web, pots fer consultes de forma interactiva:
[email protected] mailing list. (Aquesta llista de correu és per a principiants.)
llista de correu [email protected]. (Aquesta llista de correu és per a experts.)
IRC con és ara
#debian-mentors
.
Equips centrats en un conjunt de paquets específic. (La llista completa està disponible a https://wiki.debian.org/Teams)
Llistes de correu específiques per a un idioma com per exemple debian-devel-{french,italian,portuguese,spanish}@lists.debian.org o [email protected]. (La llista completa està disponible a https://lists.debian.org/devel.html i https://lists.debian.org/users.html)
Els desenvolupadors de Debian amb més experiència t'ajudaran amb gust, si fas les preguntes després de fer el treball necessari.
En rebre un avís d'error (sí, un avís d'error de veritat!) serà el moment de donar un cop d'ull al Sistema de seguiment d'errades de Debian i llegir la documentació per tal de conèixer el procediment adequat. Et recomano la lectura de la Developer's Reference, 5.8. 'Handling bugs'.
Even if it all worked well, it's time to start praying. Why? Because in just a few hours (or days) users from all around the world will start to use your package, and if you made some critical error you'll get mailbombed by numerous angry Debian users… Just kidding. :-)
Relaxa't i estiguis preparat per rebre informes d'errades, perquè el camí és llarg per aconseguir el compliment de las Normes de Debian (una vegada més llegeix la documentació real per a més detalls). Bona sort!
[1] En el document s'assumeix que fas servir la versió
jessie
. Si vols fer servir aquest document amb
versions anteriors (incloses sistemes Ubuntu i d'altres), cal que tenguis
instal·lats (com a mínim) els paquets dpkg
i debhelper
.
[2] Podràs aprendre les operacions bàsiques dels sistemes Debian a Debian Reference. També s'expliquen alguns aspectes de la programació en sistemes Unix.
[3] Hi ha d'altres paquets semblants pel que fa a la seva funcionalitat però més
específics, com és ara dh-make-perl
,
dh-make-php
, etc.