Le présent wiki a été migré vers wiki.archlinux.org.
Ce Wiki a été archivé. Toute contribution doit donc désormais se faire là-bas. Cette page de Wiki possède donc potentiellement des informations qui ne sont plus à jour !
Dépôt des utilisateurs d'Arch Linux
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.
Sommaire
[masquer]- 1 À propos
- 2 Utilisation
- 3 Partage
- 4 Le dépôt [community]
- 5 Astuces
- 6 FAQ
- 6.1 Q: Qu'est-ce qu'AUR ?
- 6.2 Q: Qu'est-ce qu'un TU ?
- 6.3 Q: Combien de votes faut-il pour avoir un paquet déplacé vers [community] ?
- 6.4 Q: Comment faire un PKGBUILD ?
- 6.5 Q: Foo dans AUR est périmé ; je fais quoi ?
- 6.6 Q: J'ai un PKGBUILD que je voudrais soumettre, quelqu'un peut-il le vérifier ?
- 6.7 Q: Foo dans AUR ne compile pas, que dois-je faire ?
À 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.
pacman -S 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éé.
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>
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 --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