pkgin est un outil de gestion de paquets binaires pour pkgsrc, le système de paquets de NetBSD. Pour pouvoir l’utiliser il faut donc des paquets binaires, sauf que les binaires ne sont officiellement disponibles que pour les releases trimestrielles de pkgsrc. Quand on suit pkgsrc-current, il faut donc compiler les paquets et fabriquer un dépôt.

La solution consiste donc à utiliser l’équipe habituelle pour compiler les paquets sans gêner le système : pkg_comp et pkg_chk. Pour le dépôt on a simplement besoin d’un serveur web pour les mettre à disposition.

Voici un petit résumé de la procédure :

​1. A partir d’une machine ayant l’ensemble de ses paquets déjà installés, on met en place un chroot pkg_comp comme indiqué sur le wiki.

​2. On génère la liste des paquets à construire à partir des paquets installé avec pkg_chk :

# pkg_chk -g

​3. On les compile dans le chroot :

# pkg_comp build pkgtools/pkg_chk
# pkg_comp chroot pkg_chk -ua

​4. On génère le fichier pkg_summary qui va bien :

# cd /usr/pkgsrc/packages/All
# pkg_info -X *.tgz | bzip2 > pkg_summary.bz2

​5. On ajoute le définition du dépôt local dans la configuration de pkgin, en éditant /usr/pkg/etc/pkgin/repositories.conf :

file:///usr/pkgsrc/packages/All

On peut enfin utiliser pkgin pour ajouter et supprimer des paquets. Il suffit de regénérer le pkg_summary à chaque nouvelle compilation de paquet dans le chroot.

Pour l’upgrade, il faut pouvoir ne garder que les paquets les plus à jour dans le dépôt, pour cela l’outil pkg_tarup entre en jeu, il permet de générer les paquets binaires à partir de l’installation courante.

Après une upgrade avec pkg_chk dans le chroot, on peut mettre à jour le dépôt :

# pkg_comp build pkgtools/pkg_tarup
# rm /usr/pkgsrc/packages/All/*
# pkg_comp chroot pkg_tarup -a -d /usr/pkgsrc/packages/All \\'*\\'
# cd /usr/pkgsrc/packages/All
# pkg_info -X *.tgz | bzip2 > pkg_summary.bz2

Enfin, pour mettre à jour avec pkgin :

# pkgin up
# pkgin fug