Это руководство должно работать для операционной системы DragonFlyBSD, FreeBSD и HardenedBSD. Оно охватывает ТОЛЬКО обновления пакетов и не применяет никаких других исправлений к базовой системе или ядру.

Если вы используете FreeBSD 15.0-RELEASE или выше, базовая система также будет обновляться через pkg. В противном случае вам по-прежнему потребуется использовать freebsd-update или сборку из исходного кода. Для получения дополнительной информации ознакомьтесь с официальной Wiki FreeBSD или Руководством.

ПРИМЕЧАНИЕ: Все шаги, описанные на этой странице, предполагают, что ваш сервер предназначен для функционирования узла Tor (моста/сторожевого/выходного). Обратите внимание, что службы будут перезапущены во время процесса автоматического обновления программного обеспечения, описанного здесь.

1. Создайте скрипт обновления

Давайте используем /root/bin/pkg-upgrade.sh для нашей настройки. Вот как это должно выглядеть:

#!/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. Задайте график обновления cron

Для этого конкретного расписания мы предпочитаем запускать скрипт ежедневно в 0:00 (в зависимости от вашего часового пояса) и запускаем сам процесс обновления пакетов в зависимости от значения, установленного для переменной $RAND - она настроена на создание спящего режима от 1980 до 5940 секунд (от 33 до 99 минут).

Дополнительную информацию об использовании jot можно найти здесь — спасибо нашим анонимным шифропанкам. Адаптируйте это под свои нужды, если такой вариант вам больше подходит.

# echo "0 0 * * * root /bin/sh /root/bin/pkg-upgrade.sh" > /etc/cron.d/pkg-upgrade
  • Если вы хотите изменить запланированное выполнение скрипта обновления, настройте параметр crontab settings на значение, которое вы хотите использовать.

3. Перезапустите cron

Наконец, перезапустите демон cron, чтобы внесенные в конфигурацию изменения вступили в силу.

# service cron restart