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 的一次性命令執行器。
使用 CPAN::Shell->autobundle 建立 CPAN.pm 自動套件。
顯示指定模組的主要維護者。
在指定模組的目錄中執行 `make clean`。
顯示指定模組的 變更 檔案
顯示模組詳細資料。這會為每個過期的模組列印一行(表示已在本地安裝的模組,但在 CPAN 上有較新的版本)。每一行有三個欄位:模組名稱、本機版本和 CPAN 版本。
強制執行指定動作,即使它通常會失敗。使用此選項來安裝模組,即使其測試失敗。使用此選項時,在需要強制安裝模組時,-i 不是選項
% cpan -f -i Module::Foo
關閉 CPAN.pm 嘗試鎖定任何項目的動作。您應小心執行此動作,因為您可能會讓多個指令碼嘗試在同一個目錄中進行修改。如果您使用 -j
載入特殊設定檔,且該設定檔設定自己的工作目錄,則這不是一個大問題。
下載模組的最新發行版到目前目錄。
未實作
下載模組的最新發行版到目前目錄,解壓縮每個發行版,並為每個發行版建立一個 git 儲存庫。
如果您想要此功能,請查看 Yanick Champoux 的 Git::CPAN::Patch
發行版。
列印說明訊息並結束。當您指定 -h
時,它會略過所有其他選項和參數。
安裝指定的模組。沒有其他開關時,此開關是隱含的。
載入 local::lib
(類似於 -I
用於載入 lib 路徑)。很可惜 -l
已被使用。
載入具有 CPAN 設定資料的檔案。這應與標準 CPAN/Config.pm 檔案格式相同,其中將 $CPAN::Config
定義為匿名雜湊。
以 CPAN.pm 使用的相同格式傾印組態。這對於檢查組態以及使用傾印作為新的自訂組態的起點很有用。
列出所有已安裝的模組及其版本
列出指定作者的模組。
製作指定的模組。
逗號分隔的鏡像清單,僅用於此執行。-P
選項可以自動為您尋找它們。
進行乾式執行,但實際上不安裝任何東西。(未實作)
顯示過期的模組。
Ping 已組態的鏡像並列印報告
尋找您可能正在使用的最佳鏡像,並將它們用於目前的階段。
使用 CPAN::Shell->recompile 重新編譯動態載入的模組。
進入 CPAN.pm 外殼。如果您未指定任何引數,此命令會自動執行此動作。
對指定的模組執行 `make test`。
不要測試模組。只需安裝它們即可。
升級所有已安裝的模組。盲目執行此動作可能會造成問題,因此請保留備份。
列印腳本版本和 CPAN.pm 版本,然後結束。
列印 cpan 用戶端詳細資訊。
未實作
開啟 cpan 警告。這會檢查各種事項,例如目錄權限,並告知您可能遇到的問題。
尋找您認為可能輸入錯誤的名稱模組的近似匹配。這需要選擇性安裝 Text::Levenshtein 或 Text::Levenshtein::Damerau。
將所有名稱空間傾印至標準輸出。
# 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::MakeMaker 和 Module::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
假設沒有人注意,並略過正確執行此操作的發行版的提示。cpan(1)
將其設定為 1
,除非它已經有值(即使該值為 false)。
對提示的問題使用預設答案。cpan(1)
將其設定為 1
,除非它已經有值(即使該值為 false)。
與 PERL5OPT
一樣,一個額外的 cpan(1)
選項字串,新增到您在命令列中指定的選項。
要使用的日誌層級,如果已安裝,則使用內嵌的最小記錄器或 Log::Log4perl。可能的數值與 Log::Log4perl
層級相同:TRACE
、DEBUG
、INFO
、WARN
、ERROR
和 FATAL
。預設值為 INFO
。
用於 Git 功能的 git
二進位檔案的路徑。預設值為 /usr/local/bin/git
。
如果腳本認為一切都正常運作,則會退出並傳回零,如果它認為有問題,則會退出並傳回正數。不過,請注意,在某些情況下,它必須透過它無法控制的事物的輸出得知失敗。目前,退出碼很模糊
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
* 來自命令列的一次性組態值
* 無
大多數行為,包括環境變數和組態,都直接來自 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 相同的條款下重新散布此程式碼。