CPAN

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
CPANロゴ

包括的なPerlアーカイブネットワークCPAN)は、250,000を超えるソフトウェアモジュールと、12,000を超える寄稿者によってPerlプログラミング言語で記述された39,000のディストリビューションの付属ドキュメントリポジトリです。[1] CPANは、アーカイブネットワーク、またはネットワークへのインターフェイスとして、また自動ソフトウェアインストーラー(パッケージマネージャーのようなもの)として機能するPerlプログラムのいずれかを表すことができます。CPANのほとんどのソフトウェアは、無料のオープンソースソフトウェアです。[2]

歴史

CPANは1993年に考案され、1995年10月からオンラインで活動しています。[3] CTANモデルに基づいており、散在するPerlアーカイブの構造を統合する場所として始まりました。[4]

役割

多くのプログラミング言語と同様に、Perlにはコードの外部ライブラリを使用するメカニズムがあり、1つのファイルに複数のプログラムで使用される共通のルーチンが含まれています。Perlはこれらのモジュールを呼び出します。 Perlモジュールは通常、最初にコンパイルされたときにパスがPerlインタープリターに配置されるいくつかのディレクトリーの1つにインストールされます。Unixライクなオペレーティングシステムは、一般的なパスには/ usr / lib / perl5/ usr / local / lib / perl5、およびそれらのサブディレクトリのいくつかが含まれます。

Perlには、コアモジュールの小さなセットが付属していますこれらのいくつかは、ExtUtils :: MakeMaker [5]などのブートストラップタスクを実行します。これは、他の拡張モジュールをビルドおよびインストールするためのMakefileを作成するために使用されます。List :: Util、[6]のような他のものは、単に一般的に使用されます。

CPANの主な目的は、プログラマーがPerl標準ディストリビューションに含まれていないモジュールやプログラムを見つけられるようにすることです。その構造は分散化されています。著者は、独自のモジュールを維持および改善します。フォークし、同じタスクまたは目的で競合するモジュールを作成するのが一般的です。アップロードされたディストリビューションに対して自動的にセットアップされるサードパーティのバグ追跡システムがありますが、作成者はGitHubなどの別のバグ追跡システムを使用することを選択できます。同様に、GitHubは配布用のソースを保存するのに人気のある場所ですが、作成者が好む場所に保存することも、公的にアクセスできない場所に保存することもできます。メンテナは、モジュールを維持または引き継ぐために他の人に許可を与えることができ、放棄されたモジュールを引き継ぐことを望む人のために管理者によって許可を与えることができます。更新されたディストリビューションの以前のバージョンは、アップローダーによって削除されるまでCPANに保持され、BackPANと呼ばれるセカンダリミラーネットワークは、CPANから削除された場合でもディストリビューションを保持します。[7]また、CPANとそのすべてのモジュールの完全な履歴は、GitPANプロジェクトとして利用できます[8]。すべてのモジュールの完全な履歴を簡単に確認でき、フォークのメンテナンスも簡単です。CPANは、Perlの新しいバージョンや、 ParrotRakuなどの関連プロジェクトの配布にも使用されます

構造

CPAN上のファイルはディストリビューションと呼ばれます。ディストリビューションは、1つ以上のモジュール、ドキュメントファイル、またはgzip圧縮された tarアーカイブやZIPファイルなどの一般的なアーカイブ形式でパッケージ化されたプログラムで構成されている場合があります。ディストリビューションには、多くの場合、インストールスクリプト(通常はMakefile.PLまたはBuild.PLと呼ばれます)と、ディストリビューションのコンテンツが正しく機能していることを確認するために実行できるテストスクリプトが含まれています。新しいディストリビューションは、Perl Authors Upload ServerまたはPAUSEにアップロードされます(PAUSEを使用したディストリビューションのアップロードのセクションを参照)。

2003年に、ディストリビューションにはMETAと呼ばれるメタデータファイルが含まれるようになりました。yml、ディストリビューションの名前、バージョン、依存関係、およびその他の有用な情報を示します。ただし、すべてのディストリビューションにメタデータが含まれているわけではありません。メタデータがディストリビューションに存在しない場合、PAUSEのソフトウェアはディストリビューション内のコードを分析して同じ情報を探します。これは必ずしも信頼できるとは限りません。2010年に、この仕様のバージョン2が作成され[9] 、 METAと呼ばれる新しいファイルを介して使用されます。jsonは、下位互換性のためにYAML形式のファイルも含まれていることがよくあります

何千ものディストリビューションがあるため、CPANは有用であるように構造化する必要があります。作成者は、目的やドメインに応じて、モジュールをPerlモジュール名(Apache::DBIまたはなどLingua::EN::Inflect)の自然な階層に配置することがよくありますが、これは強制されません。

CPANモジュールディストリビューションには通常CGI-Application-3.1の形式の名前があります(モジュールの名前で使用されている::はダッシュに置き換えられ、バージョン番号が名前に追加されています)が、これは単なる慣例です; 多くの著名なディストリビューション、特に複数のモジュールを含むディストリビューションは、慣例に違反しています。セキュリティ上の制限により、ディストリビューションが同じファイル名に置き換えられることはありません。そのため、事実上すべてのディストリビューション名にバージョン番号が含まれています。

コンポーネント

CPANの配信インフラストラクチャは、60か国以上にある250を超えるミラーの世界的なネットワークで構成されています。[10]各フルミラーは約31ギガバイトのデータをホストします。[11]

ほとんどのミラーは、CPANマスターサイトから1時間ごと、1日ごと、または2日ごとに更新されます。[12]いくつかのサイトは、他の多くのソフトウェアをミラーリングする主要なFTPサーバーですが、他のサイトは、Perlを多用する企業が所有するサーバーです。南極大陸を除くすべての大陸に少なくとも2つの鏡があります。

PerlプログラマーがCPANを分類するのを助けるために、いくつかの検索エンジンが書かれています。公式検索.cpan.orgは、テキスト検索、モジュールの閲覧可能なインデックス、および現在CPANにあるすべてのディストリビューションの抽出されたコピーが含まれています。2018年5月16日、Perl Foundationは、コードベースの老朽化とメンテナンスの負担のため、search.cpan.orgが2018年6月29日(19年間の運用後)にシャットダウンされることを発表しました。ユーザーは移行され、サードパーティの代替MetaCPANにリダイレクトされます。[13] [14]

CPANテスターはボランティアのグループであり、CPANにアップロードされたディストリビューションをダウンロードしてテストします。これにより、作成者は、他の方法ではアクセスできない多くのプラットフォームや環境でモジュールをテストできるため、移植性とある程度の品質を向上させることができます。スモークテスターはレポートを送信します。レポートは照合され、メインのレポートサイト、統計、依存関係など、さまざまなプレゼンテーションWebサイトで使用されます。

作成者は、 Perl Authors Upload Server(PAUSE)を介して新しいディストリビューションをCPANにアップロードできます。そのためには、PAUSEアカウントをリクエストする必要があります。

登録すると、 pause.perl.orgのWebインターフェイス、またはFTPインターフェイスを使用して、ファイルをディレクトリにアップロードして削除できます。アップロード内のモジュールは、モジュール名が以前に使用されたことがない場合(アップローダーに先着順のアクセス許可を付与する場合)、またはアップローダーがその名前のアクセス許可を持っている場合、およびモジュールがどのバージョンよりも高いバージョンである場合にのみ、正規としてインデックス付けされます。既存のエントリ。[15]これは、PAUSEのWebインターフェースを介して指定できます。

CPAN.pm、CPANPLUS、およびcpanminus

CPANという名前のPerlコアモジュールもあります。通常、CPAN.pmという名前を使用して、リポジトリ自体と区別されます。CPAN.pmは主に、ディストリビューションの検索、ダウンロード、インストールに使用できるインタラクティブなシェルです。cpanと呼ばれるインタラクティブシェルもPerlコアで提供されており、CPAN.pmを実行する通常の方法です。短い構成プロセスとミラーの選択の後、ユーザーのコンピューターで使用可能なツールを使用して、モジュールを自動的にダウンロード、解凍、コンパイル、テスト、およびインストールします。また、それ自体を更新することもできます。

CPAN.pmをよりクリーンでよりモダンなものに置き換える努力の結果、CPANPLUS(またはCPAN ++)モジュールのセットが作成されました。CPANPLUSは、モジュールのダウンロード、コンパイル、およびインストールのバックエンド作業を、コマンドの発行に使用される対話型シェルから分離します。また、暗号署名チェックやテスト結果レポートなど、いくつかの高度な機能もサポートしています。最後に、CPANPLUSはディストリビューションをアンインストールできます。CPANPLUSはバージョン5.10.0でPerlコアに追加され、バージョン5.20.0で削除されました。

これらのCPANインストーラーに代わる、より小さく、よりスリムな最新の代替手段がcpanminusと呼ばれるように開発されました。cpanminusは、限られたメモリ環境で必要とされるメモリフットプリントがはるかに小さく、スタンドアロンスクリプトとして使用できるように設計されているため、それ自体をインストールすることもでき、予想されるコアPerlモジュールのセットのみが使用可能である必要があります。また、cpanmをインストールするモジュールApp :: cpanminusとしてCPANから入手できます。脚本。永続的な構成を維持または依存しませんが、環境とコマンドラインオプションによってのみ構成されます。cpanminusには、インタラクティブなシェルコンポーネントはありません。前提条件を指定するためのcpanfile形式を認識します。これは、CPANインストール用に設計されていない可能性のあるアドホックPerlプロジェクトで役立ちます。cpanminusには、ディストリビューションをアンインストールする機能もあります。

これらの各モジュールは、ディストリビューションの依存関係をチェックし、自動的に、または個々のユーザーの承認を得て、前提条件を再帰的にインストールできます。それぞれがFTPとHTTPをサポートし、ファイアウォールとプロキシを介して機能します。

影響力

経験豊富なPerlプログラマーは、Perlの能力の半分がCPANにあるとコメントすることがよくあります。Perlのキラーアプリと呼ばれています。[16]これはPHPのPECLおよびPEARほぼ同等です。Python用のPyPI ( Python Package Index)リポジトリ; Ruby用のRubyGems ; RCRAN ; Node.jsnpm ; Lua用のLuaRocks ; Maven for Java ; HaskellハッキングCPANは、調停された名前空間、テスト体制、および明確に定義されたドキュメントスタイルを使用しているため、CPANは独自のものになっています。

Perl開発者コミュニティにとっての重要性を考えると、CPANはPerlの文化によって形作られ、形作られています。その「自己任命されたマスター司書」であるJarkkoHietaniemiは、エイプリルフールのジョークにしばしば参加します。2002年4月1日、サイトは一時的にCJANと名付けられ、「J」は「Java」の略でした。2003年に、ドメイン名はMattのScript Archivewww.cpan.orgにリダイレクトされました。これは、コードの記述が不適切なことでPerlコミュニティで悪名高いサイトです。[17] [18] [19]

CPANの一部のディストリビューションは、ジョークとして配布されています。階層はAcme::ジョークモジュール用に予約されています。たとえば、与えられたコードを実行しない関数をAcme::Don't追加します(組み込みを補完するために実行します)。階層の外でも、一部のモジュールは主に娯楽のために書かれています。1つの例は、ラテン語のサブセットでPerlプログラムを作成するために使用できるです。 don'tdoAcme::Lingua::Romana::Perligata

2005年には、JavaScriptにも関心を持つPerl開発者のグループが集まり、JavaScriptアーカイブネットワークであるJSANを作成しました。JSANは、JavaScript言語で使用するためのCPANインフラストラクチャのほぼ直接的なポートであり、その寿命のほとんどの間、まとまりのある「コミュニティ」がありませんでした。

2008年、オープンソース開発者会議でCPAN管理者のAdam Kennedyと偶然会った後、Linuxカーネル開発者のRusty Russellは、包括的なCアーカイブネットワークであるCCANを作成しました。CCANは、C言語で使用するためのCPANアーキテクチャの直接ポートです。

包括的なRアーカイブネットワークであるCRANは、Rプログラミング言語の配布、ドキュメント、および提供された拡張機能をホストするミラーのセットです。[20]

参考文献

  1. ^ 「CPANフロントページ」2016年1月27日取得
  2. ^ 「PerlとCPANモジュールはどのようにライセンスされていますか?」すべてではありませんが、CPANのほとんどのモジュールは、GNU General Public License(GPL)またはArtisticライセンスの下でライセンスされています...
  3. ^ 「Perlのタイムラインとその文化」
  4. ^ 「CPANのGrokking」(PDF)TeXの正規サイトのコレクションを作成することに成功したCTANプロジェクトのように、私たちは協力して統一された構造を作成することを提案します
  5. ^ "ExtUtils :: MakeMaker-モジュールMakefileを作成します-Perldocブラウザ"perldoc.perl.org 2020年11月18日取得
  6. ^ "List :: Util-一般ユーティリティリストサブルーチンの選択-Perldocブラウザ"perldoc.perl.org 2020年11月18日取得
  7. ^ 「BackPAN」2019年12月20日取得
  8. ^ 「Gitpanとは何ですか?」GitHub2015年12月2日2016年11月16日取得
  9. ^ "CPAN :: Meta :: History" 2019年12月20日取得
  10. ^ 「CPANミラーネットワーク」2016年11月16日取得
  11. ^ 「CPANをミラーリングする方法」CPAN.org 2016年11月15日取得
  12. ^ 「CPANステータスと統計」2010年5月9日取得
  13. ^ 「時代の終わり:search.cpan.orgに別れを告げる」log.perl.org 2018年5月22日取得
  14. ^ 「search.cpan.orgに別れを告げる」perl.com 2018年6月26日取得
  15. ^ 「PAUSEオペレーティングモデル」GitHub2019年12月20日取得
  16. ^ 「Re:PERLのキラーアプリ」2013年2月24日取得
  17. ^ 「Perlによるプログラミングの要素」2000年10月12日2013年4月25日取得
  18. ^ 「このformmail.plを楽しんで、そして、まあ、楽しみのために利用してください」2001年8月7日2013年4月25日取得
  19. ^ 「マットのスクリプトアーカイブが再びストライキ!」2001年7月4日2013年4月25日取得
  20. ^ 「CRANとは何ですか?」2019年12月20日取得

外部リンク