【问题标题】:How can I install LWP::Protocol::https?如何安装 LWP::Protocol::https?
【发布时间】:2014-02-03 02:34:30
【问题描述】:

我创建了一个 Perl 脚本来运行一个 https 任务。当我运行它时,我收到错误 LWP::Protocol::https not installed。

我无法弄清楚或找到有关如何准确安装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";
}

【问题讨论】:

  • 如果错误告诉你LWP::Protocol::https没有安装,安装它。
  • 天哪。这是糟糕的一天。我需要编辑这个问题。我太着急了,我没有做正确的事情......
  • cpan 然后install LWP::Protocol::httpsinstall Bundle::LWP
  • 伙计,我以为我试过了。好的,棒极了。现在正在安装。非常感谢您的快速帮助!

标签: perl lwp


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • sudo perl -MCPAN -we 'install "LWP::Protocol::https"' 没有工作,因为一些测试失败了,你的命令有效。非常感谢!
    • 请注意,该命令中的“安装”是无操作的。只需cpan LWP::Protocol::https 即可。
    【解决方案3】:

    如果您收到此错误:

    在@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 .) 在(eval 5)第 2 行。

    您需要安装LWP::Protocol::https,例如:

    cpan LWP::Protocol::https
    

    【讨论】:

      【解决方案4】:

      很久以前,LWP 带有 HTTPS 支持。然后,in 6.02 (in 2011),他们解开了LWP::Protocol::https。如果您的程序是在旧系统上设置的并且您已升级,则此更改可能会让您感到困惑。

      由于 Perl 没有开箱即用的 SSL 支持,因此拥有一个缺少它需要的协议助手是没有意义的(请记住,HTTPS 无处不在,那时还没有那么普遍)。作为一个单独的模块,可以更轻松地进行所有设置。

      现在,这是诀窍。 LWP::Protocol::https 需要 IO::Socket::SSL 需要 Net::SSLeay 需要 openssl。如何安装取决于您,如果您的平台有现成的软件包,那可能是最好的(因为如果您知道自己不想要,就不太可能提出问题)。

      如果您想自己完成整个链,请从 [openssl]((https://www.openssl.org) 开始。排序完成后,您可以安装所需的模块,其余的先决条件将自行解决:

      # ... 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;
      

      【讨论】:

        猜你喜欢
        • 2013-10-01
        • 1970-01-01
        • 2014-05-30
        • 2015-05-05
        • 2022-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多