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`。
显示指定模块的 Changes 文件
显示模块详细信息。这将为每个过时的模块打印一行(即,本地安装但 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
会退出。
以 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 工具链小组指定
兰卡斯特共识:https://github.com/Perl-Toolchain-Gang/toolchain-site/blob/master/lancaster-consensus.md
奥斯陆共识:https://github.com/Perl-Toolchain-Gang/toolchain-site/blob/master/oslo-consensus.md
假设没有人关注并跳过提示,对于正确执行此操作的分布,cpan(1)
将此设置为 1
,除非它已经具有值(即使该值为假)。
对提示的问题使用默认答案。cpan(1)
将此设置为 1
,除非它已经具有值(即使该值为假)。
与 PERL5OPT
一样,在命令行上指定的选项之外,添加额外的 cpan(1)
选项的字符串。
要使用的日志级别,可以使用嵌入式最小日志记录器,或者如果已安装,则使用 Log::Log4perl。可能的值与 Log::Log4perl
级别相同:TRACE
、DEBUG
、INFO
、WARN
、ERROR
和 FATAL
。默认值为 INFO
。
用于 Git 功能的 git
二进制文件的路径。默认值为 /usr/local/bin/git
。
直接执行。
run
方法在成功时返回 0,在失败时返回正数。有关值的详细信息,请参见 EXIT CODES 部分。
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 提供初步支持,但我还没有完成所有工作以使 NullLogger 在未安装 Log4perl 的情况下正常工作。
* 当我捕获 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,<[email protected]>
版权所有 (c) 2001-2021,brian d foy,保留所有权利。
您可以在与 Perl 本身相同的条款下重新分发此代码。