'perlbrew list-modules'确实返回'Perl',除此之外没有其他内容

时间:2019-01-23 13:28:32

标签: multithreading perlbrew

我已经安装了Ubuntu 16.04,并安装了Perl 5.8.7、5.18.2(均激活了线程)和5.18.1(无线程)。 目的是使用带有线程而不是派生的Perl版本,因为我已经使用thred完成了多个脚本,而派生不是合适的多线程模型(它只是派生进程)。 我遇到的第一个问题是通过cpanm -fi [name_of_module]命令安装模块时。事实上,该命令根本不返回任何内容!只是“ Perl”。当我要安装在我的便笺中想要安装的模块时,也会发生相同的事实。 我认为这个问题与以下事实有关:我可以在不使用sudo的情况下运行脚本(例如,egperl [name_of_the_script]),而当我使用“ sudo perl [name_of_the_script]”运行脚本时说“当前版本的Perl不支持线程”! 真奇怪 正确设置了perlbrew环境验证,当我键入“哪个perl”时,系统将按预期方式进入新版本目录。

不知道如何进行

1 个答案:

答案 0 :(得分:1)

我看到您在一个段落中发布了几个问题。我会尽力回答这个问题。

cpanm -fi XXX不会“完全返回任何内容”

我不确定这部分内容。如果XXX安装失败,则屏幕上可能会出现一些错误消息。 perlbrew list-modules除了Perl以外什么也不会打印,这一事实意味着可能没有安装任何东西。

您的cpanm执行程序可能是为系统perl安装隐式程序。您可以通过检查head =cpanm的第一行来验证这一点。如果不是#!/usr/bin/env perl,则可能是错误的。您希望安装者为:perlbrew install-cpanm

sudo perl

我想知道您的PATH是否设置正确–在perl -V之后运行perlbrew use 5.8.7可以显示足够的版本信息,从而告诉您perlbrew本身是否正常工作。

您可能还需要sudo -E perl来代替。 sudo重置环境变量,除非您不要求这样做(-E选项),并且可能需要PERL5LIB。