eix 個人的まとめ

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 で!‥って月並みなオチですみません(><)

いただいたトラックバック

  1. From: WebOS Goodies さん - 2007/7/8 15:56

    今週の話題 : Google Gears のロードマップが公

    近所のセブンイレブンで「[[南インド式黒胡椒のチキンカリー>http://www.sej.co.jp/shohin/dancyu0707.html]]」なるものを » 全文を見に行く

  2. From: you know something? さん - 2008/12/12 16:29

    eix って知ってました? 恥かしながら、知らなんだ〜

    導入は下記を参照のこと。

    eix 個人的まとめ

    また、ついでに portage のキャッシュの sqlite 化も行ってみました。

    sqlite » 全文を見に行く

いただいたコメント

  1. From: 歩行者 さん - 2007/7/8 16:04

    こんにちは、歩行者です。
    遅ればせながら、トラックバック送らせていただきました。 eix 便利そうですねー。 Gentoo はこういった使いやすいパッケージ管理ツールが揃っているのがいいですよね。恥ずかしながら今まで使ってなかったので、この記事を参考に使い方を覚えようと思います。

  2. From: さかな - 2007/7/8 20:36

    なんと、またしても「今週の話題」に‥! ありがとうございます。
    eix、ほんとに便利ですよ。Gentoo を再インストールする時なんか、カーネルよりも先に入れてしまうくらい(w

    参考にしてもらえて何よりです。ここに書いたほかにも、もっといろいろできるみたいなので、ぜひ試してみてください。

よろしければコメントをどうぞ...

(お持ちでしたら)