Dépôt des utilisateurs d'Arch Linux

De ArchwikiFR

Arch User Repository est un dépôt communautaire auquel tous les utilisateurs d'Arch peuvent participer.

Il contient des descriptions de paquets, les PKGBUILD (similaires aux ports BSD), par opposition aux dépôts officiels qui contiennent des paquets binaires compilés, tout prêts.

AUR n'est donc pas un dépôt classique et en particulier, le contenu n'est pas systématiquement vérifié ni maintenu activement. Il faut donc être prudent lors de son utilisation.

AUR, depuis sa version 4.0.0, s'appuie sur un dépôt Git, ce qui permet (en partie) de suivre plus facilement les modifications effectuées par les mainteneurs de paquets.

À propos

L'utilisateur peut rechercher, télécharger la description d'un paquet depuis AUR, utiliser makepkg pour construire le paquet puis pacman pour installer ce dernier.

Important : Il est nécessaire d'installer le groupe base-devel qui constitue une dépendance implicite pour la plupart des paquets.
pacman -S base-devel

Utilisation

L'installation d'un paquet depuis AUR est un processus relativement simple.

Note : $pkgname remplace le nom du paquet.
Attention : la construction/compilation des paquets AUR doit se faire depuis le compte utilisateur et dans le home. Seule l'étape ultime d'installation du paquet compilé se fait en root/sudo

Récupération de l'archive

Récupération de l'archive correspondant à votre paquet depuis le site AUR, de préférence dans un dossier prévu à cet effet.

Avec git :

$ git clone https://aur.archlinux.org/$pkgname.git

Avec curl :

$ curl -L https://aur.archlinux.org/cgit/aur.git/snapshot/$pkgname.tar.gz | tar zx

Vérification

Vérifiez que le PKGBUILD et les fichiers qui l'accompagnent sont dignes de confiance et ne contiennent pas de code "malicieux".

Construction du paquet

Important : Nous vous rappelons que les paquets AUR sont produits par des utilisateurs. Toute utilisation des fichiers fournis se fait à vos propres risques. Vérifiez toujours l'ensemble des fichiers récupérés sur AUR :
  • Le PKGBUILD peut faire des dommages dans votre répertoire utilisateur, et dans le pire des cas exécuter un exploit.
  • Les fichiers .install sont exécutés avec les privilèges root, et ont donc carte blanche sur votre système.
  • Les fichiers .patch modifient le code source, et peuvent potentiellement ajouter une porte dérobée (backdoor).

Lancement de makepkg dans le répertoire contenant le PKGBUILD.

$ makepkg -si

Options couramment utilisées :

  • -s : Installe les dépendances manquantes.
  • -f : Écrase un paquet déjà compilé.
  • -i : Lance l'installation du paquet (pacman -U) après sa construction. Peut être combiné à --asdeps pour installer une dépendance.
  • -r : Désinstalle les paquets uniquement requis pour sa construction.
  • -A : Ignore l'architecture indiqué par le mainteneur.

Installation

Si on n'a pas utilisé makepkg avec les options -si, une fois le paquet compilé:

# pacman -U $pkname.tar.xz

L'option --asdeps peut être utilisée pour installer une dépendance.

Exemple non exhaustif

Voici un exemple avec un paquet contenant un fichier .install et un patch.

$ git clone https://aur.archlinux.org/oh-my-zsh-git.git
$ cd oh-my-zsh-git
$ less PKGBUILD
$ less oh-my-zsh-git.install
$ less 0001-zshrc.patch
$ makepkg -si

Assistants AUR

Les Assistants AUR permettent d'automatiser cette tâche.

Note : Selon la politique des développeurs d'Arch, il n'y aura jamais dans les dépôts officiels de logiciel permettant l'automatisation de l'installation d'un paquet depuis AUR.

Partage

Tout utilisateur peut soumettre, commenter ou voter pour un paquet sur AUR.

Retour

Souvent, un paquet peut devenir obsolète.
Les utilisateurs peuvent alors signaler au mainteneur qu'une nouvelle version est disponible en marquant le paquet comme périmé. De même, ils peuvent voter (ou enlever leur vote) ainsi que commenter le paquet.

Merci d'utiliser le pastebin pour soumettre une nouvelle version de PKGBUILD au mainteneur.

Important : les commentaires du site sont d'abord faits pour commenter la construction du paquet et non reporter les bugs du logiciel lui-même.

Dans la mesure du possible, merci de soumettre les bugs logiciels dans le bugtracker adéquat (souvent sur le site du logiciel, correspondant à l'url dans la description du paquet).

Soumission

La soumission se fait en ligne de commande, en se plaçant à la racine du répertoire du paquet.

Vous aurez évidemment besoin d'installer :

Clé SSH

Attention : Ces étapes sont à faire qu'une seule fois.
Créer une clé

Il est recommandé de créer une nouvelle clé RSA pour se connecter en SSH au dépôt Git de AUR, mais vous pouvez utiliser une clé existante si vous le préférez. Pour cela, utilisez la commande suivante, et rentrez un mot de passe pour cette clé :

ssh-keygen -f ~/.ssh/id_rsa-aur
Ajouter la clé au compte AUR

Ensuite, rendez-vous sur AUR, puis «Mon compte», puis dans le champ «SSH Public Key:» vous devez coller votre clé publique, à savoir ici le contenu du fichier ~/.ssh/id_rsa-aur.pub

Fichier de configuration

Enfin, pour simplifier les commandes (vu qu'un utilisateur et un port personnalisés sont utilisés), il est recommandé de modifier votre fichier de configuration SSH ~/.ssh/config pour y ajouter ceci :

Host aur.archlinux.org
IdentityFile ~/.ssh/id_rsa-aur
User aur
Port 22

Créer et modifier un paquet

Attention : Répéter ces étapes autant de fois que vous avez de paquets à soumettre.
Créer un nouveau paquet sur le dépôt Git
Note : Il faut préalablement avoir défini son nom d'utilisateur et son email dans git :
git config --global user.name  "John Doe"
git config --global user.email "johndoe@foobar.com"

Le fait de cloner un dépôt qui n'existe pas crée automatiquement un dépôt au nom du paquet ; vous êtes libre de cloner le dépôt où bon vous semble :

git clone ssh+git://aur@aur.archlinux.org/<nom_du_paquet>.git

Et dans votre répertoire courant, un répertoire <nom_du_paquet> vient d'être créé.

Note : Ne supprimez pas le répertoire caché <nom_du_paquet>/.git !


Si, pour une raison, vous désirez créer manuellement le dépôt, la commande suivante le permet :

ssh aur.archlinux.org setup-repo <nom_du_paquet>
Attention : Toutes les commandes qui suivent sont à exécuter depuis le répertoire du paquet, c'est-à-dire cd <nom_du_paquet>.
Créer les fichiers du paquet

Veuillez vous référer aux pages suivantes pour comprendre comment créer un paquet : Standard paquetage et PKGBUILD.

Maintenant, vous pouvez placer dans ce répertoire les fichiers constituant votre paquet, avec au minimum le fichier PKGBUILD ainsi que le fichier .SRCINFO.

Note : Tous ces fichiers à transmettre peuvent être retrouvés dans l'archive obtenue avec makepkg --source. Cette commande créera le fichier .SRCINFO qui se trouvera dans l'archive.
Astuce : Le fichier .SRCINFO peut être créé indépendamment via:
makepkg --printsrcinfo > .SRCINFO 

Une fois terminé, n'oubliez pas d'ajouter les nouveaux fichiers au dépôt Git :

git add PKGBUILD .SRCINFO <un_fichier> <un_autre_fichier>
Publier le paquet

Il faut commenter les changements, on peut le faire de façon globale (par exemple, on peut écrire «Initial commit» lors de la première soumission) :

git commit -a -m "Le message du commit que vous voulez"

Et l'étape finale, mettre cela sur le dépôt Git distant :

git push
Mettre à jour un paquet

Pour mettre à jour un paquet, la démarche peut un peu différer de celle vue plus haut. Modifiez d'abord le paquet à mettre à jour, et ensuite suivez les instructions suivantes.

En cas d'ajout de fichier, n'oubliez pas de faire :

git add <fichier>

En cas de suppression d'un fichier indexé, ne le supprimez pas directement, mais utilisez plutôt la commande :

git rm <fichier>

Pour soumettre les modifications, il est nécessaire d'exécuter les commandes suivantes :

makepkg --printsrcinfo > .SRCINFO  #Note : on peut mettre à jour le fichier .SCRINFO autrement (comme vu plus haut)
git commit -am 'Update to x.x.x'
git push
Note : Il est possible que les changements sur l'interface web ne soient pas immédiats, soyez patient !

Le dépôt [community]

Le dépôt [community] maintenu par des utilisateurs de confiance contient les paquets AUR les plus populaires.

Astuces

Changer son pseudo sur AUR

Il est possible de changer son nom d'utilisateur sur AUR en allant sur AUR, puis «Mon compte», et changez votre nom dans le champ «Nom d'utilisateur:». Cela n'affectera pas le dépôt Git.

Pour changer son nom dans vos futurs commits sur le Git, deux méthodes sont possibles :

- Méthode par dépôt : placez-vous dans le dépôt cloné, et tapez :

git config user.name "Nouveau pseudo pour le dépôt"

- Méthode globale : cela affectera tous les dépôts Git (y compris ceux qui ne sont pas de AUR), on peut utiliser la commande suivante :

git config --global user.name "Nouveau pseudo global"

De plus, il est possible, mais ce n'est pas recommandé, de changer le pseudo de vos anciens commits sur le Git. Il faut d'abord se placer dans le dépôt en question, puis faites :

git filter-branch --env-filter 'export GIT_AUTHOR_EMAIL="votreadressemail@exemple.com";GIT_AUTHOR_NAME="Nouveau pseudo"'

Par la suite, pour que les modifications soient effectives sur le Git, il faudra forcer le push (la commande pour cette action est volontairement omise).

Retenir la passphrase pour ce terminal

Il est possible de ne pas retaper la passphrase grâce à l'agent SSH. On peut créer un alias couplé à une fonction dans le fichier de configuration de son shell (comme ~/.bashrc) qui ne demandera qu'une seule fois la phrase de passe, tel que celui-ci :

_git() {
	if [[ $1 == "push" ]]; then
		[[ -z $(pidof ssh-agent) ]] && eval $(ssh-agent)
		if [[ -n $(pidof ssh-agent) ]]; then
			ssh-add -l | grep -q ".ssh/id_rsa-aur" || (grep -q "url = ssh+git://aur@aur.archlinux.org/" "$(git rev-parse --show-toplevel)/.git/config" && ssh-add ~/.ssh/id_rsa-aur)
		else
			echo "L'agent SSH n'est pas en cours !"
		fi
	elif [[ $1 == "clone" ]]; then
		[[ -z $(pidof ssh-agent) ]] && eval $(ssh-agent)
		if [[ -n $(pidof ssh-agent) ]]; then
			ssh-add -l | grep -q ".ssh/id_rsa-aur" || (echo $2 | grep -q "ssh+git://aur@aur.archlinux.org/" && ssh-add ~/.ssh/id_rsa-aur)
		else
			echo "L'agent SSH n'est pas en cours !"
		fi
	fi

	git $@
 }

 _ssh() {
	if [[ $@ == *"aur.archlinux.org"* ]]; then
		ssh-add -l | grep -q ".ssh/id_rsa-aur" || ssh-add ~/.ssh/id_rsa-aur
	fi

	ssh $@
 }

 alias git='_git'
 alias ssh='_ssh'

Si votre clé n'est pas ~/.ssh/id_rsa-aur, adaptez ce script en conséquence (attention à ne pas ajouter des ~/ là où il n'y en a pas). Pour l'utilisation, ne changez rien à vos habitudes, la passphrase ne vous sera demandée qu'une seule fois.

Commandes possibles via SSH

Le serveur accepte certaines commandes via SSH. Une liste complète des commandes est accessible en exécutant la commande suivante :

ssh aur.archlinux.org help

FAQ

Q: Qu'est-ce qu'AUR ?

R: AUR est un endroit où la communauté Arch Linux peut téléverser (upload) le PKGBUILD des applications, bibliothèques, etc., et de ce fait le partager avec le reste de la communauté. Les utilisateurs enregistrés peuvent ensuite voter pour leurs applications favorites afin qu'elles soient éventuellement déplacés vers le dépôt [community].

Q: Qu'est-ce qu'un TU ?

R: Un Utilisateur de confiance est une personne choisie pour surveiller AUR et le dépôt [community], elle maintient ce dépôt ainsi qu'AUR.

Q: Combien de votes faut-il pour avoir un paquet déplacé vers [community] ?

R: Un minimum de 10 votes sont requis, néanmoins, si un TU veut maintenir un paquet, il le fera. De plus, certains paquets tels que les assistants AUR ne seront jamais déplacés dans [community].

Q: Comment faire un PKGBUILD ?

R: Le point de départ pourrait être la page PKGBUILD.

Q: Foo dans AUR est périmé ; je fais quoi ?

R: Pour commencer, vous pouvez le marquer comme étant périmé. S'il le reste pendant un long moment, vous pouvez envoyer un mail au mainteneur. S'il n'y a pas de réponse, vous pouvez envoyez un mail à la liste de diffusion aur-general (en anglais) afin qu'un TU le rende orphelin pour que vous puissiez le maintenir si tel est votre souhait.

Q: J'ai un PKGBUILD que je voudrais soumettre, quelqu'un peut-il le vérifier ?

R: En plus des outils tel que namcap, vous pouvez le poster sur le forum ou le proposer sur IRC ; de même vous pouvez le proposer à la liste de diffusion aur-general (en anglais).

Q: Foo dans AUR ne compile pas, que dois-je faire ?

R: Refaire les étapes, sans oublier de lire les commentaires sur sa page AUR et éventuellement laisser un commentaire au mainteneur.