在cygwin中安装cpan模块失败

时间:2015-06-29 14:46:33

标签: perl cygwin cpan

我正在尝试在cygwin-32bit环境中从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失败消息,但我不知道如何更改该行为。我尝试安装的大多数模块都出现了错误和失败。

1 个答案:

答案 0 :(得分:1)

我的最新更新Cygwin附带

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

由于某些原因,这很奇怪,但我们关心的是MM_Cygwin的版本是错误的。

xi1 = rand(1,10);
x1 = [1 2 3 4 5];
xi2 = [1 1.5];
x2 = [1 2 3 4 5];
n1 = length(x1) - 1;
ni1 = length(xi1);
L1 = ones(n1+1,ni1);
for k = 0 : n1 % start the outer loop through the data values for x

    for kk = 0 : (k-1) % start the inner loop through the data values for x (if k = 0 this loop is not executed)
        L1(kk+1,:) = L1(kk+1,:).*(xi1 - x1(k+1))/(x1(kk+1)-x1(k+1)); 
        L2(kk+1,:) = L2(kk+1,:).*(xi2 - x2(k+1))/(x2(kk+1)-x2(k+1));
    end % end of the inner loop

    for kk = k+1 : n1  % start the inner loop through the data values (if k = n1 this loop is not executed)
        L1(kk+1,:) = L1(kk+1,:).*(xi1 - x1(k+1))/(x1(kk+1)-x1(k+1)); 
        L2(kk+1,:) = L2(kk+1,:).*(xi2 - x2(k+1))/(x2(kk+1)-x2(k+1)); 
    end % end of the inner loop

end % the end of the outer loop

p1 = prod(L1,1);
p2 = prod(L2,1);
p = p1' * p2;

您可以将缺失的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; } 添加到|作为快速永久修复。

或者,Cygwin有一个名为/usr/lib/perl5/5.14/ExtUtils/MM_Cygwin.pm的软件包,可将分发版升级到7.04_01。

......除了虫子仍然存在。如果您安装了此软件包,则要修复的文件为perl-ExtUtils-MakeMaker

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

/usr/lib/perl5/vendor_perl/5.14/ExtUtils/MM_Cygwin.pm