AUR

De Banane Atomic
Révision datée du 1 mai 2017 à 18:50 par Nicolas (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigationAller à la recherche

Description

Arch User Repository est un dépôt de fichiers PKGBUILD maintenu par les utilisateurs.
Pour les dépôt contenant des fichiers binaires voir Unofficial User Repositories

Installation d'un paquet depuis AUR

Bash.svg
# la méthode la plus simple est l'utilisation de yaourt
yaourt paquet_à_installer

# sinon téléchargez l'archive *.tar.gz et extraire son contenu
# installation des dépendances et création du fichier *.pkg.tar.xz
makepkg -s

# installez le paquet
sudo pacman -U *.pkg.tar.xz
Les fichiers temporaires se trouvent dans /tmp/yaourt-tmp-[UTILISATEUR]/[PAQUET]

Yaourt

Création d'un paquet

PKGBUILD

PKGBUILD
# Maintainer: name <email@email.fr>
# Contributor: name <email@email.fr>
pkgname="nom du programme"
pkgver=1.0.0  # version du programme
pkgrel=1      # version du paquet
pkgdesc="Description"

# pour un paquet sans architecture (scripts, fonts, themes) → 'any'
# pour un paquet qui peut être compilé dans les deux architectures → 'i686' 'x86_64'
arch=('i686' 'x86_64' 'any')
url="http://www.fr"
license=('GPL3') # doit exister dans /usr/share/licenses/common/

# dépendances nécessaire
depends=('pkg1' 'pkg2')
# dépendances pour la compilation
makedepends=('pkg1' 'pkg2')

options=(!strip !emptydirs)

# script d'installation
install=gartoon-redux.install

# liste des fichiers à ne pas écraser lors de l'installation, ils seront installés avec l'extension *.pacnew
backup=('usr/share/mime/packages/Override.xml')

# liste des url des fichiers à télécharger et liste des noms de fichiers locaux
source=("http://www.fr/$pkgname-$pkgver.tar.gz" "fichier local.ext")
md5sums=()      # updpkgsums permet de remplir ce champs
md5sums=(SKIP)  # pas de vérification

# ne pas compresser le paquet en .pkg.tar.xz
PKGEXT=".pkg.tar"

prepare() {
    # patch
}

# Compile le programme et créé le dossier pkg
build() {
    cd "$srcdir/$pkgname-$pkgver"
    make
}

package() {
    install -Dm 644 "$srcdir/$pkgname-$pkgver/$pkgname" "$pkgdir/usr/bin/$pkgname"
}

Prototype : /usr/share/pacman/PKGBUILD.proto
Variables de chemin :

  • srcdir : chemin absolu vers le dossier contenant les sources. Normalement src.
  • pkgdir : chemin absolu vers le dossier contenant les fichiers à installer. Normalement pkg.
  • startdir : chemin absolu vers le dossier courant.

Variables

  • depends : paquets qui doivent être installés pour que le programme fonctionne.
    depends=('mono>=2.6.7')
  • makedepends : paquets qui doivent être installés pour construire le programme mais inutile à son fonctionnement
  • Remplacer les _ par des - pour $pkgver : ${pkgver/_/-}
  • $CARCH : arch
  • options: default: OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !optipng !upx !debug)
    A negated option will do the opposite of the comments below.
    • strip: Strip symbols from binaries/libraries
    • docs: Save doc directories specified by DOC_DIRS
    • libtool: Leave libtool (.la) files in packages
    • staticlibs: Leave static library (.a) files in packages
    • emptydirs: Leave empty directories in packages
    • zipman: Compress manual (man and info) pages in MAN_DIRS with gzip
    • purge: Remove files specified by PURGE_TARGETS
    • upx: Compress binary executable files using UPX
    • optipng: Optimize PNG images with optipng
    • debug: Add debugging flags as specified in DEBUG_* variables

Commande install

Bash.svg
# Créé au besoin /chemin
install -d /chemin

# copie /chemin/fichier.ext vers /destination/fichier.ext et créé au besoin /destination
install -D /chemin/fichier.ext /destination/fichier.ext

# copie /chemin/fichier.ext vers /destination/fichier.ext change les droits d'accès au fichier
install -m 644 /chemin/fichier.ext /destination/fichier.ext

# créé un nouveau fichier et change les droits d'accès au fichier
install -m 666 /dev/null /destination/fichier.ext
Pas de copie récursive avec « install », utiliser plutôt « cp -R »

Modifier PATH

PKGBUILD
install -D -m 755 /dev/null "$pkgdir/etc/profile.d/MonPaquet.sh"
echo '#!/bin/sh -f

export PATH=/chemin:${PATH}' > "$pkgdir/etc/profile.d/MonPaquet.sh"

Fichier .install

On doit y faire référence dans le fichier PKGBUILD

PKGBUILD
install=paquet.install
paquet.install
post_install() {
  # lancez des commandes avec root
  echo 'Affichez du texte'
}

post_upgrade() {
  # réutilisation des commandes de post_install
  post_install
}

post_remove() {
  /bin/true
}

Création de l'archive

Bash.svg
# création d'un fichier tar.gz
makepkg -S

Test

Bash.svg
# installer namcap
sudo pacman -S namcap

# tester le fichier PKGBUILD
namcap PKGBUILD

# tester le fichier *.pkg.tar.xz
namcap *.pkg.tar.xz

Envoyer un paquet

Clé SSH

  1. Créer des clés SSH au besoin
  2. Se connecter à son compte sur le site AUR → My Account → SSH Public Key
  3. Remplir avec le contenu de la clé SSH publique (~/.ssh/id_rsa.pub)

Création / mise à jour

Bash.svg
git clone ssh://aur@aur.archlinux.org/<Nom du Paquet>.git

# créer ou mettre à jour SRCINFO
mksrcinfo
# fournit dans le paquet pkgbuild-introspection

# ajout de nouveaux fichiers
git add PKGBUILD .SRCINFO

# commit avec message
git commit -m 'Initial import'

# envoie des modifications au serveur AUR
git push origin master

Déployer un fichier *.desktop

PKGBUILD
install=paquet.install

source=(... paquet.desktop paquet.png)

package() {
    ...
    install -Dm 644 "$srcdir/paquet.desktop" "$pkgdir/usr/share/applications/paquet.desktop"
    install -Dm 644 "$srcdir/paquet.png" "$pkgdir/usr/share/pixmaps/paquet.png"
}
paquet.install
post_install() {
  post_upgrade
}

post_upgrade() {
  update-desktop-database -q
}