内容

名称

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 的一次性命令运行器。

选项

-a

使用 CPAN::Shell->autobundle 创建一个 CPAN.pm 自动捆绑包。

-A 模块 [ 模块 ... ]

显示指定模块的主要维护者。

-c 模块

在指定模块的目录中运行 `make clean`。

-C 模块 [ 模块 ... ]

显示指定模块的 Changes 文件

-D 模块 [ 模块 ... ]

显示模块详细信息。这将为每个过时的模块打印一行(即,本地安装但 CPAN 上有更新版本的模块)。每行包含三列:模块名称、本地版本和 CPAN 版本。

-f

强制执行指定的动作,即使它通常会失败。使用此选项来安装模块,即使它的测试失败。当您使用此选项时,-i 在您需要强制安装模块时不是可选的

% cpan -f -i Module::Foo
-F

关闭 CPAN.pm 尝试锁定任何内容。您应该谨慎使用此选项,因为您可能会遇到多个脚本尝试在同一目录中进行操作。如果您使用 -j 加载特殊配置,并且该配置设置了自己的工作目录,则这并不那么令人担忧。

-g module [ module ... ]

将模块的最新发行版下载到当前目录。

-G module [ module ... ]

未实现

将模块的最新发行版下载到当前目录,解压缩每个发行版,并为每个发行版创建一个 git 仓库。

如果您想要此功能,请查看 Yanick Champoux 的 Git::CPAN::Patch 发行版。

-h

打印帮助消息并退出。当您指定 -h 时,它会忽略所有其他选项和参数。

-i module [ module ... ]

安装指定的模块。如果没有其他开关,则隐含此开关。

-I

加载 local::lib(类似于 -I 用于加载 lib 路径)。可惜 -l 已经被占用。

-j Config.pm

加载包含 CPAN 配置数据的文件。此文件应与标准 CPAN/Config.pm 文件具有相同的格式,该文件将 $CPAN::Config 定义为一个匿名哈希。

如果文件不存在,cpan 会退出。

-J

以 CPAN.pm 使用的相同格式转储配置。这对于检查配置以及使用转储作为新自定义配置的起点很有用。

-l

列出所有已安装模块及其版本

-L author [ author ... ]

按指定作者列出模块。

-m

制作指定的模块。

-M mirror1,mirror2,...

要用于本次运行的镜像的逗号分隔列表。-P 选项可以自动为您找到它们。

-n

进行试运行,但实际上不安装任何内容。(未实现)

-O

显示过时的模块。

-p

Ping 配置的镜像并打印报告。

-P

找到您可能使用的最佳镜像,并在当前会话中使用它们。

-r

使用 CPAN::Shell->recompile 重新编译动态加载的模块。

-s

进入 CPAN.pm shell。如果您没有指定任何参数,此命令会自动执行此操作。

-t module [ module ... ]

对指定的模块运行 `make test`。

-T

不要测试模块。只需安装它们。

-u

升级所有已安装的模块。盲目执行此操作可能会导致问题,因此请备份。

-v

打印脚本版本和 CPAN.pm 版本,然后退出。

-V

打印有关 cpan 客户端的详细信息。

-w

未实现

打开 cpan 警告。这将检查各种内容,例如目录权限,并告诉您可能遇到的问题。

-x module [ module ... ]

找到您认为可能拼写错误的命名模块的近似匹配。这需要可选安装 Text::Levenshtein 或 Text::Levenshtein::Damerau。

-X

将所有命名空间转储到标准输出。

示例

# 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::MakeMakerModule::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

NONINTERACTIVE_TESTING

假设没有人关注并跳过提示,对于正确执行此操作的分布,cpan(1) 将此设置为 1,除非它已经具有值(即使该值为假)。

PERL_MM_USE_DEFAULT

对提示的问题使用默认答案。cpan(1) 将此设置为 1,除非它已经具有值(即使该值为假)。

CPAN_OPTS

PERL5OPT 一样,在命令行上指定的选项之外,添加额外的 cpan(1) 选项的字符串。

CPANSCRIPT_LOGLEVEL

要使用的日志级别,可以使用嵌入式最小日志记录器,或者如果已安装,则使用 Log::Log4perl。可能的值与 Log::Log4perl 级别相同:TRACEDEBUGINFOWARNERRORFATAL。默认值为 INFO

GIT_COMMAND

用于 Git 功能的 git 二进制文件的路径。默认值为 /usr/local/bin/git

Methods

run( ARGS )

直接执行。

run 方法在成功时返回 0,在失败时返回正数。有关值的详细信息,请参见 EXIT CODES 部分。

CPAN.pm 将所有好东西发送到 STDOUT,或者如果设置了 $CPAN::Be_Silent,则发送到临时文件。我必须拦截该输出,以便我可以找出发生了什么。

从 File::Path::Expand 中窃取

EXIT VALUES

如果脚本认为一切正常,则退出代码为零;如果脚本认为某些操作失败,则退出代码为正数。但是,请注意,在某些情况下,它必须通过它无法控制的事物的输出来推断失败。目前,退出代码很模糊

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

TO DO

* 如果可用,则对 Log4perl 提供初步支持,但我还没有完成所有工作以使 NullLogger 在未安装 Log4perl 的情况下正常工作。

* 当我捕获 CPAN.pm 输出时,我需要检查错误并将其报告给用户。

* 警告开关

* 检查然后退出

BUGS

* 未发现

SEE ALSO

CPANApp::cpanminus

源代码可用性

此代码位于 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 本身相同的条款下重新分发此代码。