CPAN::FirstTime - CPAN::Config 文件初始化实用程序
CPAN::FirstTime::init()
init 例程会询问一些问题,并写入 CPAN/Config.pm 或 CPAN/MyConfig.pm 文件(取决于当前使用的是哪个文件)。
以下收集了所有关于配置变量的问题和解释。
CPAN shell 可以监视在运行 make test
之前构建的 blib/
目录,以确定当前发行版是否最终会导致模块被覆盖,而模块版本号却降低了。然后,它可以在发现降级时让此发行版的构建失败。
您是否要允许安装与您已安装的模块版本相比,模块版本降低的发行版(yes,no,ask/yes,ask/no)?
CPAN shell 可以监视在运行 make test
之前构建的 blib/
目录,以确定当前发行版是否包含以比当前发行版更高的发行版版本号编入索引的模块。然后,它可以在此发行版无法代表发行版的最新版本时,让此发行版的构建失败。
注意:对于此选项,选择除 'yes' 之外的任何选项都需要安装 CPAN::DistnameInfo 才能生效。
您是否允许安装未被索引为所有包含模块的最高发行版版本的 distro(是、否、询问/是、询问/否)?
通常,CPAN.pm 会将配置变量保存在内存中,并且需要在单独的“o conf commit”命令中保存更改,以使它们在会话之间保持永久性。如果您将“auto_commit”选项设置为 true,则对配置变量的更改将始终自动提交到磁盘。
始终将对配置变量的更改提交到磁盘吗?
CPAN.pm 可以限制用于保存包含所有中间文件的构建目录的磁盘区域的大小。
构建目录的缓存大小(以 MB 为单位)?
构建过程发生在哪个目录?
在 1.88 版本之前,CPAN.pm 从未信任会话之间 build_dir 目录的内容。从 1.88_58 版本开始,CPAN.pm 具有基于 YAML 的机制,使它能够在不同会话之间共享 build_dir/ 目录的内容,前提是这些会话使用相同的 perl 版本。喜欢在安装之前测试几天的人会喜欢此功能,因为它可以节省大量时间。
如果您对以下问题回答“是”,CPAN 将尝试存储有关构建过程的足够信息,以便它可以在将来的会话中从与上次会话离开时相同的状况开始。
在 CPAN.pm 会话之间存储和重新使用有关发行版的状态信息?
当一个模块将另一个模块声明为“build_requires”先决条件时,这意味着另一个模块仅用于构建或测试该模块,而无需永久安装。在这种情况下,您可能希望安装该另一个模块,或者只是将其保留在“build_dir”目录中,以便仅临时使用它。安装可以节省将来安装的时间,但会使 perl 安装变得更大。
您可以选择始终安装(是)、从不安装(否)或始终询问。在后一种情况下,您可以将问题的默认答案设置为是(询问/是)或否(询问/否)。
安装“build_requires”模块的策略(是、否、询问/是、询问/否)?
为了显著加快 CPAN shell 的初始启动速度,可以使用 Storable 创建元数据的缓存。如果 Storable 不可用,则将使用正常的索引机制。
注意:当 use_sqlite 处于开启状态且 SQLite 正在运行时,不会使用此机制。
缓存元数据(是/否)?
CPAN 包可以由作者进行数字签名,并通过强大的密码学提供的安全性进行验证。确切的机制在 Module::Signature 模块中定义。虽然这通常被认为是一件好事,但对于最终用户来说,安装签名不正确或作者的密钥不可用或 Module::Signature 的某些先决条件存在错误等模块并不总是方便的。
使用 check_sigs 参数,您可以打开和关闭签名检查。默认情况下,目前是关闭的,因为一些人认为用于此功能的整个工具链尚未成熟。CPAN.pm 的作者建议大多数情况下将其设置为 true,只有在发现它很烦人时才将其关闭。
请注意,如果您没有安装 Module::Signature,则根本不会执行任何签名检查。
如果包中存在 SIGNATURE 文件并且安装了 Module::Signature,是否始终尝试检查和验证签名(是/否)?
安装模块且不打算回头查看的用户,可以通过让 CPAN.pm 在成功安装后立即清理每个构建目录来快速释放占用的磁盘空间。
成功安装后删除构建目录?(是/否)?
当您安装了 Term::ANSIColor 时,您可以打开彩色输出,以便在正常的 CPAN.pm 输出、警告、调试输出以及正在安装的模块的输出之间有一些视觉差异。在使用 Term::ANSIColor 模块进行一些实验后,设置您喜欢的颜色。
请注意,在 Windows 平台上,彩色输出还需要 Win32::Console::ANSI 模块。
您是否要打开彩色输出?
正常输出的颜色?
警告的颜色?
调试消息的颜色?
cpan shell 的提示符可以包含当前命令编号,以便更轻松地跟踪会话,也可以是简单的字符串。
您是否希望提示符中包含命令编号(是/否)?
如果您从未在配置中定义过自己的 urllist
,那么 CPAN.pm
将犹豫使用内置的默认站点进行下载。它会在每次会话中询问您一次,询问连接到互联网是否可以,只有当您说“是”时,它才会尝试连接。但是,为了避免这个问题,您可以选择您喜欢的下载站点一次,并摆脱它。或者,如果您没有喜欢的下载站点,请对以下问题回答“是”。
如果还没有选择 urllist,您是否希望 CPAN.pm 连接到内置的默认站点而不询问?(yes/no)?
在处理 ftp 下载时,我们是否应该始终设置 FTP_PASSIVE 环境变量?(yes/no)?
有关下载的统计信息会根据大小和时间段同时截断。
我们应该保留多少天的下载统计信息?
有关下载的统计信息会根据大小和时间段同时截断。将其设置为零或负数将禁用下载统计信息。
我们应该在下载统计信息中保留多少个项目?
CPAN.pm 经常更改当前工作目录,并且需要确定自己的当前工作目录。默认情况下,它使用 Cwd::cwd,但如果由于某种原因它在您的系统上不起作用,则可以根据下表配置备用方法。
cwd Cwd::cwd
getcwd Cwd::getcwd
fastcwd Cwd::fastcwd
getdcwd Cwd::getdcwd
backtickcwd external command cwd
确定当前工作目录的首选方法?
通常,CPAN.pm 会继续处理目标和依赖项的完整列表,即使其中一个失败。但是,您可以指定 CPAN 在第一次失败后停止。(请注意,失败的可选推荐或建议模块不会导致停止。)
您是否希望在失败时停止(yes/no)?
如果您安装了 readline 包之一(Term::ReadLine::Perl、Term::ReadLine::Gnu,可能还有其他包),交互式 CPAN shell 将具有历史记录支持。接下来的两个问题涉及历史记录文件的名称及其大小。如果您不想设置此变量,请在下一个问题中按空格键 ENTER。
保存历史记录的文件?
要保存的行数?
有时您可能希望让 CPAN 运行的进程自行运行,而不关心它们。因为 Makefile.PL 或 Build.PL 有时包含您需要回答的问题,您可以设置一个计时器,该计时器将在指定时间(以秒为单位)后杀死“perl Makefile.PL”进程。
如果您将此值设置为 0,这些进程将永远等待。这是默认设置,也是推荐设置。
在 {Makefile,Build}.PL 期间不活动超时?
CPAN 索引通常每小时重建一次或两次,但典型的 CPAN 镜像每天只镜像一次或两次。根据您的镜像质量和您对最新版本的渴望,您可能希望将以下值设置为超过或少于一天(默认值)。它决定 CPAN.pm 在多少天后下载新的索引。
索引在多少天后过期?
CPAN shell 启动时通常会显示一个问候消息,其中包含运行版本和 readline 支持的状态。
您想关闭此消息吗?
除非您通过 file: URL 访问文件系统上的 CPAN,否则 CPAN.pm 需要将下载的源文件保存在某个地方。请提供一个目录来保存下载的文件。
下载目标目录?
当 CPAN.pm 加载它需要的一些可选功能的模块时,它通常会报告模块名称和版本。选择 'v' 以获取此消息,选择 'none' 以抑制它。
加载模块的详细程度(none 或 v)?
每个 Makefile.PL 都由 perl 在一个单独的进程中运行。同样,我们在单独的进程中运行 'make' 和 'make install'。如果您有任何要传递给调用的参数(例如 PREFIX、UNINST 等),请在此处指定它们。
如果您不理解这个问题,只需按 ENTER 键。
典型的常用设置
PREFIX=~/perl # non-root users (please see manual for more hints)
'perl Makefile.PL' 命令的参数?
'make' 命令的参数?典型的常用设置
-j3 # dual processor system (on GNU make)
您的选择
'make install' 命令的参数?典型的常用设置
UNINST=1 # to always uninstall potentially conflicting files
# (but do NOT use with local::lib or INSTALL_BASE)
您的选择
您是否想对 'make install' 使用不同的 make 命令?谨慎的人可能会更喜欢
su root -c make
or
sudo make
or
/path1/to/sudo -u admin_account /path2/to/make
或类似的东西。您的选择
Build.PL 由 perl 在一个单独的进程中运行。同样,我们在单独的进程中运行 './Build' 和 './Build install'。如果您有任何要传递给调用的参数,请在此处指定它们。
典型的常用设置
--install_base /home/xxx # different installation directory
'perl Build.PL' 命令的参数?
"./Build" 命令的参数?设置可能是
--extra_linker_flags -L/usr/foo/lib # non-standard library location
您的选择
"./Build install" 命令的参数?典型的常用设置
--uninst 1 # uninstall conflicting files
# (but do NOT use with local::lib or INSTALL_BASE)
您的选择
您是否想使用不同的命令来执行 "./Build install"?Sudo 用户可能更喜欢
su root -c ./Build
or
sudo ./Build
or
/path1/to/sudo -u admin_account ./Build
或类似的东西。您的选择
您最喜欢的分页程序是什么?
当您安装了 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)?
CPAN.pm 可以根据发行版名称的正则表达式存储自定义构建环境。这些是 YAML 文件,其中可以覆盖 CPAN.pm 的默认选项和环境,并且可以存储对话序列,这些序列稍后可以由 Expect.pm 对象执行。CPAN.pm 发行版附带一些预制 YAML 文件,这些文件涵盖了可以用作蓝图来存储您自己的首选项的示例发行版。请查看 CPAN.pm 发行版的 distroprefs/ 目录以快速了解首选项系统。
存储构建需要一些自定义的模块的默认选项/环境/对话框的目录?
CPAN 模块可以检测您尝试构建的模块何时依赖于先决条件。如果发生这种情况,它可以自动为您构建先决条件('follow'),要求您确认('ask'),或者只是忽略它们('ignore')。选择 'follow' 还会为 "--defaultdeps" 设置 PERL_AUTOINSTALL 和 PERL_EXTUTILS_AUTOINSTALL(如果尚未设置)。
请将您的策略设置为以下三个值之一。
构建先决条件的策略(跟随、询问或忽略)?
布尔值。默认为 true。如果此选项为 true,cpan shell 将使用 https://cpan.org/ 从 CPAN 下载内容。如果由于某些原因(缺少模块、缺少程序)无法处理 https,它将回退到 http://cpan.org/。每当回退到 http 协议时,它都会发出警告。
如果此选项为 true,则选项 urllist
将被忽略。因此,如果您想通过您自己配置的 URL 列表使用本地镜像,您将不得不选择下面的“否”。
您是否要开启 pushy_https 行为?
CPAN.pm 在使用 urllist 参数中配置的下载主机时,可以引入一些随机性。输入 0 到 1 之间的数值,以指示您希望 CPAN.pm 多久尝试一次 urllist 中的随机主机。值为 1 表示始终使用随机主机作为第一次尝试。值为 0 表示完全没有随机性。介于两者之间的任何值都指定了平均而言,应该多久尝试一次随机主机。
随机化参数
(实验性功能!)一些 CPAN 模块推荐额外的可选依赖项。这些通常应该安装,除非在资源受限的环境中。当此策略为 true 时,推荐的模块将与必需的模块一起包含。
包含推荐的模块吗?
默认情况下,每次启动 CPAN 模块时,都会执行缓存扫描以使缓存大小保持同步('atstart')。或者,扫描和清理可以在 CPAN 退出时发生('atexit')。要防止任何缓存清理,请回答“从不”。
执行缓存扫描('atstart'、'atexit' 或 'never')?
您最喜欢的 shell 是什么?
在 'r' 命令期间,CPAN.pm 找到没有版本号的模块。命令完成后,它会打印有关此问题的报告。如果您希望此报告非常详细,请对以下变量说“是”。
显示所有没有 $VERSION 的单个模块?
'd' 和 'm' 命令通常只显示它们在内存数据库中的信息,因此永远不会连接到互联网。如果您将 'show_upload_date' 变量设置为 true,'m' 和 'd' 将另外显示模块或发行版的上传日期。默认情况下,此功能处于关闭状态,因为它可能需要网络连接才能获取上传日期。
始终尝试使用 'd' 和 'm' 命令显示上传日期(是/否)?
在执行 'r' 命令时,CPAN.pm 会找到版本号为零的模块。命令完成后,它会打印一份关于此的报告。如果您希望这份报告非常详细,请对以下变量回答“是”。
显示所有 $VERSION 为零的单个模块?
(实验性功能!) 一些 CPAN 模块建议额外的可选依赖项。这些“建议”依赖项提供了增强的操作。当此策略为真时,建议的模块将与必需的模块一起包含。
包含建议的模块?
当 CPAN.pm 使用 tar 命令时,应使用哪个详细程度的开关?选择“none”表示静默操作,“v”表示文件名列表,“vv”表示完整列表。
Tar 命令详细程度级别(none 或 v 或 vv)?
下一个选项与您的终端支持的字符集(也称为字符集)有关。一般来说,CPAN 是英语领域,所以字符集并不重要,但一些 CPAN 的名称超出了 ASCII 范围。如果您的终端支持 UTF-8,您应该对下一个问题回答“否”。如果它期望 ISO-8859-1(也称为 LATIN1),那么您应该回答“是”。如果它既不支持,您的答案无关紧要,因为您无论如何都无法读取某些作者的姓名。如果您回答“否”,名称将以 UTF-8 格式输出。
您的终端期望 ISO-8859-1(是/否)?
当使用 Term::ReadLine 时,您可以打开装饰,以便您的输入在 CPAN.pm 的输出中脱颖而出。
您想打开装饰吗?
CPAN 测试者项目(http://testers.cpan.org/)的目标是在尽可能多的平台上测试尽可能多的 CPAN 包。这为模块作者和潜在用户提供了宝贵的反馈,以识别错误或平台兼容性问题,并提高 CPAN 的整体质量和价值。
您可以贡献的一种方式是发送您安装的每个模块的测试结果。如果您安装了 CPAN::Reporter 模块,您可以选择在您对 CPAN 包运行测试时自动生成并向 CPAN 测试者发送测试报告。
有关更多详细信息和配置设置,请参阅 CPAN::Reporter 文档。如果您的防火墙阻止了出站流量,您可能需要在发送报告之前配置 CPAN::Reporter。
如果安装了 CPAN::Reporter,则生成测试报告(是/否)?
当 CPAN.pm 通过 PERL5LIB 扩展 @INC 时,它会打印添加的目录列表(或添加的目录数量摘要)。选择“v”以获取此消息,“none”以抑制它。
PERL5LIB 更改的详细程度(none 或 v)?
默认情况下,所有 untar 操作都使用 perl 模块 Archive::Tar 完成;通过将此变量设置为 true,如果可用,将使用外部 tar 命令;在 Unix 上,这通常是首选,因为它们具有可靠且快速的 gnutar 实现。
使用外部 tar 程序而不是 Archive::Tar?
当某个发行版已由 CPAN::Reporter 在此机器上测试过时,CPAN 可以跳过测试阶段,而只依赖于测试报告历史记录。
请注意,这将不适用于由于缺少依赖项而导致测试失败的发行版。此外,可以使用“force”运行测试,而不管历史记录如何。
您是否要依赖测试报告历史记录(yes/no)?
当执行最近的 cpan 镜像的自动选择时,打开通过 Net::Ping::External 使用外部 ping。如果本地网络具有透明代理,建议这样做。
您是否要在自动选择镜像时使用外部 ping 命令?
当执行最近的 cpan 镜像的自动选择时,可以使用此选项在选择过程中打开详细程度。
您是否要在自动选择镜像时看到详细程度打开?
当此值为 true 时,CPAN 将把 PERL_MM_USE_DEFAULT 设置为 true 值。这会导致 ExtUtils::MakeMaker(以及兼容的)提示使用默认值,而不是停止提示您回答问题。它还将 NONINTERACTIVE_TESTING 设置为 true 值,以更普遍地表明发行版不应尝试与您交互。
您是否要使用提示默认值(yes/no)?
CPAN::SQLite 是从 CPAN 下载的索引文件和 CPAN.pm 之间的层,它可以加快元数据查询速度,并显着减少 CPAN.pm 的内存消耗。
如果可用,使用 CPAN::SQLite?(yes/no)?
此超时机制可防止 CPAN 在尝试解析模块中病态编码的 $VERSION 时挂起。
默认值为 15 秒。如果将此值设置为 0,则不会发生超时,但不建议这样做。
解析模块版本的超时时间?
YAML.pm 和 YAML::Syck 都能够反序列化代码。由于这需要字符串 eval,这可能存在安全风险,因此可以使用此选项启用或禁用通过 CPAN::DeferredCode 反序列化代码。(注意:这在 perl 5.6 下不起作用)
您是否要启用代码反序列化(yes/no)?
在撰写本文时(2009-03),有三个 YAML 实现正在工作:YAML、YAML::Syck 和 YAML::XS。后两者速度更快,但需要在您的系统上安装 C 编译器。可能还有更多符合 YAML 规范的模块。当我尝试另外两个模块 YAML::Tiny 和 YAML::Perl 时,它们似乎不够强大,无法与 CPAN.pm 协同工作。这可能在目前已经改变了。
您希望使用哪个 YAML 实现?
本程序是自由软件;您可以根据与 Perl 本身相同的条款重新发布和/或修改它。