目錄

名稱

cpan - 輕鬆從命令列與 CPAN 互動

語法

# with arguments and no switches, installs specified modules
cpan module_name [ module_name ... ]

# with switches, installs modules with extra behavior
cpan [-cfFimtTw] module_name [ module_name ... ]

# use local::lib
cpan -I module_name [ module_name ... ]

# one time mirror override for faster mirrors
cpan -p ...

# with just the dot, install from the distribution in the
# current directory
cpan .

# without arguments, starts CPAN.pm shell
cpan

# without arguments, but some switches
cpan [-ahpruvACDLOPX]

說明

此腳本提供 CPAN 的命令介面(非 shell)。目前它使用 CPAN.pm 來執行工作,但它並非 CPAN.pm 的一次性命令執行器。

選項

-a

使用 CPAN::Shell->autobundle 建立 CPAN.pm 自動套件。

-A module [ module ... ]

顯示指定模組的主要維護者。

-c module

在指定模組的目錄中執行 `make clean`。

-C 模組 [ 模組 ... ]

顯示指定模組的 變更 檔案

-D 模組 [ 模組 ... ]

顯示模組詳細資料。這會為每個過期的模組列印一行(表示已在本地安裝的模組,但在 CPAN 上有較新的版本)。每一行有三個欄位:模組名稱、本機版本和 CPAN 版本。

-f

強制執行指定動作,即使它通常會失敗。使用此選項來安裝模組,即使其測試失敗。使用此選項時,在需要強制安裝模組時,-i 不是選項

% cpan -f -i Module::Foo
-F

關閉 CPAN.pm 嘗試鎖定任何項目的動作。您應小心執行此動作,因為您可能會讓多個指令碼嘗試在同一個目錄中進行修改。如果您使用 -j 載入特殊設定檔,且該設定檔設定自己的工作目錄,則這不是一個大問題。

-g 模組 [ 模組 ... ]

下載模組的最新發行版到目前目錄。

-G 模組 [ 模組 ... ]

未實作

下載模組的最新發行版到目前目錄,解壓縮每個發行版,並為每個發行版建立一個 git 儲存庫。

如果您想要此功能,請查看 Yanick Champoux 的 Git::CPAN::Patch 發行版。

-h

列印說明訊息並結束。當您指定 -h 時,它會略過所有其他選項和參數。

-i 模組 [ 模組 ... ]

安裝指定的模組。沒有其他開關時,此開關是隱含的。

-I

載入 local::lib(類似於 -I 用於載入 lib 路徑)。很可惜 -l 已被使用。

-j Config.pm

載入具有 CPAN 設定資料的檔案。這應與標準 CPAN/Config.pm 檔案格式相同,其中將 $CPAN::Config 定義為匿名雜湊。

-J

以 CPAN.pm 使用的相同格式傾印組態。這對於檢查組態以及使用傾印作為新的自訂組態的起點很有用。

-l

列出所有已安裝的模組及其版本

-L author [ author ... ]

列出指定作者的模組。

-m

製作指定的模組。

-M mirror1,mirror2,...

逗號分隔的鏡像清單,僅用於此執行。-P 選項可以自動為您尋找它們。

-n

進行乾式執行,但實際上不安裝任何東西。(未實作)

-O

顯示過期的模組。

-p

Ping 已組態的鏡像並列印報告

-P

尋找您可能正在使用的最佳鏡像,並將它們用於目前的階段。

-r

使用 CPAN::Shell->recompile 重新編譯動態載入的模組。

-s

進入 CPAN.pm 外殼。如果您未指定任何引數,此命令會自動執行此動作。

-t module [ module ... ]

對指定的模組執行 `make test`。

-T

不要測試模組。只需安裝它們即可。

-u

升級所有已安裝的模組。盲目執行此動作可能會造成問題,因此請保留備份。

-v

列印腳本版本和 CPAN.pm 版本,然後結束。

-V

列印 cpan 用戶端詳細資訊。

-w

未實作

開啟 cpan 警告。這會檢查各種事項,例如目錄權限,並告知您可能遇到的問題。

-x module [ module ... ]

尋找您認為可能輸入錯誤的名稱模組的近似匹配。這需要選擇性安裝 Text::Levenshtein 或 Text::Levenshtein::Damerau。

-X

將所有名稱空間傾印至標準輸出。

範例

# print a help message
cpan -h

# print the version numbers
cpan -v

# create an autobundle
cpan -a

# recompile modules
cpan -r

# upgrade all installed modules
cpan -u

# install modules ( sole -i is optional )
cpan -i Netscape::Booksmarks Business::ISBN

# force install modules ( must use -i )
cpan -fi CGI::Minimal URI

# install modules but without testing them
cpan -Ti CGI::Minimal URI

環境變數

CPAN.pm 中有幾個元件使用環境變數。建置工具 ExtUtils::MakeMakerModule::Build 使用一些,而其他則與其上層有關。其中一些是由 Perl Toolchain Gang 指定

Lancaster 共識:https://github.com/Perl-Toolchain-Gang/toolchain-site/blob/master/lancaster-consensus.md

Oslo 共識:https://github.com/Perl-Toolchain-Gang/toolchain-site/blob/master/oslo-consensus.md

NONINTERACTIVE_TESTING

假設沒有人注意,並略過正確執行此操作的發行版的提示。cpan(1) 將其設定為 1,除非它已經有值(即使該值為 false)。

PERL_MM_USE_DEFAULT

對提示的問題使用預設答案。cpan(1) 將其設定為 1,除非它已經有值(即使該值為 false)。

CPAN_OPTS

PERL5OPT 一樣,一個額外的 cpan(1) 選項字串,新增到您在命令列中指定的選項。

CPANSCRIPT_LOGLEVEL

要使用的日誌層級,如果已安裝,則使用內嵌的最小記錄器或 Log::Log4perl。可能的數值與 Log::Log4perl 層級相同:TRACEDEBUGINFOWARNERRORFATAL。預設值為 INFO

GIT_COMMAND

用於 Git 功能的 git 二進位檔案的路徑。預設值為 /usr/local/bin/git

EXIT VALUES

如果腳本認為一切都正常運作,則會退出並傳回零,如果它認為有問題,則會退出並傳回正數。不過,請注意,在某些情況下,它必須透過它無法控制的事物的輸出得知失敗。目前,退出碼很模糊

1	An unknown error

2	The was an external problem

4	There was an internal problem with the script

8	A module failed to install

TO DO

* 來自命令列的一次性組態值

BUGS

* 無

SEE ALSO

大多數行為,包括環境變數和組態,都直接來自 CPAN.pm。

原始碼取得

此程式碼位於 CPAN.pm 存放庫中的 Github。

https://github.com/andk/cpanpm

原始碼過去是另外在 Github 存放庫中追蹤,但現在正規的原始碼位於上述存放庫。

致謝

Japheth Cleaver 加入允許強制安裝 (-f) 的程式碼。

Jim Brandt 建議並提供最新和變更功能的初始實作。

Adam Kennedy 指出 exit() 會在 Windows 上造成問題,因為這個指令碼最後會加上 .bat 副檔名。

作者

brian d foy,<bdfoy@cpan.org>

著作權

著作權所有 (c) 2001-2015,brian d foy,保留所有權利。

您可以在與 Perl 相同的條款下重新散布此程式碼。