1

Я нахожусь в Linux, не имея root-доступа, и установил rpm локально (в /home/me/local , а не в /usr). Это хорошо, за исключением того, что 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 ответ1

3

rxvt-unicode ищет свои расширения либо в скомпилированном каталоге (что может быть что-то вроде /usr/lib64/urxvt/perl в случае пакета RPM и не изменяется в зависимости от расположения исполняемых файлов), либо в каталоги, указанные ресурсом perl-lib или параметром командной строки --perl-lib .

Смотрите соответствующую часть на странице справки urxvt(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 Х ресурс.

В дополнение к этому, rxvt-unicode> = 9.16 ищет расширения Perl в каталогах, перечисленных в переменной среды URXVT_PERL_LIB . Теперь порядок поиска следующий:

  1. Каталоги, перечисленные в ресурсе perl-lib X (несколько каталогов, разделенных двоеточиями).
  2. Каталоги, перечисленные в переменной среды URXVT_PERL_LIB (несколько каталогов разделены двоеточиями).
  3. $HOME/.urxvt/ext
  4. $LIBDIR/perl , где $LIBDIR - это имя каталога библиотеки пакетов, скомпилированное в исполняемый файл (например, /usr/lib64/urxvt).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .