カテゴリー
FreeBSD Software

FreeBSD (portsのアップデート)

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): 今現在サイトが見つからないのでこちらに置いておきます

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です