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として再び追加されました。

おすすめ記事

記事・ニュース一覧