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.
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.
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.
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.
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
controla el sistema de seguiment d'errors des de la línia d'ordres; aquest programa genera automàticament els correus electrònics apropiats.
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.
Totes les ordres esmentades estan documentades en les seves respectives pàgines de manual. Un usuari encara se les pot personalitzar més al fitxer: ~/.devscripts
.
15.4.1.3.2. debhelper i dh-make
Debhelper és un conjunt de scripts que faciliten la creació de paquets compatibles amb les normativa; aquests scripts s'invoquen des de debian/rules
. Debhelper ha estat àmpliament adoptat dins de Debian, com ho demostra el fet que és utilitzat per la majoria dels paquets oficials de Debian. Totes les ordres que conté tenen un prefix dh_
. Cadascun d'elles està documentada en una pàgina de manual. Els diferents nivells de compatibilitat i les opcions comunes es descriuen a 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.
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.
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.
autopkgtest
executa testos en paquets binaris, utilitzant les proves subministrades al paquet font a debian/tests/
. Diverses ordres permeten la creació fàcil d'entorns de proves «chroot» o virtuals.
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
Les ordres dupload
i dput
permeten enviar un paquet Debian a un servidor (possiblement remot). Això permet als desenvolupadors publicar el seu paquet al servidor Debian principal (ftp-master.debian.org
) perquè es pugui integrar a l'arxiu i distribuir-lo pels miralls. Aquestes ordres prenen un fitxer .changes
com a paràmetre, i en dedueixen els altres fitxers rellevants a partir del seu contingut.
15.4.1.3.8. git-buildpackage i dgit
El projecte ha estat utilitzant diversos sistemes de control de versions al llarg dels anys per emmagatzemar els esforços d'empaquetament o el codi font del paquet, o permetre el manteniment col·laboratiu de paquets. En un intent per unificar els sistemes i esforços, es va decidir finalment el 2017 moure (gairebé) tots els paquets font a
Git (
CULTURA Git) a una instància de Gitlab anomenada
salsa.debian.org
.
Per facilitar el fer paquets amb Git per als desenvolupadors de Debian, s'han desenvolupat eines. Això no només permet emmagatzemar els fitxers d'empaquetament a Git, sinó també utilitzar els repositoris Git (i el seu historial) de projectes de programari, incloure els pegats aplicats a les fonts dels paquets a l'historial Git, mantenir versions de programari per cada distribució, etc.
Un dels paquets més famosos és git-buildpackage. Una alternativa és dgit. Per descomptat, encara és possible no utilitzar-ne cap d'elles.
A continuació hi ha un exemple d'un fitxer de configuració ~/.gbp.conf
[DEFAULT]
builder = sbuild -d bookworm --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-bookworm-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 Bookworm 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
.
Totes les eines esmentades fins ara s'han inclòs també en el procés d'integració contínua (CI o «continuous integration») de la instància
salsa.debian.org
:
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.
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.
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.
Finalment, l'examinador comprova les habilitats tècniques del candidat amb un qüestionari detallat. No es permeten respostes incorrectes, però el temps de resposta no és limitat. Tota la documentació està disponible i es permeten diversos intents si les respostes inicials no són satisfactòries. Aquest pas no pretén discriminar, sinó garantir almenys un mínim de coneixements comuns als nous contribuïdors.
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.