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