portsのアップデートに関するメモ
基本的にはTAKE-LABOさんのサイトに準じた内容です。 感謝。
portsのファイル入手
オーストラリアなら (でも、”36428 KB 2007/02/23 0:00:00″だったりするので古くないか?ここは)
ftp://ftp.au.freebsd.org/pub/freebsd/ports/ports/ports.tar.gz
日本ならここ (“38506 KB 2007/12/08 1:08:00″で割と新しい)
ftp://ftp.jp.freebsd.org/pub/FreeBSD/ports/ports/ports.tar.gz
本場(米国) (“38657 KB 2007/12/30 1:09:00” ここだとやっぱり新しい)
ftp://ftp.freebsd.org/pub/FreeBSD/ports/ports/ports.tar.gz
とにかく回線速度と日付と相談して適当にports.tar.gzを入手。
root権限で
# tar -zxvf ports.tar.gz -C /usr/
して/usr/portsに展開。
portupgrade
次にportsを最新の状態に保つために portupgrade をインストール。
この際にperlの最新版(5.8.8_1)とRuby(1.8.6.111_1,1)が一緒にインストールされました。
(注: “sysutils/portupgrade” ではなく ”ports-mgmt/portupgrade” に場所が変わってます。)
# mkdir /var/log/ports
# cd /usr/ports/ports-mgmt/portupgrade
# make | tee -a /var/log/ports/portupgrade.log
# make install | tee -a /var/log/ports/portupgrade.log
# make clean | tee -a /var/log/ports/portupgrade.log
# source ~/.cshrc
# mkdir /usr/ports/packages
# mkdir /usr/ports/packages/All
これで今後は make ではなく portinstall / portupgrade を使ってportsのインストールやアップグレードをすることになります。その際にログを残すために /usr/local/etc/pkgtools.conf の最後の部分を
PORTUPGRADE_ARGS = ENV['PORTUPGRADE'] || \
'-v -D -L /var/log/ports/'
のように書き換えておきます。
portaudit
portsのセキュリティチェックをするためにportauditのインストール。
単に
# portinstall portaudit
でOKです。portsツリーのどこにあるか分からなくても探してインストールしてくれます。
ちなみに、以前は security/portaudit にありましたが、今は ports-mgmt/portaudit に変わっています。
cvsup-without-gui
portsツリーを最新状態に保つために非gui版のcvsupをインストール
# portinstall cvsup-without-gui
#mkdir /etc/cvsup
# mkdir /var/db/sup
# mkdir /var/log/cvsup
# mkdir /var/log/cvsup/ports
# mkdir /var/log/cvsup/pkg
fastest_cvsup
# portinstall fastest_cvsup
cvsupの設定
まず、fastest_cvsup で近所のcvsupサーバーを探します。
まずは日本のサーバーを確認。
# fastest_cvsup -c jp
>> Querying servers in countries: jp
--> Connecting to cvsup.jp.freebsd.org [210.224.172.75]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 347.93 ms
--> Connecting to cvsup2.jp.freebsd.org [203.216.196.85]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 311.99 ms
--> Connecting to cvsup3.jp.freebsd.org [59.106.2.11]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 318.56 ms
--> Connecting to cvsup4.jp.freebsd.org [133.1.240.15]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 325.13 ms
--> Connecting to cvsup5.jp.freebsd.org [210.161.150.4]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 309.39 ms
--> Connecting to cvsup6.jp.freebsd.org [59.106.2.11]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 307.73 ms
>> Speed Daemons:
- 1st: cvsup6.jp.freebsd.org
- 2nd: cvsup5.jp.freebsd.org
- 3rd: cvsup2.jp.freebsd.org
さすがに豪州からだとjpは遠いです。次に豪州のサーバーを探します。
# fastest_cvsup -c au
>> Querying servers in countries: au
--> Connecting to cvsup.au.freebsd.org [203.16.234.32]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 62.51 ms
--> Connecting to cvsup2.au.freebsd.org [150.101.48.30]...
- server replied: ! Access limit exceeded; try again later
- time taken: 87.69 ms
--> Connecting to cvsup3.au.freebsd.org [150.101.48.30]...
- server replied: ! Access limit exceeded; try again later
- time taken: 85.96 ms
--> Connecting to cvsup4.au.freebsd.org [203.16.234.31]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 62.23 ms
--> Connecting to cvsup5.au.freebsd.org [150.101.48.30]...
- server replied: ! Access limit exceeded; try again later
- time taken: 84.68 ms
--> Connecting to cvsup6.au.freebsd.org [203.16.234.32]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 61.53 ms
--> Connecting to cvsup7.au.freebsd.org [202.158.214.106]...
* error: connect: Invalid argument
>> Speed Daemons:
- 1st: cvsup6.au.freebsd.org
- 2nd: cvsup4.au.freebsd.org
- 3rd: cvsup.au.freebsd.org
au.freebsd.orgなサイトはさすがに近いですがちゃんと最新のがあるのかいまいち不安。(笑
ともかく、cvsupサーバーを決めたらsupfileを用意します。
/etc/cvsup/ports-supfile の中身。
# 利用する CVSup サーバーを fastest_cvsup の結果から選択
#*default host=cvsup.jp.FreeBSD.org
#*default host=cvsup2.jp.FreeBSD.org
#*default host=cvsup3.jp.FreeBSD.org
#*default host=cvsup4.jp.FreeBSD.org
#*default host=cvsup5.jp.FreeBSD.org
#*default host=cvsup6.jp.FreeBSD.org
*default host=cvsup6.au.FreeBSD.org #<--これが選んだcvsupサーバー
*default base=/var/db # 作業ディレクトリ
*default prefix=/usr # /usr/ports に展開
*default release=cvs tag=.
*default delete use-rel-suffix
ports-all # ports 全てを同期
最新のportsに
cvsupは非gui版なのでコマンドラインから
# cvsup -g -L 2 /etc/cvsup/ports-supfile | tee -a /var/log/cvsup/ports/20071231.log
# portsdb -Fu
# portaudit -Fda
“20071231.log”は単に今日の日付です。portsdb で INDEX を更新。 portaudit でセキュリティ上問題のある ports をリストアップ。
cronによる自動化
今までの手順をそのまま自動化するスクリプトをTAKE-LABOさんの所(*1)から落としてきて /root/bin/cvsup-ports.sh に置いてchmod 700しておきます。
ただし、50行目の
if SERVER=`$bin_fastest_cvsup -q -c jp`; then
の部分は “jp” を “au” に変更しておきます。
あとは /etc/crontab に
11 5 * * * root /root/bin/cvsup-ports.sh
を追記すれば毎日5時11分にcvsupしてくれます。時間は適宜変更のこと。
(*1): 今現在サイトが見つからないのでこちらに置いておきます