【问题标题】:Custom perl installation cannot find Git.pm自定义 perl 安装找不到 Git.pm
【发布时间】:2011-06-08 03:45:30
【问题描述】:

我已经在我的主目录中安装了我自己的 Perl 副本,但是我有一些需要 Git.pm 的 Perl 脚本,它是 Git 发行版的一部分,不能从 CPAN 安装。系统 perl 使用的 Git.pm 位于 /usr/share/perl5/Git.pm。如何使这个 Git.pm 可用于自定义 perl 安装,或者在正确位置安装另一个 Git.pm 副本?我应该把它复制到我自己的 Perl 的 lib 目录中吗?

【问题讨论】:

    标签: perl git perl-module


    【解决方案1】:

    Git.pm 是独立的,因此将其复制到您的私有 perl @INC 的目录部分中。它需要Error.pm(版本大于或等于0.15009),所以不要忘记安装该模块。

    如果您正在寻找 Git 包装器(而不是特定的 Git.pm),CPAN 上有几个可用的(按字母顺序):

    • Git::Class
    • Git::Repository
    • Git::Wrapper

    【讨论】:

    • 我最终只是将 Git.pm 的系统副本复制到我自己的 Perl 的模块目录中。
    【解决方案2】:

    您可以按照文章Perl modules FAQ - What to do when Perl modules aren't in their normal locations,通过直接修改需要Git.pm的Perl脚本,将您的模块添加到@INC变量路径中。

    #!/usr/bin/perl
    use lib "/home/george/modules";
    print "\@INC is @INC\n";
    

    使用use lib 语句将您的搜索目录添加到 Perl 的搜索路径中。

    【讨论】:

    • 但是 Git.pm 在系统 Perl 的模块目录中。我不想将所有系统 Perl 的模块添加到我的自定义安装中,特别是因为其中一些模块可能是为系统 Perl 编译的 XS 模块,这些模块将在我的自定义 Perl 上死掉。
    • @Ryan:您可以在自定义路径中移动该模块,而不是留在默认(系统)位置吗?
    • 好吧,我可以复制它。我目前的解决方案是将系统 Git.pm 复制到我的本地安装中的适当路径。
    【解决方案3】:

    要控制 Perl 搜索模块的位置,请使用 PERL5LIB(或 PERLLIB)。

    要让您的模块/脚本在非标准位置使用某些模块,请使用use lib "<dir>";(我认为它通常已被弃用)。

    要从 CPAN 本地安装 Perl 模块,请使用 local::lib

    【讨论】:

    • Git.pm 无法从 CPAN 安装,我无法将其当前目录添加到 PERL5LIB,因为这会将系统 Perl 的所有 所有 模块添加到我的自定义 Perl 中小路。我是否应该将系统 Perl 目录中的 Git.pm 复制到我家中的某个随机目录中,然后将其添加到 PERL5LIB
    • @Ryan:如果 Git.pm 安装在系统 Perl 的目录中,你的模块/脚本怎么找不到它?如果您在本地安装 Git.pm,您始终可以将其安装在“local::lib”位置(即默认为~/perl5)。
    • 我正在使用我自己的 Perl 副本,因为我想要最新版本但系统 (Ubuntu Natty) 仅提供 5.10。所以将系统 Perl 的目录添加到 PERL5LIB 是个坏主意。
    • @Ryan:你是如何安装 Git.pm 的(或者你是如何得到它的)?
    • Git.pm 作为 Git 的一部分安装。在 Ubuntu 上,它安装在 /usr/share/perl/Git.pm,但许多(全部?)其他系统安装的 Perl 模块也安装在那里。
    猜你喜欢
    • 1970-01-01
    • 2011-07-26
    • 2021-09-20
    • 2018-05-15
    • 2011-06-11
    • 2012-05-29
    • 2021-01-21
    • 2018-12-10
    • 2020-01-25
    相关资源
    最近更新 更多