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

[debian-devel:11471] Re: Debian packages from JP Project / by JP members



佐野@浜松です。

もう 2 ヶ月以上も前の話題ですが。

In <E11m0Nc-0001YS-00@xxxxxxxxxxxxxxxxxxxxx>,
 at Fri, 12 Nov 1999 04:58:12 +0900,
 on [debian-devel:10913] Re: Debian packages from JP Project / by JP members,
  Takao KAWAMURA <kawamura@debian.org> さん writes:

> > なんとなく JP Project メンバー(*1)のパッケージを調べてみました

これってもしかして (もしかしなくても) 例の LC99 に向けた準備
だったのかな、とあの発表が終ったあとに気づいてみたり。

> > pgp -kv /usr/share/keyrings/debian-jp-keyring.pgp | \
> > 	sed -e '/^Key ring:/d' \
> > 	    -e '/^Type/d' \
> > 	    -e '/matching keys found/d' \
> > 	    -e '/^\s*$/d' -e '/KEY REVOKED/d' | cut -b 31- | \
> >    while read m; do 
> > 	echo "Maintainer: $m"; 
> > 	   apt-cache dumpavail | \
> >               grep-dctrl -s Package -F Maintainer $m; echo; 	
> >    done
> > 		-- (*2)
> > 
> > 結構ださいのでかなり時間はかかりますがとりあえずパッケージ数は 
> > 206 あるみたいですね。

 time で試してみたら、6 minutes だったか、数分程度かかりますね。
 (Pentium MMX 266)

> 目を剥くようなアルゴリズムを見るとムズムズしちゃうタチなので…。

 # busybox とか dbootstrap とか覗いてみてほしかったり。

> # grep-availableを使わないのも謎。

これ、つい先程まで知りませんでした。今さっき grep-dctrl を
インストールしたばかりです。(こんな便利なものがあったのかぁ。)

> grep-available -s Maintainer,Package \.|
> sed -e '/^Maintainer:/N' -e 's/\n/\//'|
> fgrep -f <(pgp -kv /usr/share/keyrings/debian-jp-keyring.pgp|grep -v '^$'|cut -b 31-) -|
> sort|
> awk -F / -v OFS="" 'm!=$1{print "\n",$1}{print $2;m=$1}'
> 
> <()を使っちゃったので、zshとbash専用かな。shでone linerで
> 書くにはどうするんでしょう。

これだと数秒 (3 秒くらい) で終わるのでスピードの点では文句無いですが、
出力に関係無いのがまざってしまいます。

 (Package: oneko が出てきたので気がつきました。)

grep-availabel の出力にパッケージ名が入っているので、そっちで
 match してしまったものが出てくるのと、大文字小文字の違いで出力されない
ものがある (これは本来メンテナーの問題 ?) のが問題点です。
あと、pgp -kv の出力にはいろいろ余分なのが混ざってるので、それらを外した
ほうがいいんじゃないかな、と。

とりあえず以下のほうにしてみたら、2 分程度かかるようになって
しまいましたが、出力はまあまあ正しいと思われるものになりました。

 # まあそんなに大きく数値が変動するわけではないんですが、
 # 名前の入っているものなので「誤差」にしてしまうのもなんだな、と。

#! /bin/bash
grep-available -s Maintainer,Package \.| \
sed -e '/^Maintainer:/N' -e 's/\n/\//'| \
grep -i -f <(pgp -kv /usr/share/keyrings/debian-jp-keyring.pgp| \
 grep -v '^$'|cut -b 31- |sed -e '/^$/d' -e '/KEY REVOKED/d' \
 -e '/User ID/d' -e '/debian-jp-keyring/d' -e 's,$,\.*Package:,' ) \
 -| sort| awk -F / -v OFS="" 'm!=$1{print "\n",$1}{print $2;m=$1}'

んが、これでもまだ「正しい」とは言えないみたいですね。

以下のようにメールアドレスのほうだけを使って検索するようにしてみたら、
 2 秒ちょっとにまでスピードアップしたのですが、

#! /bin/bash
grep-available -n -s Maintainer,Package \.| \
 awk '{if(NR%3==1){LINE=$0;}if(NR%3==2){print LINE, "/Package:", $0;}}' |\
 fgrep -f <(pgp -kv /usr/share/keyrings/debian-jp-keyring.pgp| \
 cut -b 31- | fgrep '<' |fgrep '>'|
 sed -e 's/^.*</</' -e 's/>.*$/>/' ) -| sort| \
 awk -F / -v OFS="" 'm!=$1{print "\n",$1}{print $2;m=$1}'

これの結果を上の 2 分かかったものと比較してみると、足りないのが 3 つ
あるのはまあわかるんだけど、増えてるのも 3 つあって、しかもこの 6 つ
とも一応「正しい」(ここでいう「正しい」の意味は、検索目的である
「JP Project メンバー(*1)のパッケージ」という意味です ;) ものだったり
します。

 # ちなみにこれらの 6 つはすべて potato-jp の中のものだったり。
 # potato のほうにはこういう「変動成分」は無いようです。

上記の fgrep -f <(pgp... の部分を fgrep -i -f ... とすると、
足りないのが 1 つ減って、不足 2、追加 3 となります。
時間は 3 秒弱と、スピードもそれほど落ちないようでした。

 # この「不足」分は debian-jp-keyring.pgp のバグとして
 # 報告するべきか否か、、、ひとつはパッケージのバグかも。

> > ちなみに JP に残ってるのは 179 です。既に半分以上もっていけてますね:)
> 
> 中原さんのjtexとかがインストールされたので、もっと増えてますね。

最初の

grep-available -n -s Maintainer,Package \.| \

の部分をそれぞれ

grep-available -n -s Maintainer,Package \. \
  /var/state/apt/lists/www.jp.debian.org_debian-non-US_dists_potato_non-US_contrib_binary-i386_Packages \
  /var/state/apt/lists/www.jp.debian.org_debian-non-US_dists_potato_non-US_main_binary-i386_Packages \
  /var/state/apt/lists/www.jp.debian.org_debian-non-US_dists_potato_non-US_non-free_binary-i386_Packages \
  /var/state/apt/lists/www.jp.debian.org_debian_dists_potato_contrib_binary-i386_Packages \
  /var/state/apt/lists/www.jp.debian.org_debian_dists_potato_main_binary-i386_Packages \
  /var/state/apt/lists/www.jp.debian.org_debian_dists_potato_non-free_binary-i386_Packages |\

または

grep-available -n -s Maintainer,Package \. \
 /var/state/apt/lists/www.jp.debian.org_debian-jp_dists_potato-jp_contrib_binary-i386_Packages \
 /var/state/apt/lists/www.jp.debian.org_debian-jp_dists_potato-jp_main_binary-i386_Packages \
 /var/state/apt/lists/www.jp.debian.org_debian-jp_dists_potato-jp_non-free_binary-i386_Packages | \

とすると、potato に入った分と potato-jp に残っている分の数が
一応わかるのですが、その数値でいうと potato: 240, potato-jp: 160 でした。
実際には上記のように potato-jp には漏れが 2 つあるので、potato-jp: 162 ですね。

約 3:2 ってところかな。 woody ではすくなくとも 3:1 くらいになるように、
もっとドンドン upload できるような環境 (New Maintainer ReOpen とか) を
働きかけていきたいところです。

--
     # (わたしのおうちは浜松市、「夜のお菓子」で有名さ。)
    <kgh12351@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)