我如何弄清楚为什么Linenoise无法安装?

时间:2017-01-01 13:57:29

标签: module install perl6

这是在64位Windows 10 Pro和MSVC 2015上。这个问题很长,因为我想提前提供完整的信息,但实际问题相当简单:

如何在安装失败后让panda保持工作目录(如cpanm),以便我可以诊断出错了什么?

正如您从下面的日志中看到的那样,linenoise.dll似乎是在正确的位置创建的,但是在安装时,它无处可寻。

.panda-work中的%TEMP%目录已消失。

我刚刚通过

从源代码构建了Rakudo
  1. git clone git://github.com/rakudo/rakudo.git
  2. cd rakudo
  3. set CFLAGS=/O2 /favor:INTEL64 /Qpar
  4. perl Configure.pl --gen-moar --gen-nqp --backends=moar --prefix=c:/opt/perl6
  5. nmake test
  6. nmake install
  7. nmake spectest自上次尝试此操作以来,失败次数有所增加,但这与我的问题无关
  8. 然后我通过以下方式安装了panda

    1. git clone --recursive git://github.com/tadzik/panda.git
    2. cd panda
    3. perl6 bootstrap.pl
    4. 有效。

      然后我做了

      panda install Task::Star

      我的测试失败了:

      ==> Building NativeHelpers::Blob
      ==> Testing NativeHelpers::Blob
      
      t/00-trivial.t ..
      Dubious, test returned 5 (wstat 1280, 0x500)
      Failed 1/1 subtests

      但我强制安装,因为我希望尽可能快地完成安装。

      所以,在前进的过程中,我点击了这个:

      C:\Users\...\Temp> panda install Linenoise
      ==> Fetching Linenoise
      ==> Building Linenoise
      
      Microsoft (R) Program Maintenance Utility Version 14.00.24210.0
      Copyright (C) Microsoft Corporation.  All rights reserved.
      
              cl -c  /nologo /MT /Ox /GL /DNDEBUG  /DWIN32 /DAO_ASSUME_WINDOWS98  /O2 /favor:INTEL64 /Qpar /Folinenoise.obj linenoise.c
      linenoise.c
              perl6 -e "mkdir 'resources'; mkdir 'resources/libraries'"
              link /dll /nologo /LTCG  shell32.lib ws2_32.lib mswsock.lib rpcrt4.lib advapi32.lib psapi.lib iphlpapi.lib userenv.lib /out:resources/libraries/libline
      noise.dll linenoise.obj
      Generating code
      Finished generating code
              cl /Foconstant-helper /nologo /MT /Ox /GL /DNDEBUG  /DWIN32 /DAO_ASSUME_WINDOWS98  /O2 /favor:INTEL64 /Qpar constant-helper.c
      constant-helper.c
      Generating code
      Finished generating code
              perl6 fill-constants.pl  lib/Linenoise.pm
      ==> Testing Linenoise
      ==> Installing Linenoise
      Failed to open file C:\Users\...\Temp\.panda-work\1483278033_1\resources\libraries\linenoise.dll: no such file or directory
        in any  at C:\opt\perl6/share/perl6/runtime/CORE.setting.moarvm line 1
        in block  at C:\opt\perl6\share\perl6\site\sources\85367160D11E565B2D089507C79BC309215430D6 (Panda::Installer) line 61
        in sub indir at C:\opt\perl6\share\perl6\site\sources\24811C576EF8F85E7672B26955C802BB2FC94675 (Panda::Common) line 20
        in method install at C:\opt\perl6\share\perl6\site\sources\85367160D11E565B2D089507C79BC309215430D6 (Panda::Installer) line 42
        in method install at C:\opt\perl6\share\perl6\site\sources\582CB7486602954A4601BDCE5A0EAC54B05DA58A (Panda) line 190
        in method resolve at C:\opt\perl6\share\perl6\site\sources\582CB7486602954A4601BDCE5A0EAC54B05DA58A (Panda) line 263
        in sub MAIN at C:\opt\perl6\share\perl6\site\resources\1C71F7B377C6F2C6C4707E3C25016AA25A2926B1 line 20
        in block  at C:\opt\perl6\share\perl6\site\resources\1C71F7B377C6F2C6C4707E3C25016AA25A2926B1 line 165
      
      Actually thrown at:
        in method throw at C:\opt\perl6/share/perl6/runtime/CORE.setting.moarvm line 1
        in any  at gen/moar/Metamodel.nqp line 3072
        in block  at C:\opt\perl6\share\perl6\site\sources\85367160D11E565B2D089507C79BC309215430D6 (Panda::Installer) line 61
        in sub indir at C:\opt\perl6\share\perl6\site\sources\24811C576EF8F85E7672B26955C802BB2FC94675 (Panda::Common) line 20
        in method install at C:\opt\perl6\share\perl6\site\sources\85367160D11E565B2D089507C79BC309215430D6 (Panda::Installer) line 42
        in method install at C:\opt\perl6\share\perl6\site\sources\582CB7486602954A4601BDCE5A0EAC54B05DA58A (Panda) line 190
        in method resolve at C:\opt\perl6\share\perl6\site\sources\582CB7486602954A4601BDCE5A0EAC54B05DA58A (Panda) line 263
        in sub MAIN at C:\opt\perl6\share\perl6\site\resources\1C71F7B377C6F2C6C4707E3C25016AA25A2926B1 line 20
        in block  at C:\opt\perl6\share\perl6\site\resources\1C71F7B377C6F2C6C4707E3C25016AA25A2926B1 line 165

1 个答案:

答案 0 :(得分:4)

Linenoise的Build.pm文件无法正确编写。它们将“lib”前缀硬编码到库名称,同时还尝试在另一部分中使用平台库名称猜测机制。如果要使用$*VM.platform-library-name,则需要生成名为linenoise.dll的文件, liblinenoise.dll

我也不确定Linenoise是否适用于Windows,即使 安装。

您应该使用zef代替panda。如果是,您可以查看~/.zef/store/p6-linenoise.git

使用的工作目录