【问题标题】:cpanm does not install modulescpanm 不安装模块
【发布时间】:2017-02-24 05:56:24
【问题描述】:

我是一个全新的 perl 用户,正在尝试安装 perl 模块及其依赖项。

我正在尝试在新的 Ubuntu 16.10 云服务器实例上安装我需要的 perl 依赖项,但它们没有注册为已安装。

例如

cpanm --skip-installed LWP::Simple

表演

--> Working on LWP::Simple
Fetching http://www.cpan.org/authors/id/O/OA/OALDERS/libwww-perl-6.21.tar.gz ... OK
Configuring libwww-perl-6.21 ... OK
==> Found dependencies: WWW::RobotRules, Net::HTTP, File::Listing, HTTP::Daemon, Test::RequiresInternet, Test::Fatal, HTTP::Negotiate, HTTP::Cookies
--> Working on WWW::RobotRules
Fetching http://www.cpan.org/authors/id/G/GA/GAAS/WWW-RobotRules-6.02.tar.gz ... OK
Configuring WWW-RobotRules-6.02 ... OK
Building and testing WWW-RobotRules-6.02 ... OK
Successfully installed WWW-RobotRules-6.02
--> Working on Net::HTTP
Fetching http://www.cpan.org/authors/id/O/OA/OALDERS/Net-HTTP-6.13.tar.gz ... OK
Configuring Net-HTTP-6.13 ... OK
Building and testing Net-HTTP-6.13 ... OK
Successfully installed Net-HTTP-6.13

...

! Installing the dependencies failed: Module 'File::Listing' is not installed, Module 'HTTP::Daemon' is not installed, Module 'Test::RequiresInternet' is not installed, Module 'HTTP::Cookies' is not installed, Module 'Test::Fatal' is not installed, Module 'HTTP::Negotiate' is not installed, Module 'WWW::RobotRules' is not installed, Module 'Net::HTTP' is not installed
! Bailing out the installation for libwww-perl-6.21.
8 distributions installed

我是否使用了正确的工具? 在哪里可以找到或生成更详细的错误日志?

以下是我的安装过程中的选择,但实验可能意味着它并不完全具有代表性。

sudo apt-get install unzip make cmake perl build-essential curl cpanminus
cpanm --self-upgrade --sudo
sudo ln -s /usr/bin/unzip /bin/unzip
export PERL_INSTALL_ROOT=/home/ubuntu/perl5
export PERL5LIB=/home/ubuntu/perl5
export PERL_CPANM_OPT="--local-lib=/home/ubuntu/perl5"
mkdir -p /home/ubuntu/perl5
chown -R ubuntu:ubuntu /home/ubuntu/perl5
chown -R ubuntu:ubuntu /home/ubuntu/.cpanm
cpanm --local-lib=/home/ubuntu/perl5 local::lib && eval $(perl -I /home/ubuntu/perl5/lib/perl5/ -Mlocal::lib)
cpanm File::Copy::Recursive
cpanm Archive::Zip
cpanm --skip-installed LWP::Simple

【问题讨论】:

  • 当我遇到这种情况时,我只是告诉 cpanm 直接一个一个地安装缺少的依赖项,然后再做主要的。我不知道为什么会这样。
  • 当我自己尝试时,我遇到了那些无法安装的依赖项的依赖项。我设法在第一台服务器上破坏了 cpanm,因此我无法再复制,但新的服务器实际上可以正常工作,所以我继续前进。
  • 就我个人而言,我发现perlbrew/plenv 比弄乱 local::lib 要容易得多。
  • 另外,关于一般程序,我尝试使用为 Debian 风格的发行版 libwww-perl 等打包的模块,而不是使用 cpan。这意味着它们在包注册表中。显然,如果您正在为特定用户构建,这并不适用。

标签: perl ubuntu cpanm


【解决方案1】:

在新的服务器上,此过程有效

sudo apt-get update
sudo apt-get install unzip make cmake perl build-essential curl cpanminus
echo $?
sudo ln -s /usr/bin/unzip /bin/unzip
mkdir -p /home/ubuntu/perl5
chown -R ubuntu:ubuntu /home/ubuntu/perl5
cpanm --local-lib=/home/ubuntu/perl5 local::lib && eval $(perl -I /home/ubuntu/perl5/lib/perl5/ -Mlocal::lib)
echo "cpanm --local-lib=/home/ubuntu/perl5 local::lib && eval $(perl -I /home/ubuntu/perl5/lib/perl5/ -Mlocal::lib)" >> /home/ubuntu/.bashrc
cpanm File::Copy::Recursive
cpanm --skip-installed LWP::Simple
echo $?

【讨论】:

  • 如果你是 root,为什么要使用 local::lib?
猜你喜欢
  • 2014-09-30
  • 2019-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多