Arch build system (Français)

État de la traduction:
Cet article est la version francophone de
Arch build system
. Date de la dernière traduction: 2023-05-21. Vous pouvez aider à synchroniser la traduction s'il y a eu des
changements
dans la version anglaise.
Related articles
Arch package guidelines (Français)
Arch User Repository (Français)
Creating packages
Kernel/Arch build system
makepkg (Français)
Official repositories (Français)
pacman (Français)
PKGBUILD (Français)
Patching packages
Le système de construction d'Arch (
A
rch
B
uild
S
ystem) est un système de type "port" pour construire et empaqueter des logiciels à partir du code source. Alors que
pacman
est l'outil spécialisé d'Arch pour la gestion des paquets binaires, l'"Arch build system" est une collection d'outils pour compiler les sources en paquets installables
.pkg.tar.zst
.
Les
ports
sont un système utilisé par les *BSD pour automatiser le processus de construction de logiciels à partir du code source. Le système utilise un
port
pour télécharger, décompresser, patcher, compiler et installer le logiciel donné. Un
port
est simplement un petit répertoire sur l'ordinateur de l'utilisateur, nommé d'après le logiciel correspondant à installer, qui contient quelques fichiers avec les instructions pour construire et installer le logiciel à partir des sources. Cela rend l'installation du logiciel aussi simple que de taper
make
ou
make install clean
dans le répertoire du port.
L'"Arch build system" repose sur un concept similaire. Il comprends une collection de dépôts Git pour chaque paquet disponible pour Arch Linux. Chaque dépôt contient un
PKGBUILD
(et parfois d'autres fichiers), et ne contient ni les sources ni les binaires du logiciel. En exécutant
makepkg
à l'intérieur d'un répertoire, les sources du logiciel sont téléchargées, le logiciel est compilé, et ensuite empaqueté dans le répertoire de construction. Vous pouvez ensuite utiliser
pacman
pour installer le paquet.
Les outils
L'"Arch build system" inclut et repose sur plusieurs autres composants et outils qui sont utilisés dans le processus de construction des paquets depuis leurs sources :
Dépôt
La structure du dépôt contenant les fichiers nécessaires à la construction de tous les paquets officiels, mais pas les paquets eux-mêmes ni les fichiers sources du logiciel. Elle est disponible sous la form de dépôts
Git
hébergés par
Gitlab
. Consultez la section
#Structure du dépôt
pour plus d'informations.
PKGBUILD
Un script
Bash
qui contient l'URL du code source ainsi que les instructions de compilation et d'empaquetage.
makepkg
Un outil de commande shell qui lit les PKGBUILDs, télécharge et compile automatiquement les sources et crée un
.pkg.tar*
selon le tableau
PKGEXT
dans
makepkg.conf
. Vous pouvez également utiliser makepkg pour créer vos propres paquets personnalisés à partir de l'
AUR
ou de sources tierces. Consultez l'article anglais concernant la
création de paquets
pour plus d'informations.
pacman
pacman est complètement séparé, mais est nécessairement invoqué, soit par makepkg soit manuellement, pour installer et supprimer les paquets construits et pour récupérer les dépendances.
AUR
Le dépôt des utilisateurs d'Arch est séparé du dépôt officiel des PKGBUILDs, mais les paquets d'AUR peuvent être construits en utilisant les mêmes outils. Contrairement à l'arbre d'ABS qui est simplement un dépôt git nu, l'AUR existe sous la forme d'une interface de site web soignée avec diverses fonctionnalités interactives. Il contient plusieurs milliers de PKGBUILDs contribués par les utilisateurs pour des logiciels qui ne sont pas disponibles en tant que paquet officiel d'Arch. Si vous avez besoin de construire un paquet en dehors de l'arbre officiel d'Arch, il y a de fortes chances qu'il soit dans l'AUR.
Attention
Les PKGBUILDs officiels supposent que les paquets sont
construit dans un «chroot» vierge
. La construction d'un logiciel sur un système de construction
sale
peut échouer ou provoquer un comportement inattendu au moment de l'exécution, car si le système de construction détecte les dépendances de manière dynamique, le résultat dépend des paquets disponibles sur le système de construction.
Structure du dépôt
Les
dépôts officiels
core
,
extra
,
core-testing
et
extra-testing
sont hébergés sur l'instance
GitLab
d'Arch Linux.
Chaque paquet a son propre dépôt dans l'espace
archlinux/packaging/packages
. Chaque dépôt contient les PKGBUILDs et les fichiers trouvés dans les paquets officiels. Par ailleurs, certains fichiers qui sont utilisés par les développeurs pour les étapes de contruction s'y trouvent également.
Par exemple, l'arbre de
acl
ressemble à ceci :
acl
├── keys
│   └── pgp
│       ├── 259B3792B3D6D319212CC4DCD5BF9FEB0313653A.asc
│       ├── 600CD204FBCEA418BD2CA74F154343260542DF34.asc
│       └── B902B5271325F892AC251AD441633B9FE837F581.asc
└── PKGBUILD
Le code source du paquet n'est pas présent dans le répertoire. À la place, le
PKGBUILD
contient une URL qui téléchargera le code source lorsque le paquet sera construit.
Cas d'utilisation
Le système de construction d'Arch automatise certaines tâches liées à la compilation à partir des sources. Ses cas d'utilisation sont :
Tout cas d'utilisation qui nécessite de compiler ou de recompiler un paquet.
Créer et installer de nouveaux paquets à partir des sources de logiciels pour lesquels aucun paquet n'est encore disponible (consultez l'article anglais concernant la
création de paquets
).
Personnaliser les paquets existants pour répondre à vos besoins (par exemple, activer ou désactiver des options, appliquer des correctifs).
Reconstruire votre système entier en utilisant vos paramètres de compilation, "à la FreeBSD".
Construire et installer proprement votre propre noyau personnalisé (consultez
Compilation du noyau
).
Faire fonctionner les modules du noyau avec un noyau personnalisé.
Compiler et installer facilement une version plus récente, plus ancienne, bêta ou de développement d'un paquet Arch en éditant le numéro de version dans le PKGBUILD.
Utilisation
Récupérer le PKGBUILD d'origine
Pour récupérer le fichier
PKGBUILD
nécessaire à la construction d'un certain paquet à partir des sources, vous pouvez soit utiliser l'outil
pkgctl
, soit direcement avec
Git
.
Utiliser l'outil pkgctl
Comme condition préalable,
installez
le paquet
devtools
.
pkgctl
est un outil qui permet de travailler avec les fichiers sources des paquets Arch Linux en utilisant Git.
Pour cloner le dépôt
git
avec les derniers fichiers de construction en utilisant
pkgctl
, la commande suivante est utilisée :
$ pkgctl repo clone
pkgname
Notez qu'ici, les fichiers sources se réfèrent au
PKGBUILD
, éventuellement avec quelques autres fichiers requis, tels que les clés. C'est à dire, les fichiers essentiels qui sont requis pour le système de construction d'Arch Linux. Cela ne fait pas référence aux sources du paquet qui ont été écrits par l'équipe qui a créé le logiciel, comme les fichiers C ou Python.
Cela vous donnera non seulement les fichiers de compilation actuels, mais aussi leurs versions précédentes. De plus, vous pouvez utiliser toutes les autres commandes
git
pour extraire une ancienne version du paquet ou pour suivre les modifications personnalisées.
Si vous souhaitez obtenir une version spécifique d'un paquet, vous pouvez utiliser quelque chose comme ce qui suit :
$ pkgctl repo clone --switch="2:1.19.5-1" go
Lisez
pkgctl-repo-clone(1)
pour plus d'informations, et pour les autres commandes disponibles.
Utiliser git directement
Utilisez la commande git suivante pour cloner uniquement une branche spécifique. Vous éviterez ainsi de copier l'ensemble du dépôt :
$ git clone https://gitlab.archlinux.org/archlinux/packaging/packages/
pkgname
.git
Par exemple, pour copier les fichiers de construction d'Apache :
$ git clone https://gitlab.archlinux.org/archlinux/packaging/packages/apache.git
Construire le paquet
Configurez
makepkg
pour construire des paquets à partir des
PKGBUILDs
que vous avez téléchargés, comme expliqué dans
Makepkg (Français)#Configuration
.
Ensuite, copiez le répertoire contenant le
PKGBUILD
que vous souhaitez modifier vers un nouvel emplacement. Apportez-y les modifications souhaitées et utilisez
makepkg
comme décrit dans
Makepkg (Français)#Utilisation
pour créer et installer le nouveau paquet.
Trucs et astuces
Préserver les paquets modifiés
La mise à jour du système avec
pacman
remplacera un paquet modifié par le paquet du même nom des dépôts officiels. Consultez les instructions suivantes pour éviter cela.
Insérez un tableau de groupes dans le
PKGBUILD
, et ajoutez le paquet à un groupe appelé
modified
.
PKGBUILD
groups=('modified')
Ajoutez ce groupe à la section
IgnoreGroup
dans
/etc/pacman.conf
.
/etc/pacman.conf
IgnoreGroup = modified
Si de nouvelles versions sont disponibles dans les dépôts officiels lors d'une mise à jour du système, pacman affichera une note indiquant qu'il ignore cette mise à jour car elle se trouve dans la section IgnoreGroup. À ce stade, le paquet modifié devra être reconstruit pour éviter les mises à jour partielles.
Autres outils
pbget
- récupère les PKGBUILDs pour des paquets individuels directement depuis l'interface web. Prend en charge l'AUR.