玩式草子─ソフトウェアとたわむれる日々

第68回 Plamo-5.3.1とget_pkginfoスクリプト[その3]

この記事を読むのに必要な時間:およそ 6 分

より高度な使い方

get_pkginfoには,一般向けではないものの,開発者にとって便利な機能も用意されています。本節ではそれらの機能を簡単に紹介します。

ブロック解除(-bオプション)

Plamo Linuxに収録しているパッケージの中には,システムのディレクトリ構成を用意するパッケージや基本的な設定ファイルを提供するパッケージ,デバイス名のリストを提供するパッケージなど,更新には特別の手順を要するパッケージが存在します。

通常,それらは「ブロックされた」パッケージとしてget_pkginfoの対象外になっているものの,-bオプションを指定すると,この指定が解除され,それらのパッケージも表示やダウンロードの対象となります。現在,ブロック対象となっているパッケージはaaa_base, devs, etc, hdsetup, network_configs, shadow, sysvinitの7つです。

ローカルブロック(-lオプション)

ブロック解除とは逆に,指定したパッケージをget_pkginfoの対象外にする機能です。

get_pkginfoはバージョンやビルド番号の違いをチェックしているだけなので,公式に提供されているバージョンよりも新しいパッケージを自前でビルド,インストールしている場合でも,そのパッケージについてFTPサーバ上に新パッケージがある旨を報告してしまいます。

たとえば,Xfceの新版(4.12)をテスト中の環境でget_pkginfoを実行すると,FTPサーバ上のXfce-4.10との違いがチェックされてしまいます。

...
local package: libxfce4ui-4.12.0-x86_64-P1
new   package: libxfce4ui-4.10.0-x86_64-P4
URL: ftp://ring.yamanashi.ac.jp/pub/linux/Plamo/Plamo-5.x/x86_64/plamo/06_xfce/libxfce4ui-4.10.0-x86_64-P4.txz

local package: libxfce4util-4.12.1-x86_64-P1
new   package: libxfce4util-4.10.0-x86_64-P2
URL: ftp://ring.yamanashi.ac.jp/pub/linux/Plamo/Plamo-5.x/x86_64/plamo/06_xfce/libxfce4util-4.10.0-x86_64-P2.txz
...

これら余計なチェックを回避するために,指定したパッケージをチェック対象外にする-lオプションを用意しました。

$ get_pkginfo -l 'libxfce4ui libxfce4util Thurnar'

複数のパッケージを指定したい場合はそれらをスペース区切りでクォートするか,後述する設定ファイルに記述してください。

カテゴリ指定(-cオプション)

たとえば,デスクトップ環境としてXfceのみをインストールしている場合,KDEやMate用パッケージの更新情報は必要ありません。そのためget_pkginfoは/var/log/packages/以下のパッケージリストからインストール済みのカテゴリを推測し,インストールしていないカテゴリの情報は表示しないようにしています。しかし,インストールしていないカテゴリのパッケージ事情を調べたい場合もありそうなので,-cオプションでチェック対象とするカテゴリを追加する機能を用意しました。

$ get_pkginfo -c '08_tex 10_lof'

...
 ** ptexlive-20100711-x86_64-P9 should be a new package in 08_tex category.
URL: ftp://plamo.linet.gr.jp/pub/Plamo-5.x/x86_64/plamo/08_tex/ptexlive-20100711-x86_64-P9.txz

** texlive_texmf1-20091107-x86_64-P3 should be a new package in 08_tex category.
URL: ftp://plamo.linet.gr.jp/pub/Plamo-5.x/x86_64/plamo/08_tex/texlive_texmf1-20091107-x86_64-P3.txz
...

インストールしていないカテゴリのパッケージはlocal packageが存在しないため,古くから存在していてもnew packageとして表示されるのでご注意ください。

リバースサーチ(-rオプション)

get_pkginfoは,通常はインストール済みのパッケージを元にFTPサーバ上のパッケージをチェックするのに対し,FTPサーバ上のパッケージを元に,未インストールのパッケージを調べる機能も用意しました。-rオプションを指定すると,FTPサーバには存在するもののインストールしていないパッケージが一覧表示されます。

$ get_pkginfo.py -r
un-selected package(s):
category: 11_mate
        zenity-3.14.0-x86_64-P1.txz
category: AVtool
        avidemux-2.6.8-x86_64-P3.txz
        avidemux5-2.5.6-x86_64-P2.txz
...
category: Devel
        nasm-2.11.06-x86_64-P1.txz
...

このオプションではcontribディレクトリに含まれているパッケージも表示対象となるので,今まで気づかなかったソフトウェアに出会えるかも知れません。しかしながら,contrib以下のパッケージはplamoディレクトリ以下のパッケージよりもメンテナンスが行きとどいていないことが多いのでご注意ください。

get_pkginfoの設定ファイル

今までに紹介してきた各種オプションは設定ファイルにも記述することができます。設定ファイルは /etc/pkginfo.conf と ~/.pkginfo で,各項目を1行に記述します。

設定できる項目は以下の通りです。

URLダウンロード先のURL(例: ftp://plamo.linet.gr.jp/pub/Plamo-5.x/)
DOWNDIRダウンロードしたパッケージの置き場所(例: /var/Newpkgs⁠
LOCAL_BLOCKブロックしたいパッケージ名(例: man man_db ffmpeg mplayer)
CHECK_CATEGORYインストール済みのカテゴリーに関わらずチェックしたいカテゴリー名(例: 08_tex 10_lof)
INSTALL自動更新機能をauto(-aと同等)にするかmanual(-iと同等)にするか
BLOCK_PKGブロックリスト機能の有無(-b と同等,True/False)
DOWNLOADダウンロードの有無(-d と同等,True/False)
DLSUBDIRパッケージをカテゴリごとにダウンロードするか(-sと同等,True/False)

これらを指定した設定ファイルの例を示します。1行は,項目とその内容を'='でつなぎ,内容が複数になる場合は空白区切りで並べます。

URL = ftp://plamo.linet.gr.jp/pub/Plamo-5.x/
DOWNDIR = /var/Newpkgs
LOCAL_BLOCK = man man_db ffmpeg
DLSUBDIR = True

この指定の場合,参照するFTPサーバをplamo.linet.gr.jpにし(URL⁠⁠,更新されたパッケージは/var/Newpkgs以下に(DOWNDIR)カテゴリごとのサブディレクトリに分類して(DLSUBDIR)ダウンロードされます。また,man, man_db, ffmpegの各パッケージは更新対象にしません(LOCAL_BLOCK⁠⁠。

これらの設定は/etc/pkginfo.conf,~/.pkginfo,コマンドラインオプション,の順に評価されるので,システム全体の指定は/etc/pkginfo.conf,ユーザごとの指定は ~/.pkginfo,一時的な変更はコマンドラインオプションで指定,のように使い分けることも可能です。ちなみに,これらを指定しなかった場合のデフォルト値は以下のようになっており,FTPサーバ上で更新されているパッケージとそのURLを表示するのみ,という動作になります。

URL ftp://ring.yamanashi.ac.jp/pub/linux/Plamo/Plamo-5.x/
DOWNDIR''(= cwd)
LOCAL_BLOCK''(無し)
CHECK_CATEGORY''(無し)
INSTALL''(自動インストールしない)
BLOCK_PKGTrue
DOWNLOADFalse
DLSUBDIRFalse

最近はだいぶ落ち着いてきたものの,get_pkginfoは現在も開発が進行中で,改称されたパッケージの追跡機能や廃止されたパッケージの削除機能など,いろいろな機能が提案されています。rpmやdebといった高機能なパッケージツールを使っている人から見ると「今ごろそんな議論をしてるのか」と笑われそうですが,必要なツールを必要に応じて作っていくのもOSSの面白さのひとつ,としておきましょう(苦笑⁠⁠。

著者プロフィール

こじまみつひろ

Plamo Linuxとりまとめ役。もともとは人類学的にハッカー文化を研究しようとしていたものの,いつの間にかミイラ取りがミイラになってOSSの世界にどっぷりと漬かってしまいました。最近は田舎に隠棲して半農半自営な生活をしながらソフトウェアと戯れています。

URLhttp://www.linet.gr.jp/~kojima/Plamo/index.html