目錄

名稱

CPAN::FirstTime - CPAN::Config 檔案初始化工具

語法

CPAN::FirstTime::init()

說明

init 常式會詢問幾個問題,並寫入 CPAN/Config.pm 或 CPAN/MyConfig.pm 檔案(依據目前使用哪一個檔案而定)。

以下收集了所有關於組態變數的問題和說明。

allow_installing_module_downgrades

CPAN shell 可以監控在執行 make test 之前建立的 blib/ 目錄,以判斷目前的發行版是否會導致模組被覆寫為較低版本的模組號碼。當它發現降級時,它可以讓此發行版的建置失敗。

您是否允許安裝與您已安裝的模組版本相比,版本較低的發行版(是、否、詢問/是、詢問/否)?

allow_installing_outdated_dists

CPAN shell 可以觀察在執行 make test 之前建立的 blib/ 目錄,以判斷目前的發行版是否包含使用比目前的發行版版本號更高的發行版編製索引的模組。然後,當此發行版的建置無法代表發行版的最新版本時,它可以讓建置失敗。

注意:對於此選項,選擇任何選項,但「是」都需要安裝 CPAN::DistnameInfo 才能生效。

您是否允許安裝未編製索引為所有包含模組的最高發行版版本的發行版(是、否、詢問/是、詢問/否)?

auto_commit

通常 CPAN.pm 會將設定變數保留在記憶體中,而變更需要儲存在一個單獨的「o conf commit」指令中,才能在各個工作階段之間永久儲存。如果您將「auto_commit」選項設定為 true,對設定變數的變更會自動提交至磁碟。

是否總是將對設定變數的變更提交至磁碟?

build_cache

CPAN.pm 可以限制磁碟區域的大小,以保留包含所有中間檔案的建置目錄。

建置目錄的快取大小(以 MB 為單位)?

build_dir

建置程序進行的目錄?

build_dir_reuse

在 1.88 版本之前,CPAN.pm 從未信任各個工作階段之間 build_dir 目錄的內容。自 1.88_58 以來,CPAN.pm 有一個基於 YAML 的機制,可以讓不同工作階段在相同版本的 perl 中共用 build_dir/ 目錄的內容。喜歡在安裝前幾天測試事情的人會喜歡這個功能,因為它可以節省大量時間。

如果您對以下問題回答「是」,CPAN 會嘗試儲存足夠的建置程序資訊,以便它可以在未來的工作階段中,從先前工作階段離開時的相同狀態開始。

是否在 CPAN.pm 工作階段之間儲存和重新使用發行版的狀態資訊?

build_requires_install_policy

當模組宣告另一個模組為「build_requires」先決條件時,這表示另一個模組僅需要用於建置或測試模組,但不需要永久安裝。在這種情況下,您可能還是希望安裝那個其他模組,或只是將其保留在「build_dir」目錄中,以使其僅暫時可用。安裝可以節省未來安裝的時間,但會使 Perl 安裝變得更大。

您可以選擇是否要始終安裝(是)、從不安裝(否)或始終詢問。在後一種情況下,您可以將問題的預設答案設定為是(詢問/是)或否(詢問/否)。

安裝「build_requires」模組的政策(是、否、詢問/是、詢問/否)?

cache_metadata

為了大幅加快初始 CPAN shell 啟動速度,可以使用 Storable 建立一個元資料快取。如果 Storable 不可用,將使用正常的索引機制。

注意:當 use_sqlite 開啟且 SQLite 正在執行時,不會使用此機制。

快取元資料(是/否)?

check_sigs

CPAN 套件可以由作者數位簽章,並因此透過強式密碼編譯提供的安全性進行驗證。確切的機制定義在 Module::Signature 模組中。雖然這通常被認為是一件好事,但對於最終使用者來說,安裝簽章不正確的模組、作者的金鑰不可用、或 Module::Signature 的某些先決條件有錯誤等情況並不總是方便的。

使用 check_sigs 參數,您可以開啟和關閉簽章檢查。目前預設為關閉,因為某些人尚未將功能的整個工具鏈視為成熟。CPAN.pm 的作者建議大部分時間將其設定為 true,只有在它造成困擾時才將其關閉。

請注意,如果您沒有安裝 Module::Signature,將不會執行任何簽章檢查。

如果套件中有 SIGNATURE 檔案且已安裝 Module::Signature,是否始終嘗試檢查和驗證簽章(是/否)?

cleanup_after_install

安裝模組且不打算回顧的使用者,可以在成功安裝後立即讓 CPAN.pm 清理每個建置目錄,以快速釋放佔用的磁碟空間。

在成功安裝後移除建置目錄?(是/否)?

colorize_output

當您安裝 Term::ANSIColor 時,您可以開啟彩色輸出,讓 CPAN.pm 的一般輸出、警告、除錯輸出,以及正在安裝模組的輸出之間有些視覺差異。在對 Term::ANSIColor 模組進行一些實驗後,設定您最喜歡的顏色。

請注意,在 Windows 平台上,彩色輸出也需要 Win32::Console::ANSI 模組。

您要開啟彩色輸出嗎?

colorize_print

一般輸出的顏色?

colorize_warn

警告的顏色?

colorize_debug

除錯訊息的顏色?

commandnumber_in_prompt

cpan shell 的提示可以包含目前的命令編號,以方便追蹤工作階段,或是一個純粹的字串。

您要在提示中顯示命令編號嗎?(是/否)?

connect_to_internet_ok

如果您從未在組態中定義自己的 urllist,則 CPAN.pm 會猶豫是否使用內建的預設下載網站。它會在每個工作階段詢問您一次是否可以連線到網際網路,而且只有在您回答「是」時,它才會嘗試連線。但為了避免這個問題,您可以選擇您最喜歡的下載網站一次,然後就可以解決這個問題。或者,如果您沒有最喜歡的下載網站,請回答下列問題「是」。

如果尚未選擇任何 urllist,您是否希望 CPAN.pm 在不詢問的情況下連線到內建的預設網站?(是/否)?

ftp_passive

我們是否應該在處理 ftp 下載時,總是設定 FTP_PASSIVE 環境變數?(是/否)?

ftpstats_period

下載統計資料會同時依據大小和期間進行截斷。

我們應該保留多少天關於下載的統計資料?

ftpstats_size

關於下載的統計資料會同時依據大小和期間而被截斷。將此設定為零或負數會停用下載統計資料。

我們應該在關於下載的統計資料中保留多少個項目?

getcwd

CPAN.pm 會經常變更目前的工作目錄,並需要決定它自己的目前工作目錄。預設它會使用 Cwd::cwd,但如果因為某個原因這在你的系統上無法運作,可以根據下列表格設定其他選項

cwd         Cwd::cwd
getcwd      Cwd::getcwd
fastcwd     Cwd::fastcwd
getdcwd     Cwd::getdcwd
backtickcwd external command cwd

決定目前工作目錄的首選方法?

halt_on_failure

通常,CPAN.pm 會繼續處理目標和依賴項目的完整清單,即使其中之一失敗。不過,你可以指定 CPAN 在第一次失敗後就停止。 (請注意,失敗的建議或推薦模組不會導致停止。)

你想要在失敗時停止嗎 (是/否)?

histfile

如果你安裝了其中一個 readline 套件 (Term::ReadLine::Perl、Term::ReadLine::Gnu,可能還有其他),互動式 CPAN shell 將會支援記錄。接下來的兩個問題會處理記錄檔檔名和大小。如果你不想設定這個變數,請對下列問題按空白鍵再按 Enter。

要儲存記錄的檔案?

histsize

要儲存的行數?

inactivity_timeout

有時你可能希望讓 CPAN 執行的程序自行執行,而不必理會它們。因為 Makefile.PL 或 Build.PL 有時會包含你預期要回答的問題,你可以設定一個計時器,它會在指定的秒數後終止「perl Makefile.PL」程序。

如果你將這個值設定為 0,這些程序會永遠等待。這是預設且建議的設定。

{Makefile,Build}.PL 期間不活動的逾時時間?

index_expire

CPAN 索引通常會每小時重建一次或兩次,但典型的 CPAN 鏡像網站只會每天鏡像一次或兩次。視你的鏡像網站品質和你想搶先使用最新功能的程度而定,你可能想要將下列值設定為多於或少於一天 (這是預設值)。它會決定 CPAN.pm 下載新索引的間隔天數。

讓索引在多少天後過期?

inhibit_startup_message

當 CPAN shell 啟動時,它通常會顯示一個問候訊息,其中包含執行的版本和 readline 支援的狀態。

你想要關閉這個訊息嗎?

keep_source_where

除非您透過檔案存取檔案系統中的 CPAN:URL,CPAN.pm 需要將下載的原始檔案保存在某個地方。請提供一個目錄來儲存下載的檔案。

下載目標目錄?

load_module_verbosity

當 CPAN.pm 載入模組以取得某些選用功能時,它通常會回報模組名稱和版本。選擇「v」以取得此訊息,「none」以略過它。

載入模組的詳細程度(none 或 v)?

makepl_arg

每個 Makefile.PL 都會由 perl 在個別程序中執行。同樣地,我們會在個別程序中執行「make」和「make install」。如果您有任何參數(例如 PREFIX、UNINST 或類似參數)想要傳遞給呼叫,請在此處指定它們。

如果您不了解這個問題,請按 ENTER。

典型的常用設定

PREFIX=~/perl    # non-root users (please see manual for more hints)

「perl Makefile.PL」指令的參數?

make_arg

「make」指令的參數?典型的常用設定

-j3              # dual processor system (on GNU make)

您的選擇

make_install_arg

「make install」指令的參數?典型的常用設定

UNINST=1         # to always uninstall potentially conflicting files
                 # (but do NOT use with local::lib or INSTALL_BASE)

您的選擇

make_install_make_command

您是否要為「make install」使用不同的 make 指令?謹慎的人可能會偏好

   su root -c make
or
   sudo make
or
   /path1/to/sudo -u admin_account /path2/to/make

或類似指令。您的選擇

mbuildpl_arg

Build.PL 會由 perl 在個別程序中執行。同樣地,我們會在個別程序中執行「./Build」和「./Build install」。如果您有任何參數想要傳遞給呼叫,請在此處指定它們。

典型的常用設定

--install_base /home/xxx             # different installation directory

「perl Build.PL」指令的參數?

mbuild_arg

「./Build」指令的參數?設定可能是

--extra_linker_flags -L/usr/foo/lib  # non-standard library location

您的選擇

mbuild_install_arg

「./Build install」指令的參數?典型的常用設定

--uninst 1       # uninstall conflicting files
                 # (but do NOT use with local::lib or INSTALL_BASE)

您的選擇

mbuild_install_build_command

您是否要為「./Build install」使用不同的指令?Sudo 使用者可能會偏好

   su root -c ./Build
or
   sudo ./Build
or
   /path1/to/sudo -u admin_account ./Build

或類似指令。您的選擇

pager

您最喜歡的換頁程式是什麼?

prefer_installer

當您已安裝 Module::Build,且模組同時附有 Makefile.PL 和 Build.PL,哪一個應具有優先權?

兩個主要的標準安裝程式模組為歷史悠久且廣為使用的 ExtUtils::MakeMaker(簡稱:EUMM),它使用 Makefile.PL。以及新一代的安裝程式 Module::Build(MB),它搭配 Build.PL 使用(而且通常也附有 Makefile.PL)。如果模組僅附有這兩個檔案的其中一個,我們將使用該檔案,但如果同時提供兩個檔案,則必須在 EUMM 和 MB 之間做出決定。另請參閱 http://rt.cpan.org/Ticket/Display.html?id=29235,以了解有關正確預設值的討論。

或者,您也可以選擇 RAND 作為第三個選項,它將做出隨機決定(這會讓定期的 CPAN 測試人員感到滿意)。

如果您可以在執行 Makefile.PL 或 Build.PL 之間進行選擇,您會偏好哪一個安裝程式(EUMM、MB 或 RAND)?

prefs_dir

CPAN.pm 可以根據發行名稱的正規表示式儲存自訂的建置環境。這些是 YAML 檔案,其中可以覆寫 CPAN.pm 和環境的預設選項,並且可以儲存對話順序,以便 Expect.pm 物件稍後執行。CPAN.pm 發行版附帶一些預製的 YAML 檔案,其中包含可用作藍圖的範例發行版,以儲存您自己的喜好設定。請查看 CPAN.pm 發行版的 distroprefs/ 目錄,以快速入門喜好設定系統。

要儲存需要一些自訂的模組建置預設選項/環境/對話的目錄?

prerequisites_policy

CPAN 模組可以偵測您嘗試建置的模組是否依賴於先決條件。如果發生這種情況,它可以自動為您建置先決條件(「追蹤」)、要求您確認(「詢問」),或僅略過它們(「忽略」)。選擇「追蹤」也會設定 PERL_AUTOINSTALL 和 PERL_EXTUTILS_AUTOINSTALL 以進行「--defaultdeps」,如果尚未設定的話。

請將您的政策設定為三個值之一。

建置先決條件的政策(追蹤、詢問或忽略)?

pushy_https

布林值。預設為 true。如果此選項為 true,cpan 外殼程式將使用 https://cpan.org/ 從 CPAN 下載資料。如果因為某些原因 (缺少模組、缺少程式) 而無法處理 https,它將改用 http://cpan.org/。每當它改用 http 協定時,它將發出警告。

如果此選項為 true,將忽略 urllist 選項。因此,如果你想透過自己設定的網址清單使用本機鏡像,你必須選擇以下的否。

你要開啟 pushy_https 行為嗎?

randomize_urllist

CPAN.pm 在使用 urllist 參數中設定的下載主機時,可以引入一些隨機性。輸入 0 到 1 之間的數字值,以指示你希望 CPAN.pm 多常嘗試 urllist 中的隨機主機。值為 1 表示總是使用隨機主機作為第一次嘗試。值為 0 表示完全沒有隨機性。介於兩者之間的任何值都指定平均多久嘗試一次隨機主機。

隨機化參數

recommends_policy

(實驗性功能!)一些 CPAN 模組建議額外的選用相依性。這些通常應該安裝,除非在資源受限的環境中。當此政策為 true 時,建議的模組將與必要的模組一起包含。

包含建議的模組嗎?

scan_cache

預設情況下,每次啟動 CPAN 模組時,都會執行快取掃描以使快取大小保持同步(「atstart」)。或者,掃描和清理可以在 CPAN 退出時發生(「atexit」)。若要防止任何快取清理,請回答「never」。

執行快取掃描(「atstart」、「atexit」或「never」)?

shell

你最喜歡的外殼程式是什麼?

show_unparsable_versions

在「r」指令期間,CPAN.pm 會找到沒有版本號的模組。當指令完成時,它會列印一份關於此事的報告。如果你希望這份報告非常詳細,請對以下變數回答「是」。

顯示所有沒有 $VERSION 的個別模組嗎?

show_upload_date

「d」和「m」指令通常只會顯示它們在記憶體中資料庫中的資訊,因此永遠不會連線到網際網路。如果你將「show_upload_date」變數設定為 true,「m」和「d」還會顯示模組或套件的上傳日期。預設情況下,此功能已關閉,因為它可能需要網路連線才能取得上傳日期。

是否總是嘗試使用「d」和「m」指令顯示上傳日期(是/否)?

show_zero_versions

在「r」指令期間,CPAN.pm 會尋找版本號碼為零的模組。當指令完成時,它會列印一份關於此事的報告。如果您希望此報告非常詳細,請對下列變數回答「是」。

是否顯示所有 $VERSION 為零的個別模組?

suggests_policy

(實驗性功能!)某些 CPAN 模組建議額外的選用相依性。這些「建議」相依性提供增強的操作。當此政策為真時,建議的模組將包含在必要的模組中。

是否包含建議的模組?

tar_verbosity

當 CPAN.pm 使用 tar 指令時,應使用哪個詳細程度的切換?選擇「none」以進行靜音操作、「v」以進行檔案名稱列示、「vv」以進行完整列示。

Tar 指令詳細程度等級(none 或 v 或 vv)?

term_is_latin

下一個選項處理您的終端機支援的字元集(又稱字元組)。一般來說,CPAN 是英語系地區,因此字元集並不重要,但有些 CPAN 的名稱超出 ASCII 範圍。如果您的終端機支援 UTF-8,您應對下一個問題回答「否」。如果它預期 ISO-8859-1(也稱為 LATIN1),則您應回答「是」。如果它都不支援,您的回答並不重要,因為您無論如何都無法讀取某些作者的名稱。如果您回答「否」,名稱將以 UTF-8 輸出。

您的終端機預期 ISO-8859-1(是/否)?

term_ornaments

使用 Term::ReadLine 時,您可以開啟裝飾,以便您的輸入在 CPAN.pm 的輸出中脫穎而出。

您是否要開啟裝飾?

test_report

CPAN Testers 專案(http://testers.cpan.org/)的目標是在盡可能多的平台上測試盡可能多的 CPAN 套件。這為模組作者和潛在使用者提供有價值的回饋,以識別錯誤或平台相容性問題,並提升 CPAN 的整體品質和價值。

您可以透過傳送您安裝的每個模組的測試結果來貢獻。如果您安裝 CPAN::Reporter 模組,您可以在執行 CPAN 套件測試時選擇自動產生和傳送測試報告給 CPAN Testers。

請參閱 CPAN::Reporter 文件以取得其他詳細資料和組態設定。如果您的防火牆封鎖傳出流量,您可能需要在傳送報告前組態 CPAN::Reporter。

如果已安裝 CPAN::Reporter,是否產生測試報告(是/否)?

perl5lib_verbosity

當 CPAN.pm 透過 PERL5LIB 延伸 @INC 時,它會列印已新增目錄的清單(或已新增多少目錄的摘要)。選擇「v」以取得此訊息、「none」以抑制它。

PERL5LIB 變更的詳細程度(無或 v)?

prefer_external_tar

預設所有 untar 作業都使用 perl 模組 Archive::Tar;將此變數設定為 true 時,如果可用,將使用外部 tar 指令;在 Unix 上通常較為建議,因為它們有可靠且快速的 gnutar 實作。

使用外部 tar 程式而非 Archive::Tar?

trust_test_report_history

如果 CPAN::Reporter 已在此機器上測試過某個套件,CPAN 可以略過測試階段,僅依賴測試報告記錄。

請注意,這不適用於因缺少依賴關係而測試失敗的套件。此外,無論記錄為何,都可以使用「強制」執行測試。

您要依賴測試報告記錄嗎(是/否)?

urllist_ping_external

執行最近 cpan 鏡像自動選取時,開啟透過 Net::Ping::External 使用外部 ping。如果本機網路有透明代理伺服器,建議使用此選項。

自動選取鏡像時,您要使用外部 ping 指令嗎?

urllist_ping_verbose

執行最近 cpan 鏡像自動選取時,可以使用此選項在選取過程中開啟詳細資料。

自動選取鏡像時,您要開啟詳細資料嗎?

use_prompt_default

如果為 true,CPAN 會將 PERL_MM_USE_DEFAULT 設定為 true 值。這會導致 ExtUtils::MakeMaker(及相容)提示使用預設值,而不是停止提示您回答問題。它還會將 NONINTERACTIVE_TESTING 設定為 true 值,以更普遍地表示套件不應嘗試與您互動。

您要使用提示預設值嗎(是/否)?

use_sqlite

CPAN::SQLite 是從 CPAN 下載的索引檔案與 CPAN.pm 之間的一層,它可以加速元資料查詢,並大幅減少 CPAN.pm 的記憶體消耗。

如果可用,使用 CPAN::SQLite?(是/否)?

version_timeout

此逾時會防止 CPAN 在嘗試從模組解析病態編碼的 $VERSION 時掛起。

預設為 15 秒。如果您將此值設定為 0,則不會發生逾時,但不建議這麼做。

解析模組版本的逾時時間?

yaml_load_code

YAML.pm 和 YAML::Syck 都能反序列化程式碼。由於這需要字串 eval,這可能會造成安全風險,因此您可以使用這個選項透過 CPAN::DeferredCode 來啟用或停用程式碼的反序列化。(注意:這不適用於 perl 5.6)

您要啟用程式碼反序列化嗎(是/否)?

yaml_module

在撰寫本文時(2009-03),有三個 YAML 實作正在運作:YAML、YAML::Syck 和 YAML::XS。後兩者較快,但需要在您的系統上安裝 C 編譯器。可能還有更多符合 YAML 的替代模組。當我嘗試其他兩個播放器 YAML::Tiny 和 YAML::Perl 時,它們似乎沒有強大到足以與 CPAN.pm 搭配使用。這可能已經改變了。

您比較喜歡哪一個 YAML 實作?

LICENSE

這個程式是自由軟體;您可以在與 Perl 本身相同的條款下重新散布或修改它。