Debian Wheezy 和 perl 模块安装到 /root 而不是系统

Debian Wheezy 和 perl 模块安装到 /root 而不是系统

我每次都会遇到一些小问题

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_argMakeMakerBuild

'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

相关内容