我在任何地方都找不到答案:通过 APT 安装的模块是否与通过 CPAN 安装的模块冲突?
伴随这个问题的还有这些:安装的 CPAN 模块在哪里?它们是全局访问还是仅安装用户可以访问?你怎么知道是哪一个?你怎么知道安装了什么,哪个优先?
通过 APT 安装模块时是否应该使用 CPAN?
小智 8
在 Debian 和 Ubuntu CPAN(/usr/bin/cpan
实用程序)/usr/local/lib/
默认安装模块。并且 debian 软件包将它们的文件保存在/usr/share/perl5/
和/usr/lib/perl5/
. 因此,通过安装的/usr/bin/cpan
文件不会覆盖通过 apt 安装的文件。
使用系统 perl 没有错,混合 apt 和 cpan 代码通常会起作用。
您还可以选择手动打包 apt 存储库中不可用的任何 cpan 发行版。在 dh-make-perl 工具的帮助下很容易:
dh-make-perl --cpan Some::Module && cd Some-Module* && sudo debi
Run Code Online (Sandbox Code Playgroud)
直接从 CPAN 安装时,我建议使用 local::lib 到您私有的目录。请参阅 boostrapping 技术https://metacpan.org/module/local::lib
这样,CPAN 安装的模块将仅由您的用户使用,并且它将与使用 APT 安装的模块完全分离。
如果您遇到任何问题或升级 Ubuntu 时,它还可以让您轻松删除 CPAN 安装的模块。
这就是我在 Ubuntu 上使用它的方式。
您可以同时使用两者,但它们会发生冲突。它们被写入同一个位置,因此如果您从 apt 安装某些内容,然后从 cpan 安装更高版本,则可能会出现问题。
我对 Perl 的了解不多,但在 Python 中我确实遇到了你所说的困境:apt-vs-PyPI。我个人尽可能选择 apt。这意味着我应该获得更新,而不必记住维护每个单独的 Python 包。不仅如此,这还意味着我的所有系统都应该在这些软件包的相同版本上运行。
它并不总是有效。有时,您的存储库中没有足够新的东西,或者您需要的东西没有打包。这两种方式都不是完美的,但我相信会更加完美。只要意识到你在做什么就应该没问题。
编辑- 几乎忘记了,有一种更好的方法来划分事物,这样系统就可以拥有自己的环境,并且您正在开发的任何内容都可以存在于自己的环境中(您完全使用 CPAN 进行管理),就像 Python 的virtualenv
...
/sf/ask/99671561/ Different-perl-applications
归档时间: |
|
查看次数: |
1622 次 |
最近记录: |