第56回東京エリアDebian勉強会 & キーサインパーティー へ参加してきました!

遅れ気味ですが、メモとして残しておきたいと思います。どうして遅れたのかは、後述。

TeX ユーザの集い 2009 ([id:munepi:20090830:1251598836]) の発表後、Debian Developer の武藤さんから、キーサインパーティーのお誘いを受けて、第56回東京エリアDebian勉強会、2009年9月勉強会 へ参加してきました。

実は、私、以前にも Debian 勉強会に参加しております(第 49 回東京エリア Debian 勉強会、2009 年 2 月勉強会に参加してきました ([id:munepi:20090225:1235579596]))。

前回は、Debian パッケージングシステムで良いところをパクって、Vine に取り込めるところは取り込みました(笑)。Project Vine 代表鈴木さんがコアなところをやって下さい、私は vbootstrap のラッパーで vbuilder ([id:munepi:20090628:1246208229]) を作ってみたりと、Vine パケジの BR: 漏れも徐々に無くなる日が近いかなーと妄想しています。

今回も signing-party パッケージをパクって、caff が VineSeed でも使えるようになりました!

アキバにある ProntoLinux Cafe で時間をつぶしていました。

PRONTO -プロント-@プロントリナックスカフェ秋葉原

いや、行ったことなかったんで、どんなところかなーと。

禁煙席が狭すぎて、かつ、禁煙席が一番奥にあり、これは禁煙席の意味がないなーというのが第一印象。

無線 AP がすぐに見つかる、さすがアキバだなーと。

いざ、ミラクルリナックスへ。

今回の勉強会の会場が Linux OS、オープンソースのソリューション — MIRACLE LINUX CORPORATION だったので、あの吉岡さんにお会いできるのかなーという期待もあったのですが、残念ながら吉岡さんのお姿はありませんでした。

会場に入るやいなや、いきなり Debian の洗礼を受けます。

まるで、私の心臓に Debian の渦巻きが流れ込んでいくようです。Debian に飲み込まれる勢いです(嘘)。この名札シールを左胸に貼った瞬間だけ、心臓が苦しくなりました(笑)。

岩松さんが「なぜキーサインするのか?」という問いに対して究極の解答を出して下さいました!

それは、「リア充」:) @ http://tokyodebian.alioth.debian.org/pdf/debianmeetingresume200909-presentation.pdf

会場でやったこと:ピザをガツ食い。3 切れ食べた!

武藤さん、Henrich こと、やまねさん、岩松さん、前田さんを初め、Debian 勉強会で私の目に焼き付いておられた方々と「リアル」で交流できたことが感動です。そして、TeX ユーザの集い 2009 に参加されていた方が結構いらっしゃったことに驚いています。

VineSeed に sining-party パッケージを用意したで!

岩松さんの資料で「GPG キーサインパーティを楽に済ませるためのツール caff の紹介」によると、「caff はsigning-party パッケージで提供されている。」とのこと。

よっし、Vine Linux 上で叩いてみる:

$ sudo apt-get install signing-party

ぬぉー、見つかりませんだとさ!

仕方ない、やるかーと。

ということで 1 週間かかって、以下のパッケージを作成しました!

perl-Test-MinimumVersion-0.011-1vl6.src.rpm
perl-Test-Object-0.07-1vl6.src.rpm
perl-Text-Glob-0.08-1vl6.src.rpm
perl-Taint-Runtime-0.03-1vl6.src.rpm
perl-PAR-Dist-0.43-1vl6.src.rpm
perl-Module-Signature-0.55-1vl6.src.rpm
perl-IPC-Run3-0.043-1vl6.src.rpm
perl-Hook-LexWrap-0.22-1vl6.src.rpm
perl-GnuPG-Interface-0.36-1vl6.src.rpm
perl-File-Find-Rule-0.30-1vl6.src.rpm
perl-libintl-1.16-1vl6.src.rpm
perl-YAML-Tiny-1.39-1vl6.src.rpm
perl-YAML-0.68-1vl6.src.rpm
perl-Text-Template-1.45-1vl6.src.rpm
perl-Test-SubCalls-1.08-1vl6.src.rpm
perl-Test-Script-1.03-1vl6.src.rpm
perl-Test-ClassAPI-1.06-1vl6.src.rpm
perl-Test-CPAN-Meta-0.12-1vl6.src.rpm
perl-Perl-MinimumVersion-1.20-1vl6.src.rpm
perl-Parse-CPAN-Meta-1.39-1vl6.src.rpm
perl-Params-Util-1.00-1vl6.src.rpm
perl-PPI-1.203-1vl6.src.rpm
perl-Number-Compare-0.01-1vl6.src.rpm
perl-List-MoreUtils-0.22-1vl6.src.rpm
perl-IPC-Run-0.84-1vl6.src.rpm
perl-IO-Tty-1.08-1vl6.src.rpm
perl-File-Slurp-9999.13-1vl6.src.rpm
perl-File-Remove-1.42-1vl6.src.rpm
perl-File-Find-Rule-Perl-1.09-1vl6.src.rpm
perl-Devel-Leak-0.03-1vl6.src.rpm
perl-Config-Tiny-2.12-1vl6.src.rpm
perl-Clone-0.31-1vl6.src.rpm
perl-Class-MethodMaker-2.15-1vl6.src.rpm
perl-Class-Inspector-1.24-1vl6.src.rpm
perl-YAML-Syck-1.05-1vl6.src.rpm
urlview-0.9-1vl6.src.rpm
mutt-1.5.20-1vl6.src.rpm
signing-party-1.1.1-1vl6.src.rpm 

…、

………、

……………、気付いたら perl モジュールを 35 個も作ってしまった orz

Vineリポジトリperl モジュパケジが少なすぎでないの?

えっ、「ビルドするの、マンドクセ!」だって(笑)。

えっ、「みんな cpan2rpm 使ってるから、イラネ!」だって(笑)。

上記の perl モジュパケジは、全部 Fedora rawhide パッケージをベースに、spec ファイルを自分のメンテナンス好みに若干書き換えて、ビルドしていきました。

ひとこといいたい!perl モジュパケジの BuildRequires: loop 多すぎですよ? > Fedora rawhide

私が見たところ、%check 時の %__make test *1 で必要なテスト関連の Perl モジュパッケージの依存が多いです。

さらに、perl-Test-MinimumVersion, perl-Perl-MinimumVersion, perl-File-Find-Rule-Perl, perl-Params-Util で BR loop が起こります。

だから、どっかで一旦 rpmbuild -ba --nodeps でパッケージを作成しないといけませんでした。

この BR loop 解消に気付くのに 3 日間も要してしまった orz

リア充」を目指して、キーサインしました!

今日から私は「リア充」になりたい!

今日から私は「リア充」になれる!

今日から私は「リア充」なんや!

そのために早速、caff を走らせます。

signing-party をインストール

VineSeed 上で以下を叩きます*2

$ sudo apt-get install signing-party
caff の設定

caff コマンドを一度実行して、~/.caffrc を生成させます。

$ caff

私が設定した ~/.caffrc は以下の通り。

$CONFIG{'owner'} = 'Munehiro Yamamoto';
$CONFIG{'email'} = 'munepi あつとまく vinelinux.org';
$CONFIG{'reply-to'} = 'munepi あつとまく vinelinux.org';

$CONFIG{'keyid'} = [ qw{E3CBC854CE49DE05 8ECC83107637A1D1} ];

$CONFIG{'also-encrypt-to'} = [ qw{E3CBC854CE49DE05 8ECC83107637A1D1} ];

$CONFIG{'mail-template'} = << 'EOM';
Hi,

please find attached the user id{(scalar @uids >= 2 ? 's' : '')}
{foreach $uid (@uids) {
   $OUT .= "\t".$uid."\n";
};}of your key {$key} signed by me.

If you have multiple user ids, I sent the signature for each user id
separately to that user id's associated email address. You can import
the signatures by running each through `gpg --import`.

Note that I did not upload your key to any keyservers. If you want this
new signature to be available to others, please upload it yourself.
With GnuPG this can be done using
	gpg --keyserver pool.sks-keyservers.net --send-key {$key}

If you have any questions, don't hesitate to ask.

Regards,
{$owner}
EOM

$CONFIG{'mailer-send'} =  [ 'sendmail', '-o8' ];

~/.caff/gnupghome をきっかり 700 で作成。

$ mkdir -p -m 700 ~/.caff/gnupghome

~/.caff/gnupghome/gpg.conf を編集。

cert-digest-algo SHA256
personal-digest-preferences SHA256
keyserver pgp.nic.ad.jp
#keyserver pgp.mit.edu

必要であれば、~/.caff/gnupghome/gpg.conf を 600 に変更。

$ chmod 600 ~/.caff/gnupghome/gpg.conf

必要であれば、ローカル SMTP を立てたり、Postfix などの MTA の設定などをします。

caff を使う

もしキーサインパーティー参加者の鍵をまとめたキーリングが用意されていれば、それを取り込みます。

今回は、[debian-users:52921] 第56回 東京エリアDebian勉強会 & キーサインパーティーのお知らせ にも掲載されているように、鍵束があるので、以下のようにして取り込めます。

$ wget http://www.nigauri.org/ksp200909/ksp-200909.asc.bz2
$ bzcat ksp-200909.asc.bz2 | gpg --import

早くリア充になりたいので、早速 caff を走らせます。

caff の基本的な使い方は、以下のような感じで、自分のid と サインしたい方々のid を並べるだけです。

$ caff -u 自分のID サインする相手1のID サインする相手2のID サインする相手3のID ...

ですが、「サインしたい方々の id を並べるの、マンドクセ!」(笑)となりがちなので、こんなことを想定してか、参加者の一覧 http://www.nigauri.org/ksp200909/ksp-200909.txt があるので、ここから情報を抜き出します。

$ wget http://www.nigauri.org/ksp200909/ksp-200909.txt
$ grep '^pub[[:blank:]]*4096R/.*' ksp-200909.txt | sed -e "s|pub[[:blank:]]*4096R/\([A-Z0-9]*\) [-0-9]*.*|0x\1|g"

ここで大事なのは、強度 4096 の id のみを抜き出していることです*3

gnupghome が ~/.gnupg と異なるので、最後に import しておきます。

$ gpg --import ~/.caff/gnupghome/pubring.gpg
caff で自分にサインされたキーを取り込む

送られてきたキーを MUA で MH 形式*4にどこかのディレクトリに置きます。

後は、基本的には復号して import するだけですが、手でやっていると面倒なので、以下のような簡単なスクリプトを作って処理しました。

#!/bin/bash

KSPDIR=${HOME}/Mail/ksp
IMPORTEDDIR=${KSPDIR}/done-$(date +%Y%m%d%H%M%S)

KEYIDLIST="自分のid1 自分のid2"
KEYSRVLIST="pgp.nic.ad.jp pgp.mit.edu"

mkdir -p ${IMPORTEDDIR}

for i in ${HOME}/Mail/ksp/[0-9]*; do 
    gpg --passphrase "自分の id のパスワード" -o - $i | gpg --import; 
    mv $i ${IMPORTEDDIR}
done

for ks in $KEYSRVLIST; do
    for kid in $KEYIDLIST; do
	gpg --keyserver $ks --send-keys $kid;
    done
done
#gpg --keyserver pgp.nic.ad.jp --refresh-keys
#cp -a ${HOME}/.gnupg/pubring.gpg ${HOME}/.caff/gnupghome/

exit

最後の --refresh-keys と pubring.gpg はもう少しまともな処理を考えないと、古い鍵がたくさん混入するおそれがあります(た)!

リア充」達成!

以上より、これで私も「リア充」になれました、たぶん(汗)。

*1:ほとんどのパケジの spec ファイルではマクロを使わずに make test となっていた。

*2:近日中に、叩けるようになります。

*3:今回は、一部の方の id を抜かないといけないなので、このまま caff に渡すわけにはいきません。

*4:私は Wanderlust なので、自動的に MH 形式。