目次
FreeBSDのportsnap&subversionを使って/usr/ports&/usr/src更新
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 で実施。
portsnap&subversionへの変更
Ports Collectionの変更については、FreeBSDハンドブック Ports Collection の利用 にある通りcvsup(csup)からPortsnapによる更新へ変更したほうがよいと思う。ソース(/usr/src)はまだcvsupでいけるとは思うのだけど、基本subversionに移行しているのでSubversion を使うにあわせて対応してしまおう。
手続き的にはこっちを使うとFWの内側でポートを開けてもらわなくても80番で利用できるし、うるさい部署にお伺いを立てなくてもよくなるのは精神衛生上とっても重要。
portsnapへの変更
たぶんデフォルトで程よい設定があるのでそのままコマンドを使えるかと。 /etc/portsnap.conf が定義ファイルになり、デフォルトでは
SERVERNAME=portsnap.FreeBSD.org
とあり、ここが取得先サーバになる。
portsnapのサブコマンドは3つあり、
- fetch - WORKDIR(デフォルトだと/var/db/portsnap)にPorts Collection のスナップショットを取り込み。
- extract - PORTSDIR(デフォルトだと/usr/ports)にスナップショットを展開
- update - WORKDIRとPORTSDIRの変更差分を適用
となる。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への変更
subversionをインストールしていなければ先にそちらをインストール。
次に /usr/srcの中を(/usr/src自身を含まない)きれいさっぱり消す。消してないとエラー多発となるので。削除は初回のみ。
/usr/src を更新するために使うsubversionのサブコマンドは
- checkout - 指定のリポジトリからワーク(/usr/src)へチェックアウトする
- update - ワーク(/usr/src)をリポジトリの内容に同期させる
の二つ。
初回は以下のコマンドラインとなる。
$ 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。上記は、
- httpsを使いミラーサイト svn0.us-west.FreeBSD.org へ アクセスする。
- リポジトリは/usr/srcなら base を指定
- ブランチは RELENG
- バージョンは 9.1
- /usr/srcにソースをチェックアウト(checkout) or リポジトリに同期(update)
を意味している。base/ の下に来るのはブランチとなる。 http://svnweb.freebsd.org/ を見るなどして確認してみると良い。
- stable
安定版ではないので場合によっては痛い目を見る。 - release
そのままリリース版。安定しているはず。 - releng
releaseにセキュリティ等の修正が当てられたもの。
の違いがある。
/usr/src/.svn を消すと初回のコマンドからやり直しになるので注意。.svnフォルダはsubversionのメタデータ管理フォルダとなる。subversion 1.7だとルートフォルダにのみ.svnが作られるが、それより古いバージョンだとルート以下の各フォルダに.svnフォルダが作られる。ちょっと目に付くかもしれない。 差分ではなく丸ごと一式をごっそり持ってきたいなら.svnも消す。
リポジトリミラーサイトについては、FreeBSDハンドブックのSubversion ミラーサイトに2箇所ミラーサイトの記述があるので、どちらかを選ぶ。他に信頼できるサイトがあるならそこにすれば良い。
httpのかわりにhttpsを使うと、公開鍵の扱いについてたずねられるので、適宜選択する。
2013/02/21追記
httpでの接続ができなくなっているかもしれない。特に問題なければhttpsで接続する。