我在 Linux 上,没有 root 权限,并在本地 (在/home/me/local
而不是/usr
) 安装了 rpm。这很好,只是 rpm ( rxvt-unicode
) 需要一些 Perl 模块,并且默认库搜索路径不包括我的本地目录。
有两个问题,但我只能修复其中一个。首先,/home/me/local/lib64/urxvt
包含urxvt.pm
。我可以通过设置PERL5LIB
为 来解决这个问题/home/me/local/lib64/urxvt
,所以没问题。
第二,/home/me/local/lib64/urxvt/perl
包含各种扩展(包括/home/me/local/lib64/urxvt/perl/option-popup
)。当我运行程序(urxvt
)时,我现在收到各种消息,内容如下
urxvt: perl extension 'option-popup' not found in perl library search path
我不能通过添加额外的目录来解决这个问题PERL5LIB
。例如:
setenv PERL5LIB /home/me/local/lib64/urxvt/perl:/home/me/local/lib64/urxvt
没什么区别。我已经用 检查了搜索路径,perl -V
它正确显示了两个目录。扩展有什么不同吗?他们不检查吗@INC
?
答案1
rxvt-unicode
在编译目录中查找其扩展(可能类似于/usr/lib64/urxvt/perl
RPM 包的情况,并且不会根据可执行文件的位置而改变),或者在perl-lib
资源或--perl-lib
命令行选项指定的目录中查找其扩展。
请参阅乌尔希(1)手册页:
perl-lib: path
Colon-separated list of additional directories that hold extension
scripts. When looking for extensions specified by the "perl"
resource, urxvt will first look in these directories and then in
/usr/lib64/urxvt/perl/.
See the urxvtperl(3) manpage.
因此,您需要在您的~/.Xresources
或~/.Xdefaults
文件中添加类似这样的内容:
URxvt.perl-lib: /home/me/local/lib64/urxvt/perl
更新:自 rxvt-unicode 9.14 起,默认扩展路径包含$HOME/.urxvt/ext
在编译的系统扩展目录之前,因此您可以将扩展文件放入其中,~/.urxvt/ext
而不必设置perl-lib
X 资源。
除此之外,rxvt-unicode >= 9.16 在URXVT_PERL_LIB
环境变量中列出的目录中查找 Perl 扩展。现在搜索顺序如下:
- X 资源中列出的目录
perl-lib
(多个目录以冒号分隔)。 - 环境变量中列出的目录
URXVT_PERL_LIB
(多个目录用冒号分隔)。 $HOME/.urxvt/ext
$LIBDIR/perl
,其中$LIBDIR
是编译到可执行文件中的软件包库目录名(例如/usr/lib64/urxvt
)。