Perlの拡張機能は@INCで検索されませんか?


1

私はLinuxにアクセスしていて、rootアクセス権がなく、ローカルにrpmがインストールされています。 /home/me/local、 のではなく /usr )これは問題ありませんが、rpm( rxvt-unicode )いくつかのPerlモジュールが必要で、デフォルトのライブラリ検索パスに私のローカルディレクトリが含まれていません。

2つの問題がありますが、修正できるのはどちらか一方だけです。最初に、 /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/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 Xリソース

それに加えて、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

環境変数や〜を.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.