Capítol 1. Començant correctament.

# Capítol 1. Començant correctament.

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.

## 1.1. Dinamisme social a Debian

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)

## 1.2. Programes necessaris per treballar.

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 `package`` or with `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.

## 1.3. Documents necessaris per treballar.

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:

- Debian Packaging Tutorial

## 1.4. On demanar ajuda.

Before you decide to ask your question in some public place, please read this fine documentation:

- els arxius de `/usr/share/doc/`package`` per a cada paquet

- el contingut de `man `command`` per a cada una de les ordres

- el contingut de `info `command`` per a cada una de les ordres

- els continguts de l'arxiu de la llista de correu debian-mentors@lists.debian.org

- el contingut de l'arxiu de la llista de correu debian-devel@lists.debian.org

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:

- debian-mentors@lists.debian.org mailing list. (Aquesta llista de correu és per a principiants.)

- llista de correu debian-devel@lists.debian.org. (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 debian-devel@debian.or.jp. (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.

Guia del nou desenvolupador de Debian |  | Capítol 2. Primers passos.