ABS

De ArchwikiFR
(Redirigé depuis Abs)

Cet article fournit un aperçu d'Arch Build System (ABS) avec une procédure pas à pas pour les débutants. Il n'a pas pour objectif d'être un guide de référence complet.

Qu'est-ce qu'Arch Build System ?

Arch Build System est comme un système de ports (ports-like) qui permet de compiler et d’empaqueter des logiciels à partir de leur code source. Alors que pacman est l'outil d'Arch spécialisé dans la gestion des paquets binaires (y compris les paquets construits avec 'ABS'), 'ABS' est un ensemble d'outils qui permet de compiler des sources en paquets installables .pkg.tar.xz.

Qu'est-ce qu'un système dit ports-like

Ports est un système utilisé dans les systèmes *BSD qui automatise le processus de constructions des logiciels à partir du code source. Le système utilise un port pour télécharger, extraire, patcher, compiler et installer un logiciel donné.

ABS est un concept similaire

ABS est une arborescence qui peut être récupérée à l'aide de SVN. Cette arborescence représente les paquets officiels d'Arch, mais elle ne les contient pas. Les sous-répertoires de l'arborescence ne contiennent ni le paquet logiciel ni les sources, mais simplement un fichier PKGBUILD et quelques fois d'autres fichiers. En exécutant la commande makepkg à l'intérieur d'un répertoire contenant un PKGBUILD, le logiciel sera compilé puis empaqueté, et pacman pourra être utilisé pour installer le paquet créé.

Aperçu d'ABS

ABS est devenu un terme général qui regroupe un ensemble de composants. Ce n'est plus un outil en lui-même.

L'arbre SVN 
L'arborescence qui contient toutes les recettes qui permettent de créer les paquets officiels. Disponible sur ce dépôt svn et ce dépôt git.
PKGBUILD 
La recette du paquet, qui contient un lien vers le code source du logiciel, ainsi qu'un ensemble d’instructions qui permettent de créer le paquet.
makepkg 
L'outil en ligne de commande qui lit le PKGBUILD, télécharge les sources puis les compile pour créer un paquet .pkg.tar.xz.
pacman 
Le gestionnaire de paquets, qui satisfait les dépendances nécessaires à la création du paquet. Il permet aussi d'installer ou de désinstaller les paquets créés.
Attention : Les PKGBUILDs officiels partent du principe que les paquets sont compilés dans un environnement "propre". Construire des paquets dans un environnement "sale" peut faire échouer la procédure ou causer un comportement indésirable lors de l'exécution du logiciel.

L'arbre SVN

Les dépôts core, extra, et testing sont dans le dépôt SVN nommé packages. Les dépôts community et multilib sont dans le dépôt SVN nommé community.

Tous les paquets ont leur propre sous-répertoire. À l'intérieur se trouve les répertoires suivants :

  • repos : contient les fichiers utilisés dans les paquets officiels.
  • trunk : contient les fichiers utilisés par les développeurs avant qu'ils ne soient copiés dans repos.

Par exemple, l'arbre du paquet acl ressemble à ceci :

acl
acl/repos
acl/repos/core-i686
acl/repos/core-i686/PKGBUILD
acl/repos/core-x86_64
acl/repos/core-x86_64/PKGBUILD
acl/trunk
acl/trunk/PKGBUILD

Pourquoi voudrais-je utiliser ABS ?

ABS peut être utilisé pour :

  • Compiler ou recompiler un paquet (une mise à jour de bibliothèque par exemple)
  • Personnaliser un paquet (par exemple en modifiant les options de compilation)
  • Recompiler le système en entier pour gagner des millisecondes à l'exécution.

ABS n'est pas nécessaire pour utiliser Arch Linux, mais est utile pour automatiser certaines tâches de compilation.

Comment utiliser ABS ?

Pour récupérer le PKGBUILD d'un paquet officiel et ses fichiers associés, vous pouvez utiliser svn ou git.

En utilisant Git

Tout d'abord, vous devez installer le paquet asp.


Si vous désirez simplement récupérer le répertoire sans vous soucier du dépôt Git, vous pouvez utiliser la commande suivante :

asp export nomdupaquet

Cela va créer un répertoire nomdupaquet avec les fichiers sources à l'instant T, mais il ne sera pas possible d'utiliser la commande git dans ce répertoire.


Pour récupérer le dépôt SVN vers Git d'un paquet, utilisez :

asp checkout nomdupaquet

Cela va cloner le dépôt Git du paquet nomdupaquet à l'intérieur d'un répertoire éponyme.


Pour mettre à jour le dépôt, utilisez la série de commandes suivantes à l'intérieur du répertoire nomdupaquet :

asp update
git pull


De plus, il est possible d'utiliser n'importe quelle commande git. Par exemple, pour récupérer une ancienne version du paquet :

git log # Pour voir l'historique des changements et l'ID du commit
git checkout idducommit # Pour restaurer les fichiers tels qu'ils l'étaient à l'ID de commit donné

Construire le paquet

Pour configurer makepkg, lisez makepkg#Configuration.

Pour utiliser makepkg, lisez makepkg#Utilisation.

Trucs et astuces

Préserver les paquets modifiés

Lors d'une mise à jour du système, Pacman va remplacer les paquets modifiés par les paquets officiels si une mise à jour est disponible. Si vous désirez conserver vos paquets modifiés, suivez les instructions suivantes :

Insérez le tableau groups dans le PKGBUILD, et par exemple ajoutez le paquet dans un groupe nommé abs.

PKGBUILD
groups=('abs')

Maintenant, ajoutez ce groupe dans la section IgnoreGroup du fichier /etc/pacman.conf :

/etc/pacman.conf
IgnoreGroup = abs

Si une nouvelle version officielle du paquet est disponible, un message d'avertissement apparaîtra lors de la mise à jour du système, et les paquets modifiés devront être recompilés pour éviter une mise à jour partielle.