【问题标题】:List CPAN modules that have been made but not installed列出已制作但未安装的 CPAN 模块
【发布时间】:2011-02-06 01:47:14
【问题描述】:

在 Linux/类似 Linux 的环境中是否有一种简单/干净的方法来执行此操作?

目的

我的目标是仅在安装阶段以管理员权限运行 CPAN,而不是在 get/make/test 阶段。

【问题讨论】:

  • “已经制作”是什么意思?
  • @daxim:CPAN 分四个阶段构建模块:IIRC,它们是 - 它从镜像中获取和解压缩 tarball,它通过运行配置脚本来创建它们以创建 Makefile,然后运行 ​​make ,它通过运行make test 进行测试,然后通过运行make install 进行安装。

标签: linux perl cpan


【解决方案1】:

CPAN configuration itemsmake_install_make_commandmbuild_install_build_command 处理这个问题。更改它们以启用sudo 支持。

【讨论】:

  • 这不是我想要的,但它肯定会有所帮助。 o conf make_install_make_command 表示绑定到sudo make,但是尝试写入系统bin目录时安装失败,声称\usr\bin\make缺少权限...
  • 你错了,这正是你想要的。这些配置项是专门为此场景添加的,因此人们不会以提升的权限运行完整的 cpan,尤其是测试步骤。 Make 位于/usr/bin/make,注意正斜杠。更正您的配置,然后重试。
  • 这不是我所要求的,因为我有很多制作、测试和卸载的 cpan 模块,我希望我不必再次测试和安装。编写一个基于“make -n”的脚本告诉我我需要什么 - 似乎 CPAN 没有跟踪正确的事情来提供帮助。
【解决方案2】:

假设您为此使用 CPAN.pm,我有一个有点不正统的建议。

创建一个 CPAN.pm 的子类,它实际上将其使用的每个模块的结果/阶段发布到注册表(通过提供的回调 API 以使注册表实现灵活)。

那么您只需检查该注册表即可。

(或者您可以尝试将其作为补丁放入 CPAN.pm 本身)

【讨论】:

  • 我正在使用 CPAN.pm,是的。我是否应该收集到 CPAN 不记录 make 结果之外的任何状态,所以我问的确切问题的答案是:对不起,你不能这样做?
  • +1:非正统建议:这是个好主意。就我的目的而言,比记录更好的是在每个阶段成功完成时触摸文件,这可能称为cpan-did-makecpan-did-test 等。
【解决方案3】:

为了记录一种看起来很有希望但行不通的方法 - shell 命令:

找 。 -type d -mindepth 1 -maxdepth 1 -print |同时读取-r DIR;做推$DIR;使-q; MK=$?;使-q安装;安装=$?;进行-q测试; tst=$?; echo 目录 "$DIR $mk $inst $tst";弹出;完成| fgrep -ve /构建

在 cpan 构建目录中执行时,会列出 make -q 的退出状态,用于“”、“测试”和“安装”,这表明该 make 目标是否需要任何工作才能实现。

但是所有的退出状态都是非零的,这意味着如果你执行它们,它们都会做一些事情,即使 make 已经成功完成。所以你不能这样说。

【讨论】:

    猜你喜欢
    • 2010-09-12
    • 1970-01-01
    • 2016-08-14
    • 2015-09-11
    • 2017-04-13
    • 2014-02-18
    • 2018-02-21
    • 2018-06-19
    相关资源
    最近更新 更多