【问题标题】:Installing cpan Modules in cygwin fails在 cygwin 中安装 cpan 模块失败
【发布时间】:2015-09-16 02:18:05
【问题描述】:

我正在尝试在 cygwin-32 位环境中从 CPAN 安装不同的 Perl 模块,并且总是得到相同类型的错误。这个来自尝试安装 Net::SSLeay,也做了制作、安装和尝试强制安装,似乎没有任何效果。

drmariad@drmariad-MOBL ~/.cpan/build/Net-SSLeay-1.70-eDSzRW$ make install

Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
chmod 755 /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/auto//Net/SSLeay/SSLeay.dll
/bin/find /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/auto/ -xdev -name \*.dll /bin/rebase -sOT -
/bin/find: paths must precede expression: /bin/rebase
Usage: /bin/find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
Makefile:731: recipe for target 'pure_install' failed
make: *** [pure_install] Error 1

大部分时间是我在安装中收到的 bin/find 失败消息,但我不知道如何更改该行为。我尝试安装的大多数模块都出现错误和失败。

【问题讨论】:

  • 我想应该是... -exec /bin/rebase ...
  • 我不知道那个命令是从哪里来的。
  • 你有什么版本的 ExtUtils::MakeMaker?
  • 这是最新的。抱歉,我没时间帮你调试。但如果命令在Makefile 中,只需添加缺少的-exec 并再次运行make install(作为一次性修复)。
  • 其实-表示应该是... | /bin/rebase ...

标签: perl cygwin cpan


【解决方案1】:

我最新的 Cygwin 自带

  • ExtUtils::MakeMaker 6.57_05
  • ExtUtils::MM_Cygwin 6.57_07

这很奇怪,但我们关心的是那个版本的 MM_Cygwin 有问题。

sub install {
    my($self, %attribs) = @_;
    my $s = ExtUtils::MM_Unix::install($self, %attribs);
    return '' unless $s;
    return $s unless %{$self->{XS}};

    my $INSTALLDIRS = $self->{INSTALLDIRS};
    my $INSTALLLIB = $self->{"INSTALL". ($INSTALLDIRS eq 'perl' ? 'ARCHLIB' : uc($INSTALLDIRS)."ARCH")};
    my $dop = "\$\(DESTDIR\)$INSTALLLIB/auto/";
    my $dll = "$dop/$self->{FULLEXT}/$self->{BASEEXT}.$self->{DLEXT}";
    $s =~ s|^(pure_install :: pure_\$\(INSTALLDIRS\)_install\n\t)\$\(NOECHO\) \$\(NOOP\)\n|$1\$(CHMOD) \$(PERM_RWX) $dll\n\t/bin/find $dop -xdev -name \\*.$self->{DLEXT} /bin/rebase -sOT -\n|m if (( $Config{myarchname} eq 'i686-cygwin') and not ( exists $ENV{CYGPORT_PACKAGE_VERSION} ));
    $s;
}

您可以将缺少的 | 添加到 /usr/lib/perl5/5.14/ExtUtils/MM_Cygwin.pm 作为快速永久修复。


另外,Cygwin 有一个名为 perl-ExtUtils-MakeMaker 的包,用于将发行版升级到 7.04_01。

...除了错误仍然存​​在。如果你安装了这个包,要修复的文件是/usr/lib/perl5/vendor_perl/5.14/ExtUtils/MM_Cygwin.pm


或者,您可以将 ExtUtils::MakeMaker 升级到最新的开发版本(使用完全不同的命令)。

cpan B/BI/BINGOS/ExtUtils-MakeMaker-7.05_22.tar.gz

【讨论】:

    猜你喜欢
    • 2018-06-19
    • 2013-11-04
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多