A.6. Utiliser Portsnap
Précédent | Annexe A. Se procurer FreeBSD | Suivant

## A.6. Utiliser Portsnap

### A.6.1. Introduction

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.

### Note:

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`.

### A.6.2. Installation

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.

### A.6.3. Configuration de 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).

### Note:

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

### A.6.4. Exécuter Portsnap pour la première fois

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

### Note:

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`.

### A.6.5. Mettre à jour l'arborescence des logiciels portés

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

### Note:

Des versions anciennes de `portsnap` ne supporte pas cette syntaxe; en cas d'échec, utilisez à la place ceci:

    # portsnap fetch
    # portsnap update

### A.6.6. Exécuter Portsnap à partir de cron

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=

### Note:

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.

### Note:

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`.

Précédent | Niveau supérieur | Suivant
A.5. Utiliser CVSup | Sommaire | A.7. Etiquettes CVS

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>.