Gentoo Linux ユーザであればもう常識なのかもしれませんが、eix というコマンドについてつらつらと書いてみました。知らんかった、という方はぜひ。
eix とは
portage ツリー上のパッケージを検索するために使うコマンドです。同様のことを実現するには emerge --search(-s) がありますが、それに比べて非常に高速なのが特徴です。どのくらい高速なのというと‥
# time emerge -s firefox real 0m9.357s user 0m0.953s sys 0m0.107s # time eix firefox real 0m0.488s user 0m0.027s sys 0m0.013s
10秒近かったのがわずか0.5秒です。すごいですね。これだけでもじゅうぶん使う価値があるのですが、バージョンアップを重ねるにつれていろいろな条件で検索できるようになったりして、ほんとうに便利なツールになりました。
ちなみに eix というのは Ebuild IndeX の略だそうです。今日(2007/7/1)現在のバージョンは 0.9.9 です。 1.0 まであと少しですね。
導入
まずはインストール。小さなパッケージなので、コンパイルもすぐ終わります。
# emerge app-portage/eix
そしたら、キャッシュファイルを作ります。
# update-eix
デフォルトでは、/var/cache/eix というファイルが作られ、eix はこれを元に検索を行います。ということはつまりこのキャッシュファイルは emerge --sync するたびに作り直してあげる必要があります。
それは面倒だ!という場合は、 emerge --sync と update-eix をいっしょにやってくれる、eix-sync というコマンドが用意されています。でもぼくは使ってないのでここでははしょります。
検索してみる
基本は
eix [オプション] パッケージ名
です。eix は emerge と違って、特に何もしなくても一般ユーザで使えるのが、いいところのひとつです。手始めに eix を検索してみると、こんなふうに出力されます。
$ eix eix
[I] app-portage/eix
Available versions: 0.8.8 (~)0.9.1 (~)0.9.4 (~)0.9.8 (~)0.9.9 {sqlite}
Installed versions: 0.9.9(14:36:18 06/17/07)(-sqlite)
Homepage: http://eix.sourceforge.net
Description: Small utility for searching ebuilds with indexing for fast results
上から順に、まずカテゴリ名/パッケージ名。インストール済のパッケージだと、頭に [I] がつきます。
2行目は現在 portage ツリーに用意されているバージョンと、利用可能な USE フラグです。 (~)がついてるのは unstable ですね。これだとわかりませんが、インストールされているバージョンはハイライト表示されます。
3行目はインストールされている場合だけ表示されます。インストール日時と、インストールした時にどんな USE フラグを有効・無効にしたのかがわかるようになっています。
で4行目はホームページ、5行目は概要ですね。
このパッケージ名はカテゴリ名/パッケージ名という指定もできます。
$ eix sys-libs/db
[I] sys-libs/db
Available versions:
(1) 1.85-r1 1.85-r2 1.85-r3
(3) 3.2.9-r10 3.2.9-r11
(4.2) 4.2.52_p2-r1 4.2.52_p4-r2
(4.3) 4.3.29-r2
(4.4) (~)4.4.20_p4
(4.5) (~)4.5.20_p2
{bootstrap doc elibc_FreeBSD java nocxx tcl test}
Installed versions: 4.5.20_p2(4.5)(19:49:09 04/15/07)(-bootstrap -doc -elibc_FreeBSD -java -nocxx -tcl -test)
Homepage: http://www.oracle.com/technology/software/products/berkeley-db/index.html
Description: Oracle Berkeley DB
SLOT があるパッケージの場合、こんなふうにそれぞれが表示されます。うーん、すばらしい。
ところでパッケージ名は部分一致で検索されます。これを完全一致にしたい場合は、--exact(-e) オプションを使います。
$ eix mozilla-firefox [I] www-client/mozilla-firefox * www-client/mozilla-firefox-bin Found 2 matches. $ eix -e mozilla-firefox [I] www-client/mozilla-firefox
全部貼ると長くなってしまうので、上の例では単に省略してるだけですが、--compact(-c) オプションをつけると、パッケージひとつにつき1行で出力されるようになります。たくさんヒットしそうな予感がするときにはつけておくと便利です。
$ eix -c firefox [I] www-client/mozilla-firefox (2.0.0.4@06/01/07): Firefox Web Browser [N] www-client/mozilla-firefox-bin (2.0.0.4): Firefox Web Browser Found 2 matches.
さらにいろいろなオプション
- --category(-C) : カテゴリ名で検索
--description(-S) : 概要で検索
たとえば「KDE で使えるファイル比較ツールってないかな?」ってときに、「diff」というキーワードで検索してみる場合。
$ eix -C kde -S diff -c [N] kde-base/kdesdk-kfile-plugins ((~)3.5.7(3.5)): kfile plugins for .cpp, .h, .diff and .ts files [N] kde-base/kompare ((~)3.5.7(3.5)): KDE: A program to view the differences between files and optionally generate a diff [N] kde-misc/kdiff3 (0.9.92): KDE-based frontend to diff3 Found 3 matches.
- --installed(-I) : インストールされているパッケージだけを対象とする
--use(-U) : 指定した USE フラグを持つパッケージを対象とする
「sqlite を導入したら、影響をうけそうなパッケージってあるかな?」ってときは‥
$ eix -I -U sqlite -c [I] app-portage/eix (0.9.9@06/17/07): Small utility for searching ebuilds with indexing for fast results [I] dev-lang/php (5.2.2-r1(5)@05/13/07): The PHP language runtime engine: CLI, CGI and Apache2 SAPIs. [I] dev-lang/python (2.4.4-r4(2.4)@05/19/07): Python is an interpreted, interactive, object-oriented programming language. [I] dev-libs/apr-util (1.2.8-r1(1)@06/17/07): Apache Portable Runtime Library Found 4 matches.
equery hasuse 相当の機能ですが、比べものにならないくらい速いです。
- --upgrade(-u) : 新しいバージョンが存在するものを対象とする
--system : いわゆる system パッケージのみを対象とする
$ eix -u --system -c [U] app-arch/tar (1.17@06/17/07 -> (~)1.18): Use this to make tarballs :) [U] sys-apps/findutils (4.3.7@06/17/07 -> (~)4.3.8): GNU utilities for finding files [U] sys-apps/portage (2.1.3_rc5@06/24/07 -> (~)2.1.3_rc6): The Portage Package Management System. The primary package management and distribution system for Gentoo. Found 3 matches.
emerge -pvuD system 相当ですね。--system をつけなければ world 相当になります。こちらも断然速いです。
さらに実はデフォルトで正規表現も使えます。
「バイナリのパッケージって何入れてたっけ?」ってときに‥
$ eix -Ic '-bin$' [I] app-office/openoffice-bin (2.2.1@06/17/07): OpenOffice productivity suite
これだと、バイナリパッケージは「-bin」で終わってるはず、という前提ですけどね。正規表現はよくわかんない、という場合には、--pattern(-p) オプションでワイルドカード表記も使えます。
$ eix -Ic -p *-bin [I] app-office/openoffice-bin (2.2.1@06/17/07): OpenOffice productivity suite
ざざざっと、自分が使ったことのあるオプションを中心に書いてみましたが、「パッケージを探す」という用途には、ほんとうに便利なコマンドです。
さらにここで書いた以外にも、まだまだいろいろな機能があります。より詳しい情報は eix --help や man eix で!‥って月並みなオチですみません(><)
こんにちは、歩行者です。
遅ればせながら、トラックバック送らせていただきました。 eix 便利そうですねー。 Gentoo はこういった使いやすいパッケージ管理ツールが揃っているのがいいですよね。恥ずかしながら今まで使ってなかったので、この記事を参考に使い方を覚えようと思います。
なんと、またしても「今週の話題」に‥! ありがとうございます。
eix、ほんとに便利ですよ。Gentoo を再インストールする時なんか、カーネルよりも先に入れてしまうくらい(w
参考にしてもらえて何よりです。ここに書いたほかにも、もっといろいろできるみたいなので、ぜひ試してみてください。