内容

名称

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 提供了命令界面(不是外壳)。目前它使用 CPAN.pm 来完成这项工作,但它不是 CPAN.pm 的一次性命令运行器。

选项

-a

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

-A module [ module ... ]

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

-c module

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

-C module [ module ... ]

显示指定模块的 Changes 文件

-D module [ module ... ]

显示模块详细信息。这会为每个过时的模块打印一行(即,在本地已安装但 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 用于加载库路径)。很遗憾 -l 已被占用。

-j Config.pm

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

-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

退出值

如果脚本认为一切都正常,则退出时为零,如果认为某些内容失败,则退出时为正数。但是,请注意,在某些情况下,它必须通过它不控制的内容的输出来判断失败。目前,退出代码很模糊

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

待办事项

* 命令行的单次配置值

错误

* 未注明

另请参见

大多数行为(包括环境变量和配置)直接来自 CPAN.pm。

源代码可用性

此代码位于 CPAN.pm 存储库中的 Github 中

https://github.com/andk/cpanpm

源代码过去在另一个 GitHub 存储库中单独跟踪,但规范源代码现在位于上述存储库中。

鸣谢

Japheth Cleaver 添加了允许强制安装 (-f) 的位。

Jim Brandt 建议并提供了最新和更改功能的初始实现。

Adam Kennedy 指出 exit() 会在 Windows 上导致问题,此脚本最终会以 .bat 扩展名结尾

作者

brian d foy,<[email protected]>

版权

版权所有 (c) 2001-2015,brian d foy,保留所有权利。

您可以在与 Perl 相同的条款下重新分发此内容。