2017/04/02
FreeBSD-STABLEは安定版じゃない。FreeBSD-CURRENTで試験ずみでこれよりは落ち着いている、リリース前の開発ブランチなのです。当然Currentで出なかった不具合もあったりする。
2013/04/10
/base/stable を使って痛い目にあったので、記載を/base/releng に変更しておく。
2013/02/11
Ports CollectionのCVSUPによる提供が2013年2月末で終了するので、更新方法のメモ。
ついでなので、/usr/srcをsubversionで更新するように変更もする。
この説明は FreeBSD/AMD64 9.1 RELEASE で実施。
Ports Collectionの変更については、FreeBSDハンドブック Ports Collection の利用 にある通りcvsup(csup)からPortsnapによる更新へ変更したほうがよいと思う。ソース(/usr/src)はまだcvsupでいけるとは思うのだけど、基本subversionに移行しているのでSubversion を使うにあわせて対応してしまおう。
手続き的にはこっちを使うとFWの内側でポートを開けてもらわなくても80番で利用できるし、うるさい部署にお伺いを立てなくてもよくなるのは精神衛生上とっても重要。
たぶんデフォルトで程よい設定があるのでそのままコマンドを使えるかと。 /etc/portsnap.conf が定義ファイルになり、デフォルトでは
SERVERNAME=portsnap.FreeBSD.org
とあり、ここが取得先サーバになる。
portsnapのサブコマンドは3つあり、
となる。extractは初回のみ実行することになるので、初回だけ以下を実行になるかと。
$ rm -fR /usr/ports/* ←クリーンにしたいならどうぞ $ portsnap fetch $ portsnap extract $ portsnap update
2回目以降は、
$ portsnap fetch $ portsnap update
でおk。fetchでエラーが出た場合、WORKDIR内を消して(WORKDIR自体は消さない)やり直してみる。
また、cronでfetchするためのサブコマンド、そのものな名前の cron がある。/etc/crontab に仕込みをいれる。
# portsnap 0 3 * * * root /usr/sbin/portsnap cron
午前3時はこのコマンドをcronに仕込む際のお約束事項で、cronサブコマンドは実際に起動されてからランダムな時間待ち合わせてfetchを実行する。
portsインストール前に portsnap update を実行しすることで、fetch結果が取り込まれ最新の状態になる。これで make を実行可能。
プロキシーのためにうまくいかない場合はportsnapコマンドをプロキシ経由で使う方法で解決できるかもしれない。
subversionをインストールしていなければ先にそちらをインストール。
次に /usr/srcの中を(/usr/src自身を含まない)きれいさっぱり消す。消してないとエラー多発となるので。削除は初回のみ。
/usr/src を更新するために使うsubversionのサブコマンドは
の二つ。
初回は以下のコマンドラインとなる。
$ rm -fR /usr/src/* $ rm -fR /usr/src/.svn $ svn checkout https://svn0.us-west.FreeBSD.org/base/releng/9.1 /usr/src
2回目以降は、
$ svn update /usr/src
でおk。上記は、
を意味している。base/ の下に来るのはブランチとなる。 http://svnweb.freebsd.org/ を見るなどして確認してみると良い。
の違いがある。
/usr/src/.svn を消すと初回のコマンドからやり直しになるので注意。.svnフォルダはsubversionのメタデータ管理フォルダとなる。subversion 1.7だとルートフォルダにのみ.svnが作られるが、それより古いバージョンだとルート以下の各フォルダに.svnフォルダが作られる。ちょっと目に付くかもしれない。 差分ではなく丸ごと一式をごっそり持ってきたいなら.svnも消す。
リポジトリミラーサイトについては、FreeBSDハンドブックのSubversion ミラーサイトに2箇所ミラーサイトの記述があるので、どちらかを選ぶ。他に信頼できるサイトがあるならそこにすれば良い。
httpのかわりにhttpsを使うと、公開鍵の扱いについてたずねられるので、適宜選択する。
httpでの接続ができなくなっているかもしれない。特に問題なければhttpsで接続する。