Aller au contenu

AUR

De Banane Atomic
Version datée du 6 juin 2020 à 10:22 par Nicolas (discussion | contributions) (Création / mise à jour)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

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

# la méthode la plus simple est l'utilisation de yay
yay 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]

Yay

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

# 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

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

Test

# 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

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

# créé ou met à jour le fichier .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
}