Portsnap est un système de distribution sécurisée du catalogue des logiciels portés de FreeBSD. Approximativement chaque heure, un « instantané » du catalogue des logiciels portés est généré, rassemblé et signé de manière chiffrée. Les fichiers résultants sont alors distribués par l'intermédiaire du protocole HTTP.
Tout comme CVSup, Portsnap utilise un modèle de mise à jour de type pull: le catalogue des logiciels portés packagé et signé est placé sur un serveur Web qui attend les requêtes des clients. Les utilisateurs doivent soit exécuter manuellement portsnap(8) pour télécharger les mises à jour, soit configurer cron(8) pour un téléchargement régulier et automatique des mises à jour.
Pour des raisons techniques,
Portsnap ne met pas à jour
le catalogue des logiciels portés directement dans le
répertoire /usr/ports
; le logiciel travaille
plutôt par défaut sur une version
compressée de l'arborescence des logiciels
portés dans le répertoire /var/db/portsnap
. Cette copie
compressée est ensuite utilisée pour mettre
à jour le catalogue des logiciels portés.
Si Portsnap est
installé à partir du catalogue des logiciels
portés de FreeBSD, alors l'emplacement par défaut
pour son instantané compressé sera /usr/local/portsnap
au lieu de
/var/db/portsnap
.
Sous FreeBSD 6.0 et les versions plus récentes, Portsnap fait partie du système de base de FreeBSD. Sous des versions plus anciennes de FreeBSD, il peut être installé à partir du logiciel porté ports-mgmt/portsnap.
L'exécution de Portsnap
est contrôlée par le fichier de configuration
/etc/portsnap.conf
. Pour la plupart des
utilisateurs, le fichier de configuration par défaut
sera suffisant; pour plus de détails, consultez la page
de manuel portsnap.conf(5).
Si Portsnap est
installé à partir du catalogue des logiciels
portés, il utilisera
/usr/local/etc/portsnap.conf
comme
fichier de configuration au lieu de
/etc/portsnap.conf
. Ce fichier n'est pas
créé lors de l'installation du logiciel, mais un
fichier d'exemple est fourni; pour le copier à son
emplacement correct, utilisez la commande suivante:
#
cd /usr/local/etc && cp portsnap.conf.sample portsnap.conf
Au premier lancement de la commande portsnap(8), il
sera nécessaire de télécharger un
instantané compressé de
l'intégralité de l'arborescence des logiciels
portés dans /var/db/portsnap
(ou /usr/local/portsnap
si
Portsnap a été
installé à partir du catalogue des logiciels
portés). Au début de l'année 2006, cela
représentait un téléchargement d'environ
41 Mo.
#
portsnap fetch
Une fois que l'instantané compressé a
été récupéré, une copie
utilisable de l'arborescence des logiciels portés peut
être extraite dans le répertoire /usr/ports
. Cela est
nécessaire même si une arborescence a
déjà été créée dans
ce répertoire (par exemple en utilisant
CVSup), puisque cela met en place
une version de référence à partir de
laquelle portsnap
peut déterminer
plus tard quelles parties du catalogue des logiciels
portés a besoin d'une mise à jour.
#
portsnap extract
Dans l'installation par défaut de FreeBSD /usr/ports
n'est pas
créé. Si vous utilisez FreeBSD 6.0-RELEASE,
ce répertoire doit être créé avant
d'utiliser la commande portsnap
. Sur les
versions de FreeBSD plus récentes ou de
Portsnap, cette
création est effectuée automatiquement à
la premiere utilisation de la commande
portsnap
.
Après qu'un instantané initial du catalogue
des logiciels portés ait été
récupéré puis décompressé
dans le répertoire /usr/ports
, la mise à jour
du catalogue se divise en deux étapes: la
récupération (fetch) des
mises à jour de l'instantané, et leur
utilisation pour mettre à jour
(update) le catalogue des logiciels
portés en tant que tel. Ces deux étapes peuvent
être effectuées par l'intermédiaire d'une
seule commande portsnap
:
#
portsnap fetch update
Des versions anciennes de portsnap
ne
supporte pas cette syntaxe; en cas d'échec, utilisez
à la place ceci:
#
portsnap fetch
#
portsnap update
Afin d'éviter tout problème
« d'embouteillage » lors de l'accès aux
serveurs Portsnap,
portsnap fetch
ne fonctionnera pas à
partir d'une tâche cron(8). Il existe, à la
place, une commande portsnap cron
spécifique, qui patiente durant un délai
aléatoire pouvant aller jusqu'à 3600 secondes
avant de récupérer les mises à
jour.
De plus, il est fortement recommandé de ne pas
exécuter portsnap update
à
partir d'une tâche cron
, puisque cela
peut être à l'origine de graves problèmes
si la commande a lieu au même moment qu'un logiciel
porté est en train d'être compilé ou
installé. Cependant, les fichiers
INDEX
peuvent être mis à
jour sans risque, et cela peut être fait en passant
l'indicateur -I
à la commande
portsnap
(bien entendu si portsnap
-I update
est exécuté à par
cron
, il sera alors nécessaire de
lancer portsnap update
sans l'option
-I
ultérieurement pour mettre à
jour le reste de l'arborescence).
L'ajout de la ligne suivante dans le fichier
/etc/crontab
demandera à
portsnap
de mettre à jour son
instantané compressé et les fichiers
INDEX
du répertoire /usr/ports
, et enverra un courrier
électronique si un logiciel porté
installé n'est pas à jour:
0 3 * * * root portsnap -I cron update && pkg_version -vIL=
Si l'horloge système n'est pas positionnée
sur le fuseau horaire local, remplacez 3
par une valeur quelconque comprise entre 0 et 23, afin de
répartir de manière plus
équilibrée la charge sur les serveurs
Portsnap.
Des versions anciennes de portsnap
ne
supportent pas l'utilisation de commandes multiples (par
exemple cron update
) lors de la même
invocation de portsnap
. Si la ligne
précédente échoue, essayez de remplacer
portsnap -I cron update
par
portsnap cron && portsnap -I
update
.
Ce document, ainsi que d'autres peut être téléchargé sur ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Pour toutes questions à propos de FreeBSD, lisez la
documentation avant de contacter
<questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez
<doc@FreeBSD.org>.