perl 如何安装LWP::Protocol::https?

x8diyxa7  于 10个月前  发布在  Perl
关注(0)|答案(4)|浏览(123)

我创建了一个Perl脚本来运行https任务。当我运行它时,我得到错误LWP::Protocol::https未安装。
我不能弄清楚,或找到一个教程或命令,究竟如何安装LWP::Protocol::http。有人知道如何安装吗?安装LWP非常简单。
我已经安装了LWPCrypt-SSLeay,但我仍然得到错误。下面是我的代码:

use LWP::UserAgent;

my $ua = LWP::UserAgent->new;

# set custom HTTP request header fields

my $req = HTTP::Request->new(PUT => "https://thesite.com");

$req->header('Authorization' => 'myauth');
$req->header('Accept' => 'JSON:Application/JSON');
$req->header('Content-Type' => 'JSON:Application/JSON');
$req->header('Host' => 'api.thesite.com');

$req->content('Text' => 'thetext');


my $resp = $ua->request($req);
if ($resp->is_success) {
    my $message = $resp->decoded_content;
    print "Received reply: $message\n";
}
else {
    print "HTTP POST error code: ", $resp->code, "\n";
    print "HTTP POST error message: ", $resp->message, "\n";
}

字符串

cnh2zyt3

cnh2zyt31#

sudo yum install perl-LWP-Protocol-https为我解决问题。

vfhzx4xs

vfhzx4xs2#

运行sudo cpan install LWP::Protocol::https为我解决了这个问题。

0mkxixxg

0mkxixxg3#

如果你得到这个错误:
在@INC中找不到LWP/Protocol/https.pm(@INC包含:/etc/cxs /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .)at(eval 5)line 2.
您需要安装LWP::Protocol::https,例如使用:

cpan LWP::Protocol::https

字符串

ukqbszuj

ukqbszuj4#

很久以前,LWP支持HTTPS。然后,in 6.02 (in 2011),他们分拆了LWP::Protocol::https。如果你的程序是在一个古老的系统上设置的,而你又升级了,这个变化可能会让你绊倒。
由于Perl没有现成的SSL支持,因此使用一个缺少所需内容的协议助手是没有意义的(请记住,HTTPS在当时并不普遍)。作为一个单独的模块,更容易设置所有内容。
现在,这是诀窍。LWP::Protocol::https需要IO::Socket::SSLIO::Socket::SSL需要Net::SSLeayNet::SSLeay需要openssl。如何安装取决于你自己,如果你的平台有一个现成的软件包,那可能是最好的(因为如果你知道你不想这样,你就不太可能问你的问题)。
如果你想自己做整个链,从openssl开始。一旦分类,您就可以安装所需的模块,其余的先决条件将自行解决:

# ... install openssl, set env vars if in a nonstandard location
% cpan LWP::Protocol::https

字符串
顺便说一句,旧的Perl实践并不包括使用您知道依赖的所有模块。在本例中,您以前没有声明LWP::Protocol::https的依赖项,因为您知道它随LWP一起提供。现在最好是显式地声明您需要的所有东西,即使您知道某些模块来自同一个发行版。也许在未来的某个时候,它们会出现在不同的发行版中。
虽然我现在使用Mojo::UserAgent来处理所有这些,但我还是要添加显式依赖项,即使LWP在内部处理所有这些。这使得静态分析更容易一些:

use LWP;
use LWP::Protocol::https;

相关问题