Gentoolkit
1. イントロダクション
Gentoolkit とは何か?
Gentoo は他に例のない(unique)なディストリ
ビューションであり、他のディストリビューション
にはない複雑さがあります。Gentoo の開発者たち
とコントリビューターたちがこれらの複雑さを見つ
け、彼らはその複雑さに伴うユーザーと管理者の労
力を軽減しようとツール類を開発しました。これら
多くのツール類は Gentoo プロジェクトに寄与され、
app-admin/gentoolkit に含まれてい
ます。
Gentoolkit には Portage と ebuild アーキテ
クチャの管理に役立つたくさんの有用なツール類が
入っています。ほとんどのユーザー -- 特にシステ
ムを頻繁にアップデートするような人 -- にとって、
gentoolkit をインストールすることで恩恵を受け
られるでしょう。
インストール
ほかのどの Gentoo パッケージと全く同じよう
に、インストール方法は単純な emerge です。
Code Listing 1.1 |
emerge gentoolkit
|
Note: gentoolkit のツール類の多くはあな
たのシステムの重要情報を明らかにしたり、root
権限を要求します。そのため、root 権限をもつユー
ザーに起動されたときのみ、いくつかのプログラム
は実行されます。(もしくは、そのときのみ適切に機能
します。)。 |
ドキュメントの発見
これを書いているときでは、gentoolkit にある
プログラムのすべてに適切なドキュメントはありま
せん。あるものは man ページがありますが、すべ
てにはありません。プログラムが(man ページとは
別に)持っているかもしれないドキュメント類は全
て
/usr/doc/gentookit-[version]/[program-name]/
以下に置かれています。
2. qpkg でのパッケージ情報問い合わせ
序
qpkg は ebuild がインストールされて
いるかどうかについての情報を確定するための柔軟
なツールです。qpkg は同じパッケージの複数バー
ジョンがインストールされていたとしても、ファイ
ルが何の ebuld に含まれているか、そして、ある
特定の ebuild の動作についての情報を提供するこ
とができます。
qpkg を引数なしで呼び出すことで、す
べての ebuild のリストが表示され、パッケージの
後ろにアスタリスク(*)付のものがシステムにイン
ストールされたものです。
Note: デフォルトでは、qpgk はカラー
の表示をします。カラーをオフにするにはコマンドラ
インで --no-color もしくは -nc
フラグを使います。 |
パッケージ情報の問い合わせ
もっとも一般的な qpkg の使い方の一つ
は与えられたパッケージが何かを確定することであ
る。たとえば、net-misc にざっと目
を通すと、neon と呼ばれるパッケー
ジを見つけました。それがどういったものなのか分
からなかったので、qpkg を起動しました。
Code Listing 2.1 |
hebron root # qpkg -i net-misc/neon
net-misc/neon-0.15.3-r1
HTTP and WebDAV client library [ http://www.webdav.org/neon ]
net-misc/neon-0.18.5
HTTP and WebDAV client library [ http://www.webdav.org/neon ]
net-misc/neon-0.19.2
HTTP and WebDAV client library [ http://www.webdav.org/neon ]
net-misc/neon-0.19.2-r1
HTTP and WebDAV client library [ http://www.webdav.org/neon ]
net-misc/neon-0.21.1
HTTP and WebDAV client library [ http://www.webdav.org/neon ]
|
qpkg は5つの net-misc/neon ebuild に対して
ebuild ファイルを通して読み込み、そして
DESCRIPTION と HOMEPAGE にある情報を出力します。
一つの ebuild にあるファイルのリスト
qpkg はインストールされた ebuild に
属しているファイルをリストすることもできます。
私はgentoolkit がいくつかのツールをインストー
ルしたのは知っていますが、それらのすべてが何で
あるかを知っているわけではありません。qpgk
-l で調べることができます。
Code Listing 2.2 |
hebron portage # qpkg -l app-admin/gentoolkit
app-admin/gentoolkit-0.1.14-r1 *
CONTENTS:
/usr
/usr/share
/usr/share/gentoolkit
/usr/share/gentoolkit/histogram.awk
/usr/share/doc
/usr/share/doc/gentoolkit-0.1.14-r1
/usr/share/doc/gentoolkit-0.1.14-r1/gentool
/usr/share/doc/gentoolkit-0.1.14-r1/gentool/ChangeLog.gz
/usr/share/doc/gentoolkit-0.1.14-r1/lintool
/usr/share/doc/gentoolkit-0.1.14-r1/lintool/checklist-for-ebuilds.gz
/usr/share/doc/gentoolkit-0.1.14-r1/lintool/ChangeLog.gz
/usr/share/doc/gentoolkit-0.1.14-r1/etc-update
/usr/share/doc/gentoolkit-0.1.14-r1/etc-update/ChangeLog.gz
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/qpkg.1.gz
/usr/share/man/man1/lintool.1.gz
/usr/share/man/man1/etc-update.1.gz
/usr/bin
/usr/bin/gentool-bump-revision
/usr/bin/gentool-total-coverage
/usr/bin/gentool-author-coverage
/usr/bin/gentool-package-count
/usr/bin/qpkg
/usr/bin/pkg-size
/usr/bin/lintool
/usr/sbin
/usr/sbin/pkg-clean
/usr/sbin/mkebuild
/usr/sbin/emerge-webrsync
/usr/sbin/epm
/usr/sbin/etc-update
/etc
/etc/etc-update.conf
|
あるファイルがどのパッケージに由来するか調べること
あるファイルがどのパッケージに由来するか調
べるためには、-fか
--fine-file フラグを使います。
Code Listing 2.3 |
hebron portage # qpkg -f net-www/mozilla *
|
二重パッケージをリストする
ときおり、同じパッケージで複数のバージョン
が存在することがあるかもしれません。qpkg
-dup は二重パッケージのリストを出力します。
しかしながら二重バージョンの存在は古いバージョ
ンが取り除かれたことを示すわけではありません。それら
は異なるスロットを満たしているかも知れません。同
じスロットで重複を探すには qpkg --dups
--slots を使います。私は、丁度 KDE 3.0 を
3.0.2 にアップデートしたところです、そして同じス
ロットにいくつかの重複があります。
Code Listing 2.4 |
hebron portage # qpkg --dups --slot
app-admin/gentoolkit
kde-base/kdeaddons
kde-base/kdeadmin
kde-base/kdeartwork
kde-base/kdebase
kde-base/kdegames
kde-base/kdelibs
kde-base/kdemultimedia
kde-base/kdenetwork
kde-base/kdetoys
kde-base/kdeutils
media-libs/freetype
x11-libs/qt
|
パッケージの完全性の検証
ファイルがインストールされてから消去されて
いないことを知るために、ときおりパッケージの完
全性をチェックすることは有用です。qpkg は パッケー
ジのファイルが古くなったり、移動したり、消去さ
れたとしても、インストール回数だけでなく md5
sum も検証することができます。
mtime と md5 sum をチェックするためには
-c フラグを使います。
Code Listing 2.5 |
hebron portage # qpkg gnupg -c -v
app-crypt/gnupg-1.0.6 *
/usr/lib/gnupg/rndunix !md5! !mtime!
/usr/lib/gnupg/rndegd !md5! !mtime!
/usr/lib/gnupg/tiger !md5! !mtime!
/usr/bin/gpg !md5! !mtime!
/usr/bin/gpgv !md5! !mtime!
/usr/share/gnupg/options.skel !md5! !mtime!
/usr/share/gnupg/FAQ !md5! !mtime!
/usr/share/gnupg/faq.html !md5! !mtime!
/usr/share/locale/da/LC_MESSAGES/gnupg.mo !md5! !mtime!
/usr/share/locale/de/LC_MESSAGES/gnupg.mo !md5! !mtime!
/usr/share/locale/eo/LC_MESSAGES/gnupg.mo !md5! !mtime!
/usr/share/locale/et/LC_MESSAGES/gnupg.mo !md5! !mtime!
/usr/share/locale/fr/LC_MESSAGES/gnupg.mo !md5! !mtime!
/usr/share/locale/id/LC_MESSAGES/gnupg.mo !md5! !mtime!
/usr/share/locale/it/LC_MESSAGES/gnupg.mo !md5! !mtime!
/usr/share/locale/ja/LC_MESSAGES/gnupg.mo !md5! !mtime!
/usr/share/locale/nl/LC_MESSAGES/gnupg.mo !md5! !mtime!
/usr/share/locale/pl/LC_MESSAGES/gnupg.mo !md5! !mtime!
/usr/share/locale/pt_BR/LC_MESSAGES/gnupg.mo !md5! !mtime!
/usr/share/locale/sv/LC_MESSAGES/gnupg.mo !md5! !mtime!
/usr/share/locale/tr/LC_MESSAGES/gnupg.mo !md5! !mtime!
/usr/share/info/gpgv.info.gz !md5! !mtime!
/usr/share/man/man1/gpg.1.gz !md5! !mtime!
/usr/share/man/man1/gpgv.1.gz !md5! !mtime!
24/92
app-crypt/gnupg-1.0.7 *
0/101
|
見た通り、私は一つ以上 GnuPG のバージョンを
インストールしてきました。qpkg は私がイ
ンストールして以降、古いバージョンからのファイ
ルの大部分が変えられたことを報告しています。こ
れらのパッケージの多くは、おそらく、
gnupg-1.0.6 から
gnupg-1.0.7 にアップデートしたときに
変更されたのでしょう。最後の2行は私がインストー
ルして以来 gnupg-1.0.7から 101 個のファ
イルのうち 0 個のファイルが変えられたことを示
していることに注意しておきます。これは良いこと
で、もしそれらのうち一つでも変わっていたら、私
は心配になったでしょう。
でも待って、もうすこし。
qpkg はここで私が触れないであろう、
他の問い合わせタスクにも使われます。qpkg
にはとても完成された manpage があります。より
多くの情報に関してはそこを参照してください。
3. lintool
序
lintool は ebuild スクリプトが標準と
必要条件に従っているかチェックするプログラムで
す。ebuild 開発者にとっては lintool を
使うことは正しい手順であるか、そして Gentoo の
中核チームが ebuild を Gentoo リポジトリーに含
めるためにすでに行ってきたこと以上のことを要求
しないために重要です。
使用
lintool を実行することで、きちんと整
えられたチェックリストとチェックした結果が出力
されます。
Code Listing 3.1 |
hebron portage # lintool app-crypt/gnupg/gnupg-1.0.7.ebuild
app-crypt/gnupg/gnupg-1.0.7.ebuild : Not OK
-------------------------------------------------------------------------------
Summary for all 1 ebuild(s) checked # errors/warns
-------------------------------------------------------------------------------
Testing for illegal space characters, weird backslash formatting : 0 / 0
Testing for malformed headers : 0 / 1
Testing for occurence of deprecated try : 0 / 0
Testing for superfluous A=${P}.tar.gz : 0 / 0
Testing for empty DEPEND : 0 / 0
Testing for empty HOMEPAGE : 0 / 0
Testing for empty DESCRIPTION : 0 / 0
Testing for presence of env vars : 1 / 1
Testing for sane USE flag usage : 0 / 0
Total number of ebuilds with errors : 1 (100%)
Total number of ebuilds with warnings : 1 (100%)
|
最初のラインは ebuild が OK かどうかの
まとめです。gnupg-1.0.7 の場合
では、OK にはなっていません。チェック
項目をみていくと、malformed headers
(おかしなヘッダー)と presence of env
vars (env 設定の有り無し) にエラーが出
ているのが分かります。
ebuild を見てみると、要求されている
env vars(LICENSE と RDEPEND)がないこと
がわかります。これらを付け足してエラー
を直します。しかし、なおも二つの警告が
でています-- 一つは malformed headers
(おかしなヘッダー)と env val です。こ
れらのエラーを見つけるのを助けるために、
lintoo に --show-details
をつけて再度実行します。
Code Listing 3.2 |
hebron gnupg # lintool --show-details ./gnupg-1.0.7.ebuild
-------------------------------------------------------------------------------
# Some data cut for brevity....
Status for ./gnupg-1.0.7.ebuild
* Testing for malformed headers : passed
- (W) Has illegal or suspect headers:
|Suspect copyright year: # Copyright 1999-2000 Gentoo Technologies, Inc.
* Testing for occurence of deprecated try : passed
* Testing for superfluous A=${P}.tar.gz : passed
* Testing for empty DEPEND : passed
* Testing for empty HOMEPAGE : passed
* Testing for empty DESCRIPTION : passed
* Testing for presence of env vars : passed
- (W) Missing SLOT=
* Testing for sane USE flag usage : passed
-------------------------------------------------------------------------------
Summary for all 1 ebuild(s) checked # errors/warns
-------------------------------------------------------------------------------
Testing for illegal space characters, weird backslash formatting : 0 / 0
Testing for malformed headers : 0 / 1
Testing for occurence of deprecated try : 0 / 0
Testing for superfluous A=${P}.tar.gz : 0 / 0
Testing for empty DEPEND : 0 / 0
Testing for empty HOMEPAGE : 0 / 0
Testing for empty DESCRIPTION : 0 / 0
Testing for presence of env vars : 0 / 1
Testing for sane USE flag usage : 0 / 0
Total number of ebuilds with errors : 0 (0%)
Total number of ebuilds with warnings : 1 (100%)
|
今度こそ、ebuild にある年の数字がおそらく間違っ
ているのだろうということと、SLOT の値がないと
いうことが分かりました。これらを直すことで警告
を全部消えます。
4. epm
Introduction
epm は Red Hat の rpm コマンド似せたパッケージ管理ツールです。
rpm の全ての特徴を提供するものではありませんが、一部は rpm の問い合わ
せオプションよりも強力です。
ここでは触れませんが、除去したパッケージも扱えます。epm --help で
epm を使ったパッケージの消去について学ぶことができます。
epm でのパッケージ問い合わせ
epm は Red Hat の rpm のコマン
ドラインと本質的には同じように機能しま
す。epm -qa はインストールされ
たすべてのパッケージのリストを出力しま
す。epm -ql はある特定の ebuld
に由来するすべてのファイルをリストしま
す。
Code Listing 4.1 |
hebron etc # epm -ql ethereal
/usr/lib/ethereal/plugins/0.8.20/gryphon.so
/usr/lib/ethereal/plugins/0.8.20/gryphon.la
/usr/lib/ethereal/plugins/0.8.20/gryphon.a
/usr/lib/ethereal/plugins/0.8.20/mgcp.so
/usr/lib/ethereal/plugins/0.8.20/mgcp.la
/usr/lib/ethereal/plugins/0.8.20/mgcp.a
/usr/lib/ethereal/plugins/0.8.20/cosnaming.so
/usr/lib/ethereal/plugins/0.8.20/cosnaming.la
/usr/lib/ethereal/plugins/0.8.20/cosnaming.a
/usr/lib/ethereal/plugins/0.8.20/coseventcomm.so
/usr/lib/ethereal/plugins/0.8.20/coseventcomm.la
/usr/lib/ethereal/plugins/0.8.20/coseventcomm.a
/usr/bin/ethereal
/usr/bin/editcap
/usr/bin/mergecap
/usr/bin/tethereal
/usr/bin/text2pcap
/usr/bin/idl2eth
/usr/share/man/man1/idl2eth.1.gz
/usr/share/man/man1/tethereal.1.gz
/usr/share/man/man1/text2pcap.1.gz
/usr/share/man/man1/editcap.1.gz
/usr/share/man/man1/ethereal.1.gz
/usr/share/man/man1/mergecap.1.gz
/usr/share/doc/ethereal-0.8.20/AUTHORS.gz
/usr/share/doc/ethereal-0.8.20/COPYING.gz
/usr/share/doc/ethereal-0.8.20/NEWS.gz
/usr/share/doc/ethereal-0.8.20/ChangeLog.gz
/usr/share/doc/ethereal-0.8.20/README.gz
/usr/share/doc/ethereal-0.8.20/INSTALL.configure.gz
/usr/share/doc/ethereal-0.8.20/TODO.gz
/usr/share/doc/ethereal-0.8.20/README.aix.gz
/usr/share/doc/ethereal-0.8.20/README.bsd.gz
/usr/share/doc/ethereal-0.8.20/README.hpux.gz
/usr/share/doc/ethereal-0.8.20/README.irix.gz
/usr/share/doc/ethereal-0.8.20/README.linux.gz
/usr/share/doc/ethereal-0.8.20/README.tru64.gz
/usr/share/doc/ethereal-0.8.20/README.win32.gz
/usr/share/doc/ethereal-0.8.20/README.vmware.gz
/etc/ethereal/manuf
|
このドキュメントを書いている時点では
qpkg にはない epm の進ん
だ問い合わせオプションが少々あります。
たとえば、コンフィギュレーションファイ
ルやドキュメンテーションファイルを問い
合わせることができます。
Code Listing 4.2 |
hebron etc # epm -qc ethereal
/etc/ethereal/manuf
hebron etc # epm -qd ethereal
/usr/share/man/man1/idl2eth.1.gz
/usr/share/man/man1/tethereal.1.gz
/usr/share/man/man1/text2pcap.1.gz
/usr/share/man/man1/editcap.1.gz
/usr/share/man/man1/ethereal.1.gz
/usr/share/man/man1/mergecap.1.gz
/usr/share/doc/ethereal-0.8.20/AUTHORS.gz
/usr/share/doc/ethereal-0.8.20/COPYING.gz
/usr/share/doc/ethereal-0.8.20/NEWS.gz
/usr/share/doc/ethereal-0.8.20/ChangeLog.gz
/usr/share/doc/ethereal-0.8.20/README.gz
/usr/share/doc/ethereal-0.8.20/INSTALL.configure.gz
/usr/share/doc/ethereal-0.8.20/TODO.gz
/usr/share/doc/ethereal-0.8.20/README.aix.gz
/usr/share/doc/ethereal-0.8.20/README.bsd.gz
/usr/share/doc/ethereal-0.8.20/README.hpux.gz
/usr/share/doc/ethereal-0.8.20/README.irix.gz
/usr/share/doc/ethereal-0.8.20/README.linux.gz
/usr/share/doc/ethereal-0.8.20/README.tru64.gz
/usr/share/doc/ethereal-0.8.20/README.win32.gz
/usr/share/doc/ethereal-0.8.20/README.vmware.gz
|
Note:
epm --help で最後には
epm がサポートするであろうオプ
ションをリストすることができる。しかし
ながら、*(アスタリスク)がプレフィクス
についているものは、まだ実装されていな
いので注意してください。
|
5. Others
etc-update
etc-update は設定ファイルの手
動更新を代わりにやってくれる便利なもの
です。設定ファイルを変更する emerge を
実行したあと、etc-update を実行
することで埋め込まれた設定ファイルのアッ
プデートを進めることができます。
これはメニューを中心に操作され、何をするか
きめる前に設定ファイルをみたり、マージ
したりする機能を含んでいます。
gentool
gentool は ebuild に関する統計
を調べるいくつかの小さなスクリプトに対
する総称です。たとえば、
gentool-total-coverage は email
アドレスのリストや、それぞれが portage
tree に持つ ebuild の数を出力します。
pkg-size
pkg-size は与えられたパッケージにてインストールされたファイルのサイズを出力します。.
Code Listing 5.1 |
hebron portage # pkg-size nmap
net-analyzer/nmap-2.54_beta24-r1 897024 (876KB)
|
mkebuild
mkebuidl はebuild の作成プロセ
スをなるべく自動化することで新しい
ebuild の作成を簡単にします。
mkebuild [filename] と実行する
ことで、そのファイルに対する ebuild が
作られます。そのファイルはある種のアー
カイブでなければいけません。動作すると、
あなたがしなければいけないかもしれない
変更に関してフィードバックを提供するで
しょう。
emerge-webrsync
毎日のスナップショットを wget をつかって HTTP を通してダウンロードします、そして(オプションとして) portage を同期させます。
|