Je teste une configuration compliquée de mes packages AUR. Jusqu’à présent je me suis reposé sur le dépôt archlinuxfr, mais c’est trop tentant de ne pas contrôler les fichiers PKGBUILD. Je me lance donc dans un workflow plus sécurisé.
Pour se faire, je vais créer mon dépôt non-officiel. Contruire et signer mes packages.
Mise en place
Le dépôt
Pour notre dépôt non-officiel, il nous faut simplement un serveur HTTP, avec la possibilité de modifier son contenu ; ici on va utiliser sshfs. Notre serveur aura pour nom de domaine repo.example.org.
Le dossier doit avoir la structure suivante:
/path/to/repo
├─ x86_64
└─ armv7h
Le packager
Sur sa machine, le packager à besoin d’une paire de clé GPG avec une identité:
<John Doe (Arch packager) <john.doe@example.org>
Ici j’ai précisé la fonction packager dans l’identité. La clé publique doit être exportée dans un fichier.
On configure l’outil makepkg dans ~/.makepkg.conf:
PACKAGER="John Doe (Arch packager) <john.doe@example.org"
GPGKEY=0123456789ABCDEF0123456789ABCDEF01234567
BUILDENV=(!distcc color !ccache check sign)
On précise l’identité, et le fait de signer les packages.
#. L’utilisateur
L’utilisateur ajoute le dépôt dans packman.conf
[example]
SigLevel = Required
Server = https://repo.example.org/$arch
Il doit aussi récupérer la clé publique et l’ajouter dans son trousseau:
# packman-key --add key.asc
# packman-key --lsign 0123456789ABCDEF0123456789ABCDEF01234567
Ajout de packages
Le packager commence par monter le serveur
$ mkdir $XDG_RUNTIME_DIR/repo
$ sshfs john.doe@example.org/path/to/repo $XDG_RUNTIME_DIR/repo
Le packager récupère les PKGBUILD, compile avec makepkg. Il déplace le fichier compressé et sa signature dans $XDG_RUNTIME_DIR/repo/$arch et, dans ce dossier fait:
$ cd $XDG_RUNTIME_DIR/repo/$arch
$ repo-add --sign -k 0123456789ABCDEF0123456789ABCDEF01234567 example.db.xz pkg…
Installation de packages
À la régulière.