@INC에서 Perl 확장을 검색하지 않습니까?


1

나는 루트 액세스 권한이없는 Linux를 사용하고 로컬로 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않습니까?

답변:


3

rxvt-unicode컴파일 된 디렉토리 ( /usr/lib64/urxvt/perlRPM 패키지의 경우 와 같을 수 있고 실행 파일의 위치에 따라 변경되지 않음) 또는 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컴파일 된 시스템 확장 디렉토리 앞에 포함 되므로 X 자원 ~/.urxvt/ext을 설정하는 대신 확장 파일을 배치 할 수 있습니다 perl-lib.

또한 rxvt-unicode> = 9.16은 URXVT_PERL_LIB환경 변수에 나열된 디렉토리에서 Perl 확장자를 찾습니다 . 이제 검색 순서는 다음과 같습니다.

  1. perl-libX 자원에 나열된 디렉토리 (콜론으로 구분 된 여러 디렉토리).
  2. URXVT_PERL_LIB환경 변수에 나열된 디렉토리 (콜론으로 구분 된 여러 디렉토리).
  3. $HOME/.urxvt/ext
  4. $LIBDIR/perl여기서 $LIBDIR실행 파일로 컴파일 된 패키지 라이브러리 디렉토리 이름 (예, 있습니다 /usr/lib64/urxvt).

.Xresources에서 환경 변수 또는 ~를 사용할 수 있습니까?
Chris

환경 변수는 perl-lib자원 에서 rxvt-unicode 나 xrdb에 의해 확장되지 않습니다 . 그러나 업데이트 된 답변을 참조하십시오. 최근에 충분한 버전의 rxvt-unicode를 사용하는 경우 확장명을에 배치 ~/.urxvt/ext하거나 URXVT_PERL_LIB다른 환경 변수의 값을 사용할 수있는 스크립트로 설정 하면됩니다.
Sergey Vlasov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.