FreeBSD Daily Topics
2008年1月31日 portsnap(8)でPorts Collectionをアップデートする方法,BATCHと/etc/make.confでシームレスアップグレード
heads-up
- portsnap(8)
ports - Ports Collectionのアップデートはcvsup(8)を使う方法が旧来からありました。ベースシステムにC言語で再実装されたcsup(1)が追加されてからは,csup(1)を使ってアップデートを実施する方法が簡単です。しかし,portsnap(8)がベースシステムに追加されてからは,portsnap(8)を使う方法がより簡単です。
次のような関数またはコマンドを用意して使うようにすると便利です。
リスト1 portsnap(8)を使ってPorts Collectionを更新,インデックスを作成して,アップグレードすべきリストを表示する
updateports() { if [ -f /usr/ports/.portsnap.INDEX ] then portsnap fetch update else portsnap fetch extract update fi (cd /usr/ports/; make index) portversion -v -l \< }上記処理ではインデックスの不整合を避けるためにインデックスを作成し直しています。この処理には時間がかかります。ダウンロートしたインデックスのままで構わないという場合は,次のようにmake indexの処理を抜いた関数またはコマンドを用意して使うといいでしょう。
リスト2 portsnap(8)を使ってPorts Collectionを更新して,アップグレードすべきリストを表示する
updateports() { if [ -f /usr/ports/.portsnap.INDEX ] then portsnap fetch update else portsnap fetch extract update fi portversion -v -l \< }- BATCH NO_CHECKSUM
ports - Ports Collectionではビルド時にオプションを指定できます。一度指定したオプションは/var/db/ports/に保存され,2度目以降はオプション選択画面が表示されなくなります。これは便利な方法ですが,シームレスにアップデートを実施したい場合には不便ですし,指定するオプションが変更になった場合に反映されない状況が生まれるという問題もあります。
頻繁にアップデートを実施するのであれば,次のように環境変数BATCHをYESに指定しておきます。使っているシェルに合わせて設定ファイルに記述しておくと便利です。また指定すべきオプションは次のように/etc/make.confで指定しておきます。これで必要なオプションを有効にしつつ,オプション指定をたずねられることなくシームレスなアップデートが可能になります。
リスト3 環境変数BATCHを設定
export BATCH=YESリスト4 portに指定するオプションを/etc/make.confに記載する例
### Ports Compile Options .if ${.CURDIR:M/usr/ports*} != "" # NVIDIA GL enable WITH_NVIDIA_GL= yes . if ${.CURDIR:M/usr/ports/converters/libiconv} != "" WITH_EXTRA_PATCHES= yes . endif . if ${.CURDIR:M/usr/ports/editors/openoffice.org*} != "" LOCALIZED_LANG= ja WITH_SYSTEM_FREETYPE= yes . endif . if ${.CURDIR:M/usr/ports/emulators/qemu*} != "" WITH_KQEMU= yes . endif . if ${.CURDIR:M/usr/ports/multimedia/vlc*} != "" WITH_SKINS= yes . endif .endif
ports
- www/yahoo-ui
先日,The Yahoo! User Interface (YUI) Libraryのportがwww/yuiとして追加されましたが,既存のeditors/yuiと名称がぶつかることから一旦削除され,www/yahoo-uiとして再び追加されました。
FreeBSD Daily Topics
- 2008年1月31日 portsnap(8)でPorts Collectionをアップデートする方法,BATCHと/etc/make.confでシームレスアップグレード
- 2008年1月30日 ULE改善報告 - より動的にスケジューリングを実施するアイデアの実装とベンチマーク,8系への導入と7.1へのバックポート他
- 2008年1月29日 Flash9 - 最新WineでCompizでも動作(動作画面あり),開発版portupgradeを更新する方法他
- 2008年1月28日 fts(3)構造体改善のため変更,fifofsジャイアントロック削除,WineでPhotoshop CS/CS2動作,JavaScript実装Rhino登場他
- 2008年1月25日 portmaster 2登場,libmemcached登場,Swapd登場,iograph登場,PyDev登場,Spring Framework登場他
- 2008年1月24日 re(4) Wake-on-LAN機能追加パッチ,Time Machine類似機能flyback登場,iostat(8)ヘッダ表示間隔改善,フィックスモードfsck(8)動作改善他
- 2008年1月23日 sf(4)オーバーホールパフォーマンス向上,Apache 22/20/13セキュリティフィックス,MSNメッセンジャープロクシ
- 2008年1月22日 OpenBSD Relay Daemon登場 - ロードバランサ,アプリケーションレイヤゲートウェイ,トランスパレントプロクシ他
- 2008年1月21日 FreeBSD 6.3-RELEASE登場,6.3と7.0の採用基準,新しいFreeBSD RSS 6つ追加
- 2008年1月18日 FreeBSDにWindows Firefox + Windows Flash9をインストールする方法
-
2008年1月31日付 FDT での些細な疑義
> portversion -v -l \<の部分は `pkg_version -v | grep '<'` (私は -v だけでなく -I もつけています.`portsnap fetch update` する度に INDEX もほぼ(これについては意見が分かれるところではありますが)最新のものに更新されるので)に代替する方がいいのではないかと思いました.
そうすればベースシステムのものだけで間に合いますし,portsnap(8)がベースシステムに組込まれた事実とも整合性がとれますし.
大地さんに対しては言うまでもありませんが,portversion(1)は ports-mgmt/portupgrade の副産物のひとつで,この port は ruby や bdb に依存していますので(余談ですが私はこの依存性を理由に ports-mgmt/portmaster の方を好みます).Commented : #1 hoge (2008/01/31, 21:42)

