多分それはばかげた質問ですか?File
使用するようにモジュールをインストールすると
cpanm File
File
などの下にすべてをインストールしますFile:Listing
か?
多分それはばかげた質問ですか?File
使用するようにモジュールをインストールすると
cpanm File
File
などの下にすべてをインストールしますFile:Listing
か?
ばかげた質問ではありません。あなたが試したくない理由は理解できます。
しかし、あなたは先に進むことができます
cpanm File
と呼ばれるモジュールがないため、ほとんど何も起こりませんFile
。
CPAN のモジュールはディストリビューションごとに編成されています。1 つのディストリビューションに 1 つ以上の関連モジュールを含めることができるため、cpanm
最初に要求したモジュールがどのディストリビューションに含まれているかを確認して取得します。
そのディストリビューションの依存関係がチェックされ、古いものやまったくインストールされていないものがある場合は、それらのそれぞれを順番に取得してインストールします。最終的には、すべての依存関係が解決されるかcpanm
、進行を停止する重大なエラーが発生します。
すべての依存関係がインストールされたら、モジュールを含むディストリビューションを解凍してインストールできます。
すべてが順調であれば、それで終わりです。簡単に言えば
cpanm File
File
モジュールがないため、何もインストールされません。
cpanm File:Listing
を含むディストリビューションをインストールしますFile::Listing
。これは、執筆時点ではGAAS/File-Listing-6.04.tar.gz
そのディストリビューションにもこれらのモジュールが含まれています
File::Listing::apache
File::Listing::dosftp
File::Listing::netware
File::Listing::unix
File::Listing::vms
そのため、cpanm
最初にそれらのモジュールの依存関係がすべて満たされ、同じ基準で再帰的に続行されることが保証されます。
cpan
より包括的なコマンド セットを備えたコマンドを試してみると便利な場合があることに注意してください。最も重要なのは、モジュール、ディストリビューション、作成者、およびバンドルを名前または正規表現で一覧表示することです。
入力cpan
してプロンプトを取得する
cpan>
求めることができるとき
cpan> help
使用可能なコマンドの概要が一覧表示されます。たとえば、File::Listing
モジュールを調べることができます
cpan> m File::Listing
作者、ディストリビューション ("CPAN_FILE")、バージョンなどを表示するには、このようにします。
Module id = File::Listing
CPAN_USERID GAAS (Gisle Aas <gisle@ActiveState.com>)
CPAN_VERSION 6.04
CPAN_FILE G/GA/GAAS/File-Listing-6.04.tar.gz
UPLOAD_DATE 2012-02-15
MANPAGE File::Listing - parse directory listing
INST_FILE C:\Strawberry\perl\vendor\lib\File\Listing.pm
INST_VERSION 6.04
正規表現を使用して、同様の名前のディストリビューションを探すこともできます
cpan> d /File-Listing/
2 つの一致する分布があることを確認するには
Distribution GAAS/File-Listing-6.04.tar.gz
Distribution PLICEASE/File-Listing-Ftpcopy-0.05.tar.gz
2 items found
File-Listing
Gisle Aasのディストリビューションだけを見ることができます
cpan> d GAAS/File-Listing-6.04.tar.gz
そして、とりわけそのディストリビューションのメンバーモジュール(「CONTAINSMODS」)について言われました
Distribution id = G/GA/GAAS/File-Listing-6.04.tar.gz
CPAN_USERID GAAS (Gisle Aas <gisle@ActiveState.com>)
CPAN_VERSION 6.04
CONTAINSMODS File::Listing File::Listing::apache File::Listing::dosftp File::Listing::netware File::Listing::unix File::Listing::vms
UPLOAD_DATE 2012-02-15
cpanm
cpan
にはそのようなブラウジング機能がありません。そのため、それ自体を試してみて、完全な名前と正規表現パターンの両方でコマンドm
とおそらくd
コマンドをしばらく使用することをお勧めします。
CPAN リポジトリの構造を理解するとcpanm
、一般的な使用法がはるかに迅速かつ正確になります。
CPAN には、あなたが想像しているような階層的な組織はありません。Foo
存在し、存在するからといって、それが意味のある意味で「下」にあるFoo::Bar
ことを意味するわけではありません。そうかもしれませんが、多くの場合そうではありません。の一部ではありません。の一部ではありません。Foo::Bar
Foo
Net::SSH::Perl
Net::SSH
IO::Async
IO
tobyink と Borodin がよく説明しているように、Perl モジュールは「ディストリビューション」の一部であり、CPAN にアップロードされたパッケージ ファイルです。モジュールのインストールを要求すると、CPAN クライアントはそのモジュールを含むディストリビューションをインストールし、そのディストリビューションがビルドまたは実行に依存するすべてのディストリビューションをインストールします。
モジュールのインストールを要求すると、CPAN クライアント (cpanm など) はインデックスをチェックして、どのアーカイブ (つまり、おそらく .tar.gz ファイルですが、おそらく .tar.bz2 または .zip) に最新の承認済みバージョンが含まれているかを調べます。そのモジュールの。
次に、クライアントはそのアーカイブをダウンロードし、内部にあるインストール スクリプトを実行します。これにより、要求したモジュールだけでなく、他のバンドルされたモジュールが実際にインストールされる場合があります。(ただし、CPAN の多数のアーカイブには、それぞれ 1 つのモジュールしか含まれていません。)
途中で、クライアントは、インストールしているものにインストールが必要な依存関係があることを検出し、それらをインストールするキューに自動的に追加することもできます。
モジュールの名前は関係ありません。をインストールすると、名前が似ているからといってFoo
自動的に取得されることはありません。と同じアーカイブ ファイルにある場合にFoo::Bar
のみ、自動的に取得されます。Foo::Bar
Foo