Arch User Repository (Français)
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.
base-devel
qui constitue une dépendance implicite pour la plupart des paquets.
pacman -Syu base-devel
Utilisation
L'installation d'un paquet depuis AUR est un processus relativement simple.
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
- 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.
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.
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 :
- openssh pour la partie clé SSH
- git pour maintenir vos paquets.
Clé SSH
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
Créer un nouveau paquet sur le dépôt 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éé.
<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>
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
.
makepkg --source
. Cette commande créera le fichier .SRCINFO
qui se trouvera dans l'archive..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
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
Qu'est-ce qu'AUR ?
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]
.
Qu'est-ce qu'un TU ?
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.
Combien de votes faut-il pour avoir un paquet déplacé vers [community] ?
Un minimum de 10 votes sont requis, néanmoins, si un utilisateur de confiance veut maintenir un paquet, il le fera. De plus, certains paquets tels que les assistants AUR ne seront jamais déplacés dans [community].
Comment faire un PKGBUILD ?
Le point de départ pourrait être la page PKGBUILD (Français).
Foo dans AUR est périmé ; je fais quoi ?
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 utilisateur de confiance le rende orphelin pour que vous puissiez le maintenir si tel est votre souhait.
J'ai un PKGBUILD que je voudrais soumettre, quelqu'un peut-il le vérifier ?
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).
Foo dans AUR ne compile pas, que dois-je faire ?
Refaire les étapes, sans oublier de lire les commentaires sur sa page AUR et éventuellement laisser un commentaire au mainteneur.