【问题标题】:Strawberry Perl CPAN cannot find path specifiedStrawberry Perl CPAN 找不到指定的路径
【发布时间】:2019-01-02 21:02:20
【问题描述】:
C:\MyPerl>cpan install Parallel::ForkManager
Loading internal logger. Log::Log4perl recommended for better logging
Reading '\c\Users\Locals\.cpan\Metadata'
  Database was generated on Wed, 25 Jul 2018 22:55:14 GMT
Running install for module 'Parallel::ForkManager'
CPAN: Digest::SHA loaded ok (v6.02)
CPAN: Compress::Zlib loaded ok (v2.081)
Checksum for \c\Users\Locals\.cpan\sources\authors\id\Y\YA\YANICK\Parallel-ForkManager-1.20.tar.gz ok
The system cannot find the path specified.
Uncompressed \c\Users\Locals\.cpan\sources\authors\id\Y\YA\YANICK\Parallel-ForkManager-1.20.tar.gz successfully
Using Tar:/usr/bin/tar xf "Parallel-ForkManager-1.20.tar":
The system cannot find the path specified.
Couldn't untar Parallel-ForkManager-1.20.tar: child exited with value 1
CPAN: YAML loaded ok (v1.26)
YANICK/Parallel-ForkManager-1.20.tar.gz
Had problems unarchiving. Please build manually

我做错了什么?我已经多次卸载并重新安装了 Strawberry Perl,使用了 MSI 安装程序,现在我正在尝试压缩文件。为什么它会在我的 C 盘上创建一个名为“C”的文件夹? "C:\c\Users\Locals.cpan\"

【问题讨论】:

    标签: cpan strawberry-perl


    【解决方案1】:

    这是最新版本的 Strawberry Perl x64 的示例输出,似乎已经成功:

    C:\Strawberry\perl\bin>cpan install Parallel::ForkManager
    Loading internal logger. Log::Log4perl recommended for better logging
    CPAN: CPAN::SQLite loaded ok (v0.211)
    CPAN: LWP::UserAgent loaded ok (v6.34)
    Fetching with LWP:
    http://cpan.strawberryperl.com/authors/01mailrc.txt.gz
    CPAN: YAML::XS loaded ok (v0.70)
    Fetching with LWP:
    http://cpan.strawberryperl.com/modules/02packages.details.txt.gz
    Fetching with LWP:
    http://cpan.strawberryperl.com/modules/03modlist.data.gz
    Creating database file ...
    Done!
    Running install for module 'Parallel::ForkManager'
    Fetching with LWP:
    http://cpan.strawberryperl.com/authors/id/Y/YA/YANICK/Parallel-ForkManager-2.
    tar.gz
    CPAN: Digest::SHA loaded ok (v6.02)
    Fetching with LWP:
    http://cpan.strawberryperl.com/authors/id/Y/YA/YANICK/CHECKSUMS
    CPAN: Compress::Zlib loaded ok (v2.081)
    Checksum for C:\STRAWB~1\cpan\sources\authors\id\Y\YA\YANICK\Parallel-ForkMan
    r-2.02.tar.gz ok
    CPAN: Archive::Tar loaded ok (v2.30)
    CPAN: CPAN::Meta::Requirements loaded ok (v2.140)
    CPAN: Parse::CPAN::Meta loaded ok (v2.150010)
    CPAN: CPAN::Meta loaded ok (v2.150010)
    CPAN: Module::CoreList loaded ok (v5.20180622)
    Configuring Y/YA/YANICK/Parallel-ForkManager-2.02.tar.gz with Makefile.PL
    Checking if your kit is complete...
    Looks good
    Generating a gmake-style Makefile
    Writing Makefile for Parallel::ForkManager
    Writing MYMETA.yml and MYMETA.json
      YANICK/Parallel-ForkManager-2.02.tar.gz
      C:\Strawberry\perl\bin\perl.exe Makefile.PL -- OK
    Running make for Y/YA/YANICK/Parallel-ForkManager-2.02.tar.gz
    cp lib/Parallel/ForkManager/Child.pm blib\lib\Parallel\ForkManager\Child.pm
    cp lib/Parallel/ForkManager.pm blib\lib\Parallel\ForkManager.pm
      YANICK/Parallel-ForkManager-2.02.tar.gz
      C:\STRAWB~1\c\bin\gmake.exe -- OK
    Running make test
    "C:\Strawberry\perl\bin\perl.exe" "-MExtUtils::Command::MM" "-MTest::Harness"
    e" "undef *Test::Harness::Switches; test_harness(0, 'blib\lib', 'blib\arch')"
    *.t
    t/00-compile.t ............ ok
    t/00-load.t ............... 1/4 # time: 1 seconds
    t/00-load.t ............... 2/4 # time: 21 seconds
    # time: 0 seconds
    # time: 2 seconds
    t/00-load.t ............... ok
    t/00-report-prereqs.t ..... #
    # Versions for all modules listed in MYMETA.json (including optional ones):
    #
    # === Configure Requires ===
    #
    #     Module              Want Have
    #     ------------------- ---- ----
    #     ExtUtils::MakeMaker  any 7.34
    #
    # === Build Requires ===
    #
    #     Module              Want Have
    #     ------------------- ---- ----
    #     ExtUtils::MakeMaker  any 7.34
    #
    # === Test Requires ===
    #
    #     Module              Want     Have
    #     ------------------- ---- --------
    #     ExtUtils::MakeMaker  any     7.34
    #     File::Spec           any     3.74
    #     IO::Handle           any     1.39
    #     IPC::Open3           any     1.20
    #     Test::More          0.94 1.302136
    #     Test::Warn           any     0.35
    #
    # === Test Recommends ===
    #
    #     Module         Want     Have
    #     ---------- -------- --------
    #     CPAN::Meta 2.120900 2.150010
    #
    # === Runtime Requires ===
    #
    #     Module     Want     Have
    #     ---------- ---- --------
    #     Carp        any     1.50
    #     File::Path  any     2.15
    #     File::Spec  any     3.74
    #     File::Temp  any   0.2304
    #     Moo         any 2.003004
    #     Moo::Role   any 2.003004
    #     POSIX       any     1.84
    #     Storable    any     3.11
    #     strict      any     1.11
    #     warnings    any     1.42
    #
    t/00-report-prereqs.t ..... ok
    t/01-utf8-all.t ........... skipped: This is a bug in perl itself on Windows
    t/02-callback.t ........... # This test can take 10-20 seconds, please wait.
    rted at Wed Oct 17 12:28:28 2018
    t/02-callback.t ........... ok
    t/03-callback-data.t ...... # This test can take 2-6 seconds, please wait. St
    ed at Wed Oct 17 12:28:45 2018
    t/03-callback-data.t ...... ok
    t/basic-methods.t ......... ok
    t/changing-pids.t ......... ok
    t/start_child.t ........... ok
    t/waitpid-conflict.t ...... # code outside of P::FM stole -3648
    child process '-3648' disappeared. A call to `waitpid` outside of Parallel::F
    Manager might have reaped it.
    t/waitpid-conflict.t ...... ok
    t/waitpid-waitonechild.t .. # code outside of P::FM stole -5312
    t/waitpid-waitonechild.t .. ok
    t/waitpid_blocking.t ...... ok
    All tests successful.
    
    Test Summary Report
    -------------------
    t/waitpid-conflict.t    (Wstat: 0 Tests: 2 Failed: 0)
      TODO passed:   1-2
    t/waitpid-waitonechild.t (Wstat: 0 Tests: 3 Failed: 0)
      TODO passed:   2-3
    Files=12, Tests=28, 70 wallclock secs ( 0.09 usr +  0.00 sys =  0.09 CPU)
    Result: PASS
      YANICK/Parallel-ForkManager-2.02.tar.gz
      C:\STRAWB~1\c\bin\gmake.exe test -- OK
    Running make install
    Installing C:\STRAWB~1\perl\site\lib\Parallel\ForkManager.pm
    Installing C:\STRAWB~1\perl\site\lib\Parallel\ForkManager\Child.pm
    Appending installation info to C:\STRAWB~1\perl\lib/perllocal.pod
      YANICK/Parallel-ForkManager-2.02.tar.gz
      C:\STRAWB~1\c\bin\gmake.exe install UNINST=1 -- OK
    

    我认为问题可能是您没有从 \perl\bin 目录运行 cpan。

    【讨论】:

      【解决方案2】:

      我很遗憾这么晚才给出答案,但我遇到了完全相同的问题,经过一些修补后,我想通了。

      注意到该路径语法有一些熟悉的地方吗?它是 MSYS/MinGW/Git Bash 使用的那个。发生的事情是,在 MinGW 上,我用 /c/Users/<username>/.cpan 中的 Windows 主文件夹的符号链接替换了我的主文件夹。因此,当我在 MinGW 中启动 CPAN 时,它在 /c/Users/<username>/.cpan 中创建了我的配置,并用这种格式的路径填充它。

      现在,从 Strawberry Perl 的角度来看,这意味着我在 C:\Users\<username>\.cpan 中有一个现有的 CPAN 配置。虽然这不是 CPAN for Strawberry Perl 写入其配置的位置(至少默认情况下不是),但如果此路径中存在 CPAN 配置,它将读取和写入它而不是默认位置。当然,此配置中的所有路径在 Windows 上下文中都没有意义。

      因此:

      • 如果您使用 MinGW、Git Bash、Cygwin 或任何其他类 UNIX 环境 Windows 并将其配置为使用您的 Windows 主文件夹作为您的 UNIX 主文件夹,撤消此配置。
      • 重命名、移动,或者如果您确定不再需要它,请删除 C:\Users\<username>\.cpan。您可能可以将此目录从 Windows 主文件夹移动到 UNIX 主文件夹,以保留类 UNIX 环境中的配置和模块。我建议测试一下。
      • 再次在 Strawberry Perl 中运行 CPAN。它将正确地自动配置自己。

      【讨论】:

      • 这帮助我解决了同样的问题。我之前在我的 Windows $HOME 中安装了 .cpan,它干扰了 StrawberryPerl。我删除了两个 .cpan 目录,从头开始,一切正常。谢谢。
      【解决方案3】:

      我通过.msi 安装程序将其安装到自定义位置,但由于某种原因,该路径未在内部重新配置。 Cpan 继续下载到 C:\straberry,即使那里没有安装 Perl。

      幸运的是,这就是 relocation.pl.bat 的用途。下载 .zip 分发包,将批处理文件解压缩到我的 Perl 安装并运行它解决了问题。

      阅读 Perl 安装附带的 README 文件以获取更多信息。

      【讨论】:

        猜你喜欢
        • 2011-02-24
        • 2020-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-22
        相关资源
        最近更新 更多