[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:10941] Re: Search package by "Priority:/Section:" ?



武藤@イソターネット協会です。

Tue, 15 Dec 1998 13:48:30 +0900、
「[debian-users:10930] Search package by "Priority:/Section:" ?」において
"Ken N." <Nakagaki@xxxxxxxxx>さんが書かれました(<199812150450.NAA09867@xxxxxxxxxxxxxxx>)。
Nakagaki> ちょっとdpkgコマンドについて調べていたんですが、予期せぬ所でつ
Nakagaki> まづいてしまいました。
Nakagaki> 
Nakagaki> 質問:
Nakagaki> 	現在インストールされている全パッケージのうち、
Nakagaki> 		Priority: required
Nakagaki> 		Section: base
Nakagaki> 
Nakagaki> 	であるものを全て抽出したい。どのような方法があるか。

Nakagaki> 素直に/var/lib/dpkg/statusをサーチするしかないですかね。できれ
Nakagaki> ばdpkgと2, 3のコマンドだけで美しく記述できる回答がないものかと
Nakagaki> 期待しています。

うーん、dpkg -lの結果が切れちゃうのがやっぱり痛いところですね。

美しくないし、遅いし、ちっともdebidebiな気がしないし、のかっちょ悪いプロ
グラム。
---------------------------------
#!/usr/bin/perl
open(F,"/var/lib/dpkg/status");
while (<F>) {
  chomp;
  if (/^Package: (.i*)/) {$packname=$1}
  if (/^Status: install ok installed/) {
	open(F2,"dpkg -s $packname|");
        $priority = '';
        $section = '';
	while (<F2>) {
		if (/^Priority: (\w+)/) {$priority=$1}
		if (/^Section: (\w+)/) {$section=$1}
	} 	
	close(F2);
	if ($priority eq 'required' && $section eq 'base') {print "$packname\n"}
  }
}
close(F);
---------------------------------
dpkg -s の遅さをモロにかぶってます。
availableから最初に読み込んでおいてマッチするものを抽出して比較するとか。
うーん。
-- 
武藤 健志@日本イソターネット協会
E-Mail: kmuto@xxxxxxxxxxxxx
URI: http://www.three-a.co.jp/~kmuto/ (借り物)