Ce guide devrait fonctionner pour les systèmes d’exploitation DragonFlyBSD, FreeBSD et HardenedBSD. Il couvre UNIQUEMENT les mises à jour de paquets, et n’applique aucun autre correctif au système de base ou au noyau.

Si vous utilisez FreeBSD 15.0-RELEASE ou une version supérieure, le système de base sera lui aussi mis à jour via pkg. Sinon, vous devrez encore vous appuyer sur freebsd-update ou le compiler à partir des sources. Pour plus d’informations, consultez le wiki FreeBSD officiel ou le Handbook.

REMARQUE : toutes les étapes documentées sur cette page supposent que votre serveur est dédié à la fourniture d’un service de relais Tor (bridge/garde/sortie). Sachez que les services seront redémarrés pendant le processus de mise à jour automatique du logiciel documenté ici.

1. Créer le script de mise à jour

Utilisons /root/bin/pkg-upgrade.sh pour notre installation. Voici à quoi il doit ressembler :

#!/bin/sh
PATH="/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
RAND=$(jot -r 1 1980 5940)
ENV="BATCH=yes IGNORE_OSVERSION=yes"
sleep ${RAND}
env ${ENV} pkg update -q -f && \
env ${ENV} pkg upgrade -q -U -y --fetch-only && \
env ${ENV} HANDLE_RC_SCRIPTS=yes pkg upgrade -q -U -y

2. Programmer une tâche cron

Pour cette planification particulière, nous choisissons d’exécuter le script chaque jour à 0 h 00 (selon votre fuseau horaire) ; il déclenchera lui-même le processus de mise à jour des paquets selon la valeur de la variable $RAND, configurée pour produire un sleep entre 1980 et 5940 secondes (soit entre 33 et 99 minutes).

Vous trouverez ici plus d’informations sur l’utilisation de jot dans ce contexte, grâce à nos cypherpunks anonymes. Adaptez cela à vos besoins si cette approche vous convient mieux.

# echo "0 0 * * * root /bin/sh /root/bin/pkg-upgrade.sh" > /etc/cron.d/pkg-upgrade
  • Si vous souhaitez modifier l’exécution planifiée du script de mise à jour, configurez vos paramètres crontab avec la valeur de votre choix.

3. Redémarrer cron

Enfin, redémarrez le démon cron pour que les changements de configuration soient utilisés.

# service cron restart