昨晩にかけてやってみました。VMwareで専用の仮想マシンを1台作成し、8GBほどのHDDにして手元に取りあえず転がっていた4.4BSD(古っ)を入れ、"/home"を6GBほど確保しました。 本当にCVSup「だけ」動いていれば良いので、インストール直後のほやほやマシンに、とりあえず cvsup パッケージを入れます。 続いて、ports/net/cvsup-mirror を入れます。(インストール時にportsも展開するよう指定済) ちなみにMakefileを見ると、なんでパッケージになっていないのか(NO_PACKAGE)について "too interactive" とのこと。 #pre||> # cd /usr/ports/net/cvsup-mirror # make ... Master site for your updates [cvsup-master.freebsd.org]? cvsup.jp.FreeBSD.org How many hours between updates of your files [1]? 168 Please answer 1, 2, 3, 4, 6, 8, 12, or 24 # 一週間で済まそうとしたら、24時間以内じゃないと駄目と怒られた。 How many hours between updates of your files [1]? 24 ... Do you wish to mirror the main source repository [y]?(そのままRETURN) Where would you like to put it [/home/ncvs]?(そのままRETURN) Do you wish to mirror the installed World Wide Web data [y]? n Do you wish to mirror the GNATS bug tracking database [y]? n Do you wish to mirror the mailing list archive [y]? n # WWWやbugtrack, mlなどは要らないので"n"にしときました。 ... # 以下は全てデフォルト、つまりそのままRETURN入力。 Unique unprivileged user ID for running the client [cvsupin]? Unique unprivileged group ID for running the client [cvsupin]? Unique unprivileged user ID for running the server [cvsup]? Unique unprivileged group ID for running the server [cvsup]? ... Syslog facility for the server log [daemon]? Maximum simultaneous client connections [8]? ||< で、うっかりただの"make"にしちゃってたので、この後 "make install" へ。 #pre||> # make install ... (上で指定したユーザーとグループを作るか訊いてくるので、"y"にしとく。) ... Would you like me to set up the syslog logging [y]?(そのままRETURNにしとく。) Setting up server logging in "/etc/syslog.conf". Creating "/var/log/cvsupd.log". Giving syslogd a kick in the pants. Adding cvsupd log entry to "/etc/newsyslog.conf". Done. Would you like me to set up your crontab for updates every 24 hours [y]? Scheduling updates every 24 hours in "/etc/crontab". Done. The first update will be 5 minutes from now, at 21:32. The cvsupd server will be started automatically after the first update, and whenever you reboot. You are now a FreeBSD mirror site. ===> Registering installation for cvsup-mirror-1.2 ===> SECURITY NOTE: This port has installed the following startup scripts which may cause network services to be started at boot time. /usr/local/etc/rc.d/cvsupd.sh ... ||< cvsup-mirrorのinstall終了の5分後、21:32に最初の更新が始まることになります。 この段階で、"/etc/crontab" に次のようなエントリが設定されていました。 32 21 * * * root /usr/local/etc/cvsup/update.sh そのまんまです。最初の更新が終われば、このエントリはコメントアウトしてしまいます。というのも、以降は「同期したい時だけ」手動で "/usr/local/etc/cvsup/update.sh" を実行することにしとくからです。VMware内での実験用ですし。 で、昨晩は21:32から最初の更新が始まり・・・終わったのが、日が変わって02:30前後。ADSLで速くもなく遅くもない程度の速度だと思っていますが、それで大体5時間強かかる感じです。 ディスク容量ですが、"/home"が "/home/ncvs" でCVSupミラー専用という状態で以下の使用量になりました。 # df -h Filesystem Size Used Avail Capacity Mounted on ... /dev/ad0s1e 6.3G 3.9G 1.9G 67% /home 6G用意しておいて正解でした。もう8-RELEASEまで到達しているソースコードのCVSup用データなので、それなりに巨大です。 では続いて、ちゃんとサーバとして動くか確認してみます。とりあえず同一マシン内の適当なディレクトリに、CVSupサーバを自分自身にして適当なコレクションを取ってこれるか確認してみました。 実験用と言うことで、"/root"の下にcvsupのDB用ディレクトリ(cvsup_test_db)と、ソース展開用のディレクトリ(cvsup_test_root)を作ります。 # cd # mkdir cvsup_test_db # mkdir cvsup_test_root "/usr/share/examples/cvsup/standard-supfile" をコピペし、編集します。 # cp /usr/share/examples/cvsup/standard-supfile test-supfile # vi test-supfile ... "test-supfile"の中身は、こんな感じにしてみました。 # 接続先は自分自身 *default host=localhost # cvsupのDBディレクトリ。 # この下に"sup"ディレクトリが作成され、その中にDB(ファイルリスト)が作成される。 *default base=/root/cvsup_test_db # ソースコード展開先ディレクトリ。 # この下に"src"ディレクトリが作成され、その下に展開される。 *default prefix=/root/cvsup_test_root # 4.xの開発ツリーから取得。(FreeBSD 4-STABLE) *default tag=RELENG_4 # この辺はもともとあったのをそのまま。 *default release=cvs *default delete use-rel-suffix *default compress # 軽めのソースツリーで試したいので、 # とりあえず"/etc"ディレクトリのコレクションを指定。 src-etc cvsupを実行してみます。 #pre||> # cvsup test-supfile Connected to localhost Updating collection src-etc/cvs Checkout src/etc/MAKEDEV Checkout src/etc/MAKEDEV.local Checkout src/etc/Makefile ... Checkout src/etc/termcap.small Checkout src/etc/usbd.conf Finished successfully ||< 無事、"cvsup_test_root/src/etc" の下に、etcディレクトリやファイル群が展開されました。 "cvsup_test_db/sup"の下にも、"src-etc"コレクション用のデータファイルが作成されていました。 # cd cvsup_test_db/ # ls sup/ # find . . ./sup ./sup/src-etc ./sup/src-etc/checkouts.cvs:RELENG_4 この後、test-supfileの"tag"を、"RELENG_4_11"とか"RELENG_4_10"とかにしてcvsupしてみると、ちゃんとそのCVSタグの時点でのソースツリーに切り替わってくれます。 最後に、VMware仮想マシンで用意していた別のFreeBSDマシンで、同様のsupfileを用意してsrc-etcを展開出来ることを確認できました(詳細省略)。 このローカルCVSupサーバを使って、年明けはFreeBSDの"make world"の練習でもしてみようかと考えてます・・・。