パスワードを忘れた? アカウント作成
163580 journal

taro-nishinoの日記: だが、私はCPANを使えない!

日記 by taro-nishino

Matt S. Trout氏が書くエッセイを読むのが私の最近の楽しみの一つなのですが、以前にも書いたことがあるように日本語に訳すのが躊躇われるような言葉が出て来ます。その言葉が実際にどれ程酷い響きを持つのか、英国人でない私には本当の所は分かりませんが、おそらく禁止語に近いと思います。
氏のエッセイの内でも、比較的禁止語が殆ど無く、面白いものに″But I can't use CPAN!″があります。いまだに、CPANを使えないとお嘆きの人にピッタリだと思います。
以下にその私訳を載せておきますが、禁止語はオブラートに包んでますので、そのつもりでお願いします。

だが、私はCPANを使えない!
2009年5月26日 Matt S. Trout

勿論、貴方はCPANを使える。ここにその理由を述べる。

だが、私はCPANを使えない!
短い回答:くだらん

比較的長い回答:ルートとして’cpan’を使えないかも。しかし、殆ど確実にコードの中にCPANモジュールを使える。

長い回答:私が何故これを書いているのか、その説明の後で書いていることに従うこと。

では、あんたは何故これを書いているのか?
やぁ、名無しの権兵衛さんよ、私はfreenode #perl上によく出入りするから(と言うより、最近私が最も活動的かどうか分からないけれども、私はオペレーターの一人である)、これを書いている。毎日、誰かが「ヘイ、俺はXをしたい」と言い、我々が「やぁ、XをするにはモジュールYを使えば」と言うが、「しかし、コアに無いじゃん、俺はCPANを使えないんだよ!」と言うから、これを書いている。

通常それに続いて行われることは、いったい何故CPANが使えないのか解明するため陰気に議論が繰り返され、間違った思い込みを正すことである(大抵、彼等は途中で立腹し、我々は実際には彼等を助けられない)。これは実に腹立たしい。

そして何よりも今日私が衝動に駆られたことは、「根本的にCPANを使えないのなら、ここで質問をしない方がいいようだ」と聞いたことである。それはアホである。我々が示唆するモジュールが本当に使えない少数の場合には、我々は喜んで別の方法を探す(屡々、「貴方の使うはずだったモジュールのソースを開き、幾ばくか盗め」という回答に帰着するけれども、それは幾分冴えていない。しかし、心配しなさんな…)。

さて、共通している俗説、その俗説がCPANを使うことを妨げない理由、貴方に代わってツールがCPANを持ち上げる方法を学ぶべき理由を調べる時である。それが長い回答である。

長い回答(やっと)
では、別の可能な状況を調べよう。

私はルートを持っていないので、CPANを使えない
それでよい。シェルとコンパイラがあれば、ブートストラップにlocal::libを使えて、貴方のスクリプトが使うに相応しい~/perl5インストール先を選べる。私は、Dreamhost上で大きくて複雑なアプリケーションをこの方法で開発して来ており、グローバルにモジュールをインストールしたくない共有開発用サーバーために何時もlocal::libを使っている。

私のユーザーがインストールしたくないので、CPANを使えない
あのね、貴方がベンダーパッケージを配っているなら、適切な従属物をそれに与えることさえ出来る。ユーザーにタルボールを処理するようにさせていると仮定しよう。その場合、Module::Installが解決法を与える。スクリプトをscript/の中に置き、Makefile.PLで

install_script(glob 'script/*');
auto_install;

をするならば、’make install’はスクリプトをどこか便利な所に置くのみならず、’make installdeps’はcpan(または、あればcpanplus)を呼び、欠落している従属物をインストールする。

私は.plファイルを配布しているだけなので、CPANを使えない
あのね…私が思うに、貴方は実のところMakefile.PLと一緒にディストリビューションを配布したかった(その場合は、先の例を見てくれ)のだろうが、その点を議論するよりも、私は解法に言及しよう。すなわち、PAR一式である。PAR::Packerを使用して、すべての従属物と貴方のアプリケーションを単一のスクリプトファイル(Cベースのモジュールが無ければ、クロスプラットフォームになるだろう)にパック出来るか、または、対象のアーキテクチャを知っているなら、Perlインタープリタまでの全てを含む一つの実行可能物を簡単に構築出来る範囲内においてパック出来る。

私のコードは任天堂DS上のクロスコンパイルされたマイクロPerlで走る必要があるので、CPANを使えない
いやぁー、貴方は尊敬すべき正しい弁明を持っている。コアモジュールだけを使って、これをする方法を気軽に我々に尋ねてくれ。

要約
貴方はおそらくCPANを使えるか、または少なくともその大部分を。すべてのプロジェクトで必要なものを再発明するより、一度ツールを学ぶことの方が簡単なのであるから、貴方の欲したことを出来る。

UNIXは私のIDEであり、Perl5は私のVMであり、CPANは私の言葉である。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

物事のやり方は一つではない -- Perlな人

読み込み中...