Nov 242006
 

Gentooでインストール済みの全パッケージをリストしようと思ったのですが、worldファイルの書式である「カテゴリ+パッケージ名」で一覧する方法がわかりません。
gentoolkitのequery listコマンドが一番望みのものに近いのですが、バージョンが含まれているのでこれを除かなければいけません。

sed等で編集するのも(私には)面倒だったので、てっとり早くequeryコマンドの改造版を作ってみました。

$ diff -u /usr/bin/equery equery.tmp
+++ equery.tmp  2007-05-03 08:11:32.000000000 +0900
@@ -1393,7 +1393,7 @@

                        if rx.search(pkg.get_cpv()):
                                if Config["piping"]:
-                                       print_info(0, pkg.get_cpv())
+                                       print_info(0, pkg.get_category() + "/" + pkg.get_name())
                                else:
                                        print_info(0, "[" + pp.installedflag(pfxmodes[status]) + "] [" + pp.maskflag(maskmodes[pkgmask]) + "] " + pp.cpv(pkg.get_cpv()) + " (" + pp.slot(slot) + ")")

get_cpv()の代わりにget_category()とget_name()を使うようにしてるだけです。
get_cpv()のcpvはCategory,Package,Versionの意味で、/usr/lib/gentoolkit/pym/package.pyに定義されています。
出力をpipeした場合のみですが、とりあえずヘッダが出る以外はworld書式で一覧を作ることができました。
複数のバージョンがインストールされている分はsortしないといけませんが。

$ ./equery.tmp list | sort -u > world.new
 Posted by at 11:56 pm  Tagged with:

Sorry, the comment form is closed at this time.