Blog

CPAN における Authority の話

ざっくりいうと: 他の人にかわりにアップロードしてもらう時は x_authority を設定するとよい

CPAN では、共同メンテナ(co-maintainer)を任命するなど、権限まわりでいろいろなことができます。 しかし、この共同メンテナ機能は、基本的にパッケージ単位で管理されていることに注意する必要があります。

得に注意が必要なのは、パッケージの追加時です。新しいパッケージが PAUSE に登録されると、そのパッケージをふくむ dist をアップロードした人が権限をもつことに なってしまいます。

たとえば Teng を例にとると、Teng の primary maintainer は nekokak さんですが、現在は cho45 さんが主にメンテナンスをおこなっています。 ある時、cho45 さんが Teng::Plugin::BeautifulQuery というパッケージを Teng に追加してリリースしたとすると、Teng::Plugin::BeautifulQuery の権限は cho45 さんがもつことになります。

この場合、もはや nekokak さんは Teng 全体をリリースすることができなくなってしまってこまります。

そういうことがないように、authority を設定しておくとよいです。

やり方は簡単で、META に x_authority を設定するか、.pm に $AUTHORITY = 'cpan:MIYAGAWA' と書けば OK です。

milla の場合は [Authority] って書くか、[Metadata] x_authority = cpan:MIYAGAWA とすればOK。

x_authority を設定しておけば、nekokak さんに primary maint がついて、cho45 さんには自動的に co-maint がつくというわけ。

なお、minilla で x_authority をつけたいときは、以下のように minil.toml にかくだけで OK です。

authority = "cpan:TOKUHIROM"

なお、x_authority は、プライマリのメンテナがいて他の人がアップロードする場合、にはききますが、3人以上のときにはうまくいきません。

説明が雑でわかりづらいかとおもいますが、わかりにくかったら↓↓ のエントリーが丁寧なのでよむといいです。 http://jawnsy.wordpress.com/2011/02/20/what-is-x_authority/