Upgrader ses packages FreeBSD

J’ai un problème depuis longtemps avec les ports FreeBSD. Dans un premier temps je compilais tout, puis à la longue c’est assez lassant parce que ça prend du temps, des ressources et sur une machine peu puissante c’est pas franchement conseillé. Donc dans la plupart des cas j’utilise maintenant des paquet binaires compilés et distribués par le projet FreeBSD.

Je ne vais pas m’attarder à peser le pour et le contre puisqu’en réalité j’utilise aussi bien les ports que les paquets binaires suivant les dépendances du logiciel et le temps de compilation.

Environnement : FreeBSD 8.0-RELEASE i386 (à vous de changer suivant votre version et votre CPU)

Déjà une bonne chose à savoir :

$ ftp ftp://ftp.fr.freebsd.org/pub/FreeBSD/ports/i386/
....
250-descriptions of each subdirectory.
...
250-packages-*-release directories are built from the ports collection
250-shipped with the release, and are not updated thereafter.
250-
250-packages-*-stable and packages-*-current are updated roughly once a
250-week.
....

Les paquets qui nous intéressent sont donc dans packages-8-stable.

Pour installer un soft, il suffit d’un

# export PACKAGESITE="ftp://ftp.fr.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/Latest/"
# pkg_add -r firefox3

Pour mettre à jours c’est nettement moins marrant, surtout si vous utilisez conjointement un arbre des ports à jours dans /usr/ports. Les outils comme portmaster et portupgrade sont assez dur à utiliser pour mettre à jours en se basant non pas sur l’INDEX de /usr/ports mais sur celui du ftp.

D’ailleurs si quelqu’un à déjà réussi à faire proprement la manip je veux bien son /usr/local/etc/pkgtools.conf en commentaire de ce billet.

bapt est en train de porter pkgin sur FreeBSD, mais il n’est pas encore tout à fait prêt (il le sera bientôt j’espère, je ferrai un billet pour l’occasion).

Il y a une solution que j’ai trouvé sympatique en attendant pkgin, c’est les bsdadminscripts avec l’outil pkg_upgrade. C’est du shell, pas très rapide donc, mais au moins ça marche et c’est facile.

# make -C /usr/ports/sysutils/bsdadminscripts install clean

Ensuite c’est enfantin, pour tout mettre à jours et en mode verbeux :

# setenv PACKAGEROOT ftp://ftp.fr.freebsd.org
# setenv BRANCH 8-stable
# pkg_upgrade -av

Et ça marche ! Il se base sur le md5 du fichier INDEX du ftp pour savoir s’il faut mettre à jours sa base de donnée sur les ports puis compare les version installés avec les versions disponibles.

La page de man de pkg_upgrade vous donnera beaucoup d’information sur la manière dont il fonctionne.