Product SiteDocumentation Site

15.4. Convertir-se en mantenidor de paquets

15.4.1. Aprendre a fer paquets

Creating a quality Debian package is not always a simple task, and becoming a package maintainer takes some learning, both with theory and practice in technical and legal matters. It is not a simple matter of building and installing software; rather, the bulk of the complexity comes from understanding the problems and conflicts, and more generally the interactions, with the myriad of other packages available.

15.4.1.1. Regles

Un paquet Debian ha de complir amb les regles precises compilades a la política de Debian, i cada mantenidor de paquets ha de conèixer-les. No existeix cap requisit de conèixer-los de memòria, sinó de saber que existeixen i de referir-se a ells quan una opció presenta una alternativa no trivial. Tots els mantenidors de Debian han comès errors al no saber una regla, però això no és un problema enorme sempre que l'error es corregeixi quan un usuari n'informa com a informe d'error (que tendeix a passar de seguita gràcies als usuaris avançats). El camp Standards-Version de debian/control especifica la versió de la política Debian amb la qual compleix un paquet. Els mantenidors haurien de complir amb l'última versió de la política Debian.

15.4.1.2. Procediments

Debian no és una simple col·lecció de paquets individuals. El treball d'empaquetament de cadascú és part d'un projecte col·lectiu; ser un desenvolupador de Debian implica saber com funciona el projecte de Debian com a conjunt. Cada desenvolupador interactuarà, més aviat o més tard, amb els altres. La «Debian Developer's Reference» o “Referència del Desenvolupador Debian” (al paquet developers-reference) resumeix el que cada desenvolupador ha de saber per tal d'interactuar de la millor manera possible amb els diferents equips del projecte, i per aprofitar millor els avantatges possibles dels recursos disponibles. Aquest document també enumera una sèrie de deures que s'espera que compleixi un desenvolupador.

15.4.1.3. Eines

Moltes eines ajuden els mantenidors de paquets en el seva tasca. Aquesta secció els descriu ràpidament, però no dóna tots els detalls ja que tots tenen una completa documentació pròpia.
15.4.1.3.1. devscripts
El paquet devscripts conté molts programes que ajuden en una àmplia gamma de tasques d'un desenvolupador de Debian:
  • debuild permet generar un paquet (amb dpkg-buildpackage) i executar lintian per verificar després el compliment amb la política Debian.
  • debclean neteja un paquet font després que s'hagi generat un paquet binari.
  • dch permet l'edició ràpida i senzilla d'un fitxer debian/changelog en un paquet font.
  • uscan comprova si un autor original ha publicat una nova versió d'un programari; això requereix un fitxer debian/watch amb una descripció de la ubicació d'aquests publicacions.
  • debi permet instal·lar (amb dpkg -i) el paquet Debian que s'acaba de generar sense la necessitat d'escriure el seu nom i camí complets.
  • De manera similar, debc permet escanejar el contingut del paquet acabat de generar (amb dpkg -c), sense necessitat d'escriure el seu nom i camí complets.
  • bts controls the bug tracking system from the command line; this program automatically generates the appropriate emails.
  • debrelease ennvia un paquet generat recentment a un servidor remot, sense necessitat d'escriure el nom complet i el camí del fitxer .changes corresponent.
  • debsign signa els fitxers *.dsc i *.changes.
  • uupdate automatitza la creació d'una nova revisió d'un paquet quan s'ha publicat una nova versió del programari original.
All of the mentioned commands are documented in their respective manual pages. They can further be configured per user in one file: ~/.devscripts.
15.4.1.3.2. debhelper i dh-make
Debhelper is a set of scripts easing the creation of policy-compliant packages; these scripts are invoked from debian/rules. Debhelper has been widely adopted within Debian, as evidenced by the fact that it is used by the majority of official Debian packages. All the commands it contains have a dh_ prefix. Each of them is documented in a manual page. The different compatibility levels and common options are described in debhelper(7).
L'script dh_make (al paquet dh-make) crea els fitxers necessaris per generar un paquet Debian en un directori que inicialment conté les fonts d'un programari. Com es pot endevinar a partir del nom del programa, els fitxers generats utilitzen el debhelper per defecte.
15.4.1.3.3. lintian
Aquesta eina és una de les més importants: és el verificador de paquets Debian. Es basa en una gran varietat de testos creats a partir de la política Debian, i detecta ràpidament i automàticament molts errors que després es poden corregir abans que es publiquin els paquets.
Aquesta eina només és una ajuda, i de vegades s'equivoca (per exemple, ja que la política de Debian canvia amb el temps, lintian de vegades està obsolet). Tampoc és exhaustiva: no tenir cap error de Lintian no hauria d'interpretar-se com una prova que el paquet és perfecte; com a molt, evita els errors més comuns.
15.4.1.3.4. piuparts
Aquesta és una altra eina important: automatitza la instal·lació, l'actualització, l'eliminació i la purga d'un paquet (en un entorn aïllat), i comprova que cap d'aquestes operacions condueixi a un error. Pot ajudar a detectar les dependències que manquen, i també detecta quan s'han deixat fitxers incorrectament després que el paquet s'hagi purgat.
15.4.1.3.5. autopkgtest
autopkgtest runs tests on binary packages, using the tests supplied in the source package in debian/tests/. Several commands allow the easy creation of chrooted or virtual test environments.
15.4.1.3.6. reprotest
reprotest construeix el mateix codi font dues vegades en entorns diferents, i després comprova els binaris produïts per cada compilació per trobar-ne diferències. Si n'hi ha, llavors s'utilitza el diffoscope (i si no està disponible, diff) per mostrar-les en detall per a l'anàlisi posterior.
15.4.1.3.7. dupload i dput
The dupload and dput commands allow uploading a Debian package to a (possibly remote) server. This allows developers to publish their package on the main Debian server (ftp-master.debian.org) so that it can be integrated to the archive and distributed by mirrors. These commands take a .changes file as a parameter, and deduce the other relevant files from its contents.
15.4.1.3.8. git-buildpackage and dgit
The project has been using various version control systems over the years to store packaging efforts or package source code, or allow collaborative package maintenance. In an effort to unify the systems and efforts, it was ultimately decided in 2017 to move (almost) all package sources into Git (CULTURA Git) onto a Gitlab instance called salsa.debian.org.
To make packaging using Git easier for Debian developers, tools have been developed. These allow not only to store the packaging files in Git, but also to use the Git repositories (and their history) of software projects, put patches applied to package sources into Git history, maintain software versions per distribution, etc.
One of the most famous packages is git-buildpackage. An alternative is dgit. Of course it is still possible to use neither of those.
Below is an example for a ~/.gbp.conf configuration file
[DEFAULT]
builder = sbuild -d bullseye --build-dep-resolver=aptitude -s --source-only-changes --build-failed-commands "%SBUILD_SHELL"
pristine-tar = true

[buildpackage]
sign-tags = true
keyid = XXXX
postbuild  = autopkgtest --user debci --apt-upgrade -s "$GBP_CHANGES_FILE" -- lxc --sudo autopkgtest-bullseye-amd64 
export-dir = /tmp/build-area/
notify = off

[import-orig]
filter-pristine-tar = true
sign-tags = true

[pq]
drop = true
Building the package is then as easy as running gbp buildpackage in the Git tree. It will start a package build in a Debian Bullseye chroot using sbuild. When the build succeeds, the created files are checked running the autopkgtest-testsuite (if defined). All the various options are explained in gbp.conf(5) and /etc/git-buildpackage/gbp.conf.
All the tools mentioned so far have been included in the continuous integration (CI) process in the salsa.debian.org instance as well:

15.4.2. Procés d'acceptació

Convertir-se en “desenvolupador de Debian” no és una qüestió administrativa senzilla. El procés comprèn diversos passos, i és tant una iniciació com un procés de selecció. En qualsevol cas, està formalitzat i ben documentat, de manera que qualsevol pot fer un seguiment de la seva progressió al lloc web dedicat al procés per nous membres.

15.4.2.1. Prerequisits

S'espera que tots els candidats tinguin almenys un coneixement funcional de la llengua anglesa. Això és necessari a tots els nivells: per a les comunicacions inicials amb l'examinador, per descomptat, però també més tard, ja que l'anglès és l'idioma preferit per a la majoria de la documentació; també, els usuaris de paquets es comunicaran en anglès quan informin d'errors, i esperaran respostes en anglès.
L'altre prerequisit s'ocupa de la motivació. Convertir-se en desenvolupador de Debian és un procés que només té sentit si el candidat sap que el seu interès en Debian durarà molts mesos. El procés d'acceptació pot durar diversos mesos, i Debian necessita desenvolupadors de llarga durada; cada paquet necessita manteniment permanent, i no només una pujada inicial.

15.4.2.2. Registre

El primer pas (real) consisteix a trobar un patrocinador o representant; això és un desenvolupador oficial disposat a declarar que creu que acceptar X seria una cosa bona per a Debian. Això normalment implica que el candidat ja ha estat actiu dins de la comunitat, i que el seu treball ha estat apreciat. Si el candidat és tímid i el seu treball no és accessible públicament, es pot intentar convèncer un desenvolupador de Debian perquè el defensi mostrant el seu treball de manera privada.
Al mateix temps, el candidat ha de generar un parell de claus RSA públic/privat amb GnuPG, que hauria de ser signat per almenys dos desenvolupadors oficials de Debian. La signatura autentifica el nom de la clau. De manera efectiva, durant una «key signing party» o “trobada per a la signatura de claus”, cada participant ha de mostrar una identificació oficial (normalment una targeta d'identificació o passaport) juntament amb els seus identificadors de claus. Aquest pas confirma l'enllaç entre la persona i les claus. Per tant, aquesta signatura requereix trobar-se en la vida real. Si encara no heu conegut cap desenvolupador de Debian en una conferència de programari lliure públic, podeu cercar explícitament desenvolupadors que viuen a prop utilitzant la llista de la pàgina web següent com a punt de partida.
Un cop el registre a nm.debian.org ha estat validat pel patrocinador, s'assigna un «Application Manager» o “gestor de la sol·licitud” al candidat. El gestor de la sol·licitud conduirà el procés a través de múltiples passes i comprovacions predefinides.
La primera verificació és una comprovació d'identitat. Si ja teniu una clau signada per dos desenvolupadors de Debian, aquest pas és fàcil; en cas contrari, el gestor de la sol·licitud intentarà guiar-vos en la cerca de desenvolupadors de Debian propers per organitzar una trobada i una signatura de claus.

15.4.2.3. Acceptació dels principis

Aquestes formalitats administratives van seguides de consideracions filosòfiques. La qüestió és assegurar-se que el candidat entén i accepta el contracte social i els principis que subjacents al Programari Lliure. L'entrada a Debian només és possible si es comparteixen els valors que uneixen els desenvolupadors actuals, com s'expressa en els textos fundacionals (i es resumeixen a Capítol 1, El Projecte Debian).
A més, s'espera que cada candidat que desitgi unir-se a les files de Debian conegui el funcionament del projecte, i com interactuar adequadament per resoldre els problemes que sens dubte apareixeran a mesura que passi el temps. Tota aquesta informació generalment està documentada en manuals dirigits als nous mantenidors, i a la referència del desenvolupador de Debian. Una lectura atenta d'aquest document hauria de ser suficient per a respondre a les preguntes de l'examinador. Si les respostes no són satisfactòries, s'informarà el candidat. Després caldrà llegir (altre cop) la documentació pertinent abans d'intentar-ho de nou. En els casos en què la documentació existent no conté la resposta apropiada per a la pregunta, el candidat normalment pot trobar a una resposta en alguna experiència pràctica dins de Debian, o potencialment discutint-ho amb altres desenvolupadors de Debian. Aquest mecanisme assegura que els candidats s'impliquin en certa mesura a Debian abans de convertir-se de ple en part d'aquest. És una política deliberada, mitjançant la qual els candidats que finalment s'uneixen al projecte s'integren com una altra peça d'un trencaclosques infinitament extensible.
Aquest pas es coneix normalment com filosofia & procediments (P&P per escurçar) en el lingo dels desenvolupadors implicats en el procés per nous membres.

15.4.2.4. Comprovació d'habilitats

Cada sol·licitud per convertir-se en desenvolupador oficial de Debian ha d'estar justificada. Convertir-se en membre del projecte requereix mostrar que aquest estatus és legítim, i que facilita el treball del candidat per ajudar Debian. La justificació més comuna és que si es concedeix l'estatus de desenvolupador de Debian això facilita el manteniment d'un paquet Debian, però no és l'única. Alguns desenvolupadors s'uneixen al projecte per contribuir a l'adaptació a una arquitectura específica, altres volen millorar la documentació, etc.
Aquest pas representa l'oportunitat que el candidat expliqui què pensa fer dins del projecte Debian i mostri el que ja han fet per a aquesta fi. Debian és un projecte pragmàtic i dir alguna cosa no és suficient, si les accions no coincideixen amb el que es diu. En general, quan el paper previst dins del projecte està relacionat amb el manteniment de paquets, una primera versió prospectiva del paquet haurà de ser validada tècnicament i pujada als servidors de Debian per un patrocinador entre els desenvolupadors de Debian existents.
Finally, the examiner checks the candidate's technical (packaging) skills with a detailed questionnaire. Bad answers are not permitted, but the answer time is not limited. All the documentation is available and several attempts are allowed if the first answers are not satisfactory. This step does not intend to discriminate, but to ensure at least a modicum of knowledge common to new contributors.
Aquest pas es coneix com el pas de les tasques & habilitats (T&S per abreujar de l'anglès «tasks & skills») en l'argot dels examinadors.

15.4.2.5. Aprovació final

A l'últim pas, tot el procés es revisa per un DAM («Debian Account Manager» o “gestor de comptes de Debian”). El DAM revisarà tota la informació sobre el candidat que hagi recollit l'examinador, i prendrà la decisió sobre si crear o no un compte als servidors de Debian. En els casos en què es requereixi informació addicional, la creació del compte es pot endarrerir. Els rebuigs són bastant rars si l'examinador fa una bona feina seguint el procés, però a vegades succeeixen. Mai són permanents, i el candidat és lliure d'intentar-ho una altra vegada.
La decisió del DAM és autoritativa i (gairebé) sense apel·lació, la qual cosa explica perquè la gent en aquest càrrec sovint ha estat criticada en el passat.