我每次都会遇到一些小问题
cpan YAML
或者尝试安装它安装的任何 perl 模块,/root/perl5
这样任何其他用户都无法使用我作为根安装的模块。
即使我这样做
rm -frv /root/perl5 /root/.cpan
并重新运行cpan YAML
它仍然安装到根主目录中。我怎样才能改变这个?
答案1
存在一个定义默认设置的配置文件。您可以在 cpan 的安装路径下找到该文件CPAN/Config.pm
。路径通常是 /usr/lib/perl5/<version>/
.
我的建议是调整全局配置文件中makepl_arg
和的值,因为 perl 模块是通过或构建和安装的。如果你这样写:mbuildpl_arg
MakeMaker
Build
'makepl_arg' => q[INSTALLDIRS=perl INSTALLBIN=/opt/mycpanmodules/bin/ INSTALLARCHLIB=/opt/mycpanmodules/perl5/ INSTALLPRIVLIB=/opt/mycpanmodules/perl5/ INSTALLSCRIPT=/opt/mycpanmodules/perl5/ INSTALLMAN1DIR=/opt/mycpanmodules/man/ INSTALLMAN3DIR=/opt/mycpanmodules/man/],
'mbuildpl_arg' => q[--install_path lib=/opt/mycpanmodules/perl5/ --install_path arch=/opt/mycpanmodules/perl5/ --install_path script=/opt/mycpanmodules/bin/ --install_path bindoc=/opt/mycpanmodules/man/ --install_path libdoc=/opt/mycpanmodules/man/],
在通过go toConfig.pm
安装的所有模块中。cpan
/opt/mycpanmodules
最后你必须设置环境变量
PERL5LIB=/opt/mycpanmodules/perl5
以便您的本地perl
知道在哪里搜索额外安装的modules
.
答案2
检查你的.bashrc
。我在我的变量中发现了奇怪的变量:
/root/.bashrc:PERL_MM_OPT="INSTALL_BASE=/root/perl5"; export PERL_MM_OPT;
删除它们并重新登录。
答案3
您可能还想研究一下dh-make-perl
可以从 CPAN 构建 .deb 包的包。您可以先下载该模块,也可以自行dh-make-perl
下载。
更好的是,为什么不直接安装libyaml-perl
已经为 debian 打包的 CPAN YAML 包呢?
根据经验,在 debian 上查找 CPAN 模块时,请首先检查 debian 软件包列表 - 很有可能您想要的内容已经被打包了。如果不是,可能会有一个替代方案(通常,该替代方案是最好的,或者是一堆类似模块中最好的之一)。
例如apt-cache-search yaml | grep perl
...在我的系统(debian sid)上,它会生成以下列表:
$ apt-cache 搜索 yaml | grep perl libbest-perl - 可回退的模块加载器 libcgi-formbuilder-source-yaml-perl - 从 YAML 文件初始化 FormBuilder 应用程序 libcgi-session-serialize-yaml-perl - 对 CGI::Session 序列化器的 YAML 和 YAML::Syck 支持 libclone-perl - 递归复制 Perl 数据类型 libconfig-any-perl - 从不同文件格式加载配置的模块 libconfig-merge-perl - 配置模块的伞形接口 libconfig-yaml-perl - 用于操作基于 YAML 的配置文件的模块 libcpan-meta-yaml-perl - 重新实现 CPAN 元文件的 YAML 子集 libdata-phrasebook-loader-yaml-perl - 使用 YAML 的 Data::Phrasebook 加载器类 libdata-yaml-perl - Perl 数据结构的简单 YAML 序列化 libhtml-template-dumper-perl - 以测试友好的格式输出模板数据 libmoosex-blessed-reconstruct-perl - 用于创建 Moose 对象的 Data::Visitor libmoosex-yaml-perl - 从 YAML 加载 Moose 对象的模块 libpadre-plugin-datawalker-perl - 简单的 Perl 数据结构浏览器 Padre libpadre-plugin-yaml-perl - 对 Padre Perl IDE 的 YAML 支持 libparse-cpan-meta-perl - 解析 META.yml 和其他类似 CPAN 元数据文件的模块 libsql-translator-perl - SQL 翻译库 libtemplate-plugin-yaml-perl - YAML 模块的简单模板工具包插件接口 libtest-cpan-meta-perl - 用于验证 CPAN 包元数据的测试模块 libtest-cpan-meta-yaml-perl - 用于验证 META.yml 文件的测试模块 libtest-yaml-meta-perl - 过时 Test::YAML::Meta 的过渡虚拟包 libtest-yaml-valid-perl - 用于测试有效 YAML 的模块 libvitacilina-perl - Perl feed 聚合库 libyaml-appconfig-perl - 使用 YAML 和变量引用管理配置文件 libyaml-libyaml-perl - libyaml 的 Perl 接口,YAML 实现 libyaml-perl - YAML 不是标记语言 libyaml-shell-perl - YAML 测试 shell libyaml-syck-perl - Perl 模块提供快速、轻量级的 YAML 加载器和转储器 libyaml-tiny-perl - 用于读写 YAML 文件的 Perl 模块 perl-modules - 核心 Perl 模块
然后您可以使用 获取每个软件包的详细信息apt-cache show
,例如
$ apt-cache 显示 libyaml-perl 软件包: libyaml-perl 版本:0.84-1 安装数量:200 维护者:Debian Perl Group <[电子邮件受保护]> 架构:全部 取决于:perl 推荐:libyaml-libyaml-perl | libyaml-syck-perl 建议:libyaml-shell-perl 描述-en:YAML 不是标记语言 YAML 是一种通用数据序列化语言,针对人类进行了优化 可读性。它可以用来表达大多数现代的数据结构 编程语言(当然包括 Perl)。YAML 支持 Unicode 并且解析器有许多不同语言的实现, 使其成为一种相当便携的序列化格式。 。 请注意,YAML 模块目前是一个已弃用的实现 在 Pure Perl 中,这在您的系统上可能很慢。作者打算 将其改为只是各种YAML的前端接口模块 实施。目前,YAML::Any 是为此目的提供的模块, 它只是选择最佳可用 YAML 实现。 主页:http://search.cpan.org/dist/YAML/ 说明-md5: 207c6e42686e3356a6c6e3a975e92075 标签: devel::lang:perl, devel::library, Implemented-in::perl 部分:perl 优先级:可选 文件名:pool/main/liby/libyaml-perl/libyaml-perl_0.84-1_all.deb 尺寸:72812 MD5总和:4e4ab9f980f050253d403002bc7e3e39 SHA1:8f1837257d08b2eb3e7a5dbcfd73d6954b55cf98 SHA256:6636a5794490b7bd6ddfd3f87b3e6a90b4f212d5115db641fae007e7b5