このガイドは、DragonFlyBSD、FreeBSD、HardenedBSD オペレーティングシステムで機能するはずです。パッケージの更新/アップグレード_のみ_を対象としており、ベースシステムやカーネルには他のパッチを適用しません。

FreeBSD 15.0-RELEASE 以降を実行している場合、ベースシステムも pkg を通じて更新されます。そうでない場合は、引き続き freebsd-update を利用するか、ソースからビルドする必要があります。詳細につきましては、公式の FreeBSD Wiki またはハンドブックをご覧ください。

注意: このページに記載されているすべての手順は、あなたのサーバーが 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 時ごとに実行し、$RAND 変数に設定された値に応じてパッケージの更新プロセスを開始します。この変数は 1980 秒から 5940 秒 (つまり 33 分から 99 分) の間で待機時間を生成するように設定されています。

ここでの jot の使い方の詳細につきましてはこちらをご覧ください。匿名のサイファーパンクの方々に感謝します。必要に応じて、ご自身の環境に合わせて調整してください。

# echo "0 0 * * * root /bin/sh /root/bin/pkg-upgrade.sh" > /etc/cron.d/pkg-upgrade
  • 更新スクリプトの実行スケジュールを変更する場合は、crontab 構成を任意の値に設定します。

3. cron の再起動

最後に、cron デーモンを再起動して、設定の変更を適用します。

# service cron restart