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 的一次性命令執行器。
使用 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
(類似於載入 lib 路徑的 -I
)。很可惜 -l
已經被佔用了。
載入包含 CPAN 設定資料的檔案。這應與標準 CPAN/Config.pm 檔案的格式相同,其中將 $CPAN::Config
定義為匿名雜湊。
如果檔案不存在,cpan
會終止。
以 CPAN.pm 使用的相同格式傾印組態。這對於檢查組態以及使用傾印作為新的自訂組態的起點很有用。
列出所有已安裝的模組及其版本
列出指定作者的模組。
建立指定的模組。
僅用於這個執行階段的鏡像清單,以逗號分隔。-P
選項可以自動為您找到它們。
進行乾式執行,但實際上不會安裝任何東西。(未實作)
顯示過時的模組。
Ping 已組態的鏡像並印出報告
找出您可以使用的最佳鏡像,並將它們用於目前的階段。
使用 CPAN::Shell->recompile 重新編譯動態載入的模組。
進入 CPAN.pm shell。如果您未指定任何引數,此命令會自動執行此動作。
對指定的模組執行 `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
。
照做。
run
方法在成功時傳回 0,在失敗時傳回正數。有關數值的詳細資訊,請參閱 EXIT CODE 區段。
CPAN.pm 會將所有好東西傳送到 STDOUT,或是在設定 $CPAN::Be_Silent 時傳送到暫存檔。我必須攔截該輸出,才能找出發生了什麼事。
從 File::Path::Expand 竊取
如果腳本認為一切都已運作,則會結束並傳回零;如果它認為有某些事情失敗,則會結束並傳回正數。但請注意,在某些情況下,它必須根據不受其控制的事物的輸出推斷失敗。目前,結束碼很模糊
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 輸出時,我需要檢查錯誤並將它們回報給使用者。
* 警告切換
* 檢查然後離開
* 無
此程式碼在 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 相同的條款下重新散佈此程式碼。