代码之家  ›  专栏  ›  技术社区  ›  Kev

Perl包管理器从Win32上的哪里获取其“区域”数据?

  •  1
  • Kev  · 技术社区  · 15 年前

    我想我没有以正确的方式升级,但是有一段时间我同时运行了两个Perl版本。现在我只有一个,但是每次我启动PPM时,它都会重新创建一个旧位置的perl文件夹。我已经将活动的文件夹设置为当前的Perl文件夹,但是由于旧的文件夹仍然存在于列表中(在我执行edit->首选项时显示),它每次都会创建它。我怎么才能停止这样做?我查看了Windows注册表,但我不认为这是跟踪区域的地方。

    这是WindowsServer2003上的ActiveStatePerl5.10.1构建1006。

    3 回复  |  直到 15 年前
        1
  •  1
  •   Sinan Ünür    15 年前

    我的新猜测是 ppm 正在寻找 Config.pm (在安装时生成)用于位置。如果你使用正确的 百万分之 ,它将选择正确的路径。

        2
  •  1
  •   jimtut    15 年前

    这可能是 方式 主题之外,但我必须将组的Perl安装从一个网络驱动器/服务器(W:)移动到另一个(Z:)。我有 太多了 关于PPM站点的问题(主要是因为我想换成一个非标准的“用户”区域),所以我写下了所有的东西(以防我不得不再做一次)。

    希望,其中一些对kev有用,或者任何其他人看到这个。


    1)安装最新的ActivePerl分发版。在本例中,它是5.8.8 build 820。我将它安装到z:\software\perl\5.8.8中,目的是z:\software\perl\site\lib将是安装包的__user_157;区域,而不是默认的z:\software\perl\5.8.8\site\lib。

    2)将新的perl__bin__dir设置为我路径上的第一个目录,并打开一个DOS提示符。_156;PPM区域_157;,您应该看到以下区域:

    ┌────────────┬──────┬─────────────────────────────────┐
    │ name       │ pkgs │ lib                             │
    ├────────────┼──────┼─────────────────────────────────┤
    │ (Software) │  n/a │ Z:/Software/Perl/site/lib       │
    │ perl       │    0 │ Z:/Software/Perl/5.8.8/lib      │
    │ site*      │    0 │ Z:/Software/Perl/5.8.8/site/lib │
    └────────────┴──────┴─────────────────────────────────┘
    

    3)我需要将_156;site_157;转到_(site)_157;(read-only)和_(software)_157;转到默认的可写PPM区域。另外,我不喜欢__software__这个名字(我想是从z上的路径的开头提取的),所以我还想将它重命名为__user_157;。

    4)运行完整的PPM图形用户界面(在DOS中键入__PPM_),并将软件设置为默认区域(编辑->首选项),然后安装简单的软件(我通常选择MP3信息)。

    5)退出GUI,再次运行__PPM区域__获得:

    ┌──────────┬──────┬─────────────────────────────────┐
    │ name     │ pkgs │ lib                             │
    ├──────────┼──────┼─────────────────────────────────┤
    │ Software │    1 │ Z:/Software/Perl/site/lib       │
    │ perl     │    0 │ Z:/Software/Perl/5.8.8/lib      │
    │ site*    │    0 │ Z:/Software/Perl/5.8.8/site/lib │
    └──────────┴──────┴─────────────────────────────────┘
    

    6)出于某种原因,__PPM区域__不将软件显示为默认区域,即使我在PPM__的首选项中选择了它作为默认区域。别担心这个。

    7)转到z:\software\perl\site\lib\etc,将db文件重命名为__ppm user area.db”。转到z:\software\perl\5.8.8并删除对__site_文件夹和所有子文件夹的所有写权限。再次运行__PPM区域__,您应该看到:

    ┌────────┬──────┬─────────────────────────────────┐
    │ name   │ pkgs │ lib                             │
    ├────────┼──────┼─────────────────────────────────┤
    │ user*  │    1 │ Z:/Software/Perl/site/lib       │
    │ perl   │   42 │ Z:/Software/Perl/5.8.8/lib      │
    │ (site) │    0 │ Z:/Software/Perl/5.8.8/site/lib │
    └────────┴──────┴─────────────────────────────────┘
    

    8)你现在应该准备好了!您默认的PPM区域是__user_(z:\software\perl\site\lib)并且__site__区域(z:\software\perl\5.8.8\site\lib)不可写(这很重要,因为它不在perl__________.

    我确实在让PPM识别__perl__区域中输入的所有包时遇到了一些问题。它一直将该区域列为PPMCui首选项中的锁定区域。最后,我删除了z:\software\perl\5.8.8等中的PPMDB文件,PPMCui可以神奇地找到所有东西!

        3
  •  0
  •   Kev    15 年前

    替换整个.packlist中的所有引用(也可能替换Perl路径下的所有其他文件),然后删除etc/和site/etc中的.db文件,然后运行PPM,让它基于更新的packlist重新构建数据库。

    因此,答案是config.pm、lib\config_heavy.pl、lib\core\config.h,可能还有其他文件、.dbs和.packlists的组合。

    但是,谁能说如果我也把Windows注册表项留在那里,它就不会找到它们?