在 cygwin 中安装 cpan 模块失败
Installing cpan Modules in cygwin fails
我正在尝试在 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 失败消息,但我不知道如何更改该行为。我尝试安装的大部分模块都出现错误和失败。
我最新的 Cygwin 附带
- ExtUtils::MakeMaker6.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|$(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
我正在尝试在 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 失败消息,但我不知道如何更改该行为。我尝试安装的大部分模块都出现错误和失败。
我最新的 Cygwin 附带
- ExtUtils::MakeMaker6.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|$(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