內容

名稱

App::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 模組

在指定模組的目錄中執行 `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(類似於載入 lib 路徑的 -I)。很可惜 -l 已經被佔用了。

-j Config.pm

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

如果檔案不存在,cpan 會終止。

-J

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

-l

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

-L author [ author ... ]

列出指定作者的模組。

-m

建立指定的模組。

-M mirror1,mirror2,...

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

-n

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

-O

顯示過時的模組。

-p

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

-P

找出您可以使用的最佳鏡像,並將它們用於目前的階段。

-r

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

-s

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

-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

方法

run( ARGS )

照做。

run 方法在成功時傳回 0,在失敗時傳回正數。有關數值的詳細資訊,請參閱 EXIT CODE 區段。

CPAN.pm 會將所有好東西傳送到 STDOUT,或是在設定 $CPAN::Be_Silent 時傳送到暫存檔。我必須攔截該輸出,才能找出發生了什麼事。

從 File::Path::Expand 竊取

EXIT VALUE

如果腳本認為一切都已運作,則會結束並傳回零;如果它認為有某些事情失敗,則會結束並傳回正數。但請注意,在某些情況下,它必須根據不受其控制的事物的輸出推斷失敗。目前,結束碼很模糊

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

待辦事項

* 如果有 Log4perl,則會提供初步支援,但我尚未仔細檢查所有內容,以確保在未安裝 Log4perl 時 NullLogger 能正確運作。

* 當我擷取 CPAN.pm 輸出時,我需要檢查錯誤並將它們回報給使用者。

* 警告切換

* 檢查然後離開

錯誤

* 無

另請參閱

CPANApp::cpanminus

原始碼取得

此程式碼在 GitHub 的 CPAN.pm 儲存庫中

https://github.com/andk/cpanpm

原始碼曾經在另一個 GitHub 儲存庫中分開追蹤,但正規原始碼現在在上述儲存庫中。

貢獻者

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

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

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

David Golden 協助將此整合到 CPAN.pm 儲存庫中。

Jim Keenan 修復了 _download 的各種問題

作者

brian d foy,<bdfoy@cpan.org>

版權

版權所有 (c) 2001-2021,brian d foy,保留所有權利。

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