本指南適用於 DragonFlyBSD、FreeBSD 和 HardenedBSD 作業系統。它 僅 涵蓋軟體包更新/升級,並且不會對基礎系統或核心套用任何其他修補程式。
如果您使用的是 FreeBSD 15.0-RELEASE 或更高版本,基本系統也會透過 pkg 進行更新。否則,您仍然需要依賴 freebsd-update 或從原始程式碼建置它。欲了解更多信息,請參閱官方FreeBSD Wiki或Handbook。
注意:此頁記錄的所有步驟是將伺服器視為專用於提供 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 作業
對於這個特定的計劃,我們選擇每 0h00 運行一次腳本(取決於您的時區),並將根據 $RAND 變數設定的值觸發軟體包更新過程本身 - 它配置為在 1980 到 5940 秒(或:33 到 99 分鐘)之間產生 睡眠。
有關 jot 使用的更多資訊可以在 here 中找到 - 感謝我們的匿名密碼朋克。如果它更適合您,請根據您的需求進行調整。
# echo "0 0 * * * root /bin/sh /root/bin/pkg-upgrade.sh" > /etc/cron.d/pkg-upgrade
3. 重啟 cron
最後,重新啟動 cron 服務以套用設定變更。
# service cron restart