6

デフォルトでバージョン 5.8 の perl しか利用できない CentOS 5.4 を実行しています。Perl 5.10 を必要とするプログラムがあるため、CentOS で perl 5.10 をコンパイルしました。perl コマンドはデフォルトで 5.8 を使用するため、プログラムを実行する perl を指定するにはどうすればよいですか。

4

7 に答える 7

14

私は、システムのPerlをまったくいじらないように勧めることに私の声を加えます。

App::perlbrewについてはまだ誰も言及していません。それはあなたがPerlのいくつかのバージョンを持っていてそれらを簡単に切り替えることを可能にします。もちろんこれは手動で行うこともできますが、このツールを使用する方がはるかに簡単です。ポッドから– </ p>

# Install some Perls
perlbrew install perl-5.12.2
perlbrew install perl-5.8.1
perlbrew install perl-5.13.6

# See what were installed
perlbrew list

# Switch perl in the $PATH
perlbrew switch perl-5.12.2
perl -v

# Switch to another version
perlbrew switch perl-5.8.1
perl -v

# Switch to a certain perl executable not managed by perlbrew.
perlbrew switch /usr/bin/perl

# Or turn it off completely. Useful when you messed up too deep.
perlbrew off

# Use 'switch' command to turn it back on.
perlbrew switch perl-5.12.2
于 2011-01-22T02:07:41.610 に答える
6

プログラム ファイルの最初の行は、使用する perl バイナリを参照する必要があります。

#!/usr/bin/perl

perl 5.10 バイナリーが入っているディレクトリーが 5.8 バイナリー・ディレクトリーの前にリストされるように、PATH 変数を変更することもできます。例えば

export PATH=/path/to/perl/5.10:$PATH
于 2011-01-21T21:39:23.087 に答える
3

次の場所にあるさまざまな perl 実行可能ファイルへのシンボリック リンクを作成するのが好きです/usr/local/bin

$ [sudo] ln -s /path/to/perl5.10.1.exe /usr/local/bin/perl510
$ [sudo] ln -s /path/to/perl5.13.8.exe /usr/local/bin/perl513
$ ... etc. ...
$ # and just for completeness
$ ln -s /usr/bin/perl /usr/local/bin/perl58

そして、次のように呼び出します。

$ perl510 script_to_use_with_v5.10.pl
于 2011-01-21T21:40:48.007 に答える
1

まさにこの種の問題に効果的に対処するために設計された、alternatives と呼ばれるツールがあります。これは基本的に、bin ディレクトリなどのシンボリック リンクを操作することで、異なるバージョンのアプリケーションを簡単に切り替える方法を提供します。

ターミナルで「man alternatives」と言います (または、インストールしていない場合は yum install alternatives を実行します)。

于 2011-01-21T22:44:04.847 に答える
0

ところで、Perlbrew パッケージは、CentOS 5.x のEPELリポジトリからインストールできます。最初はこの rpm だけをインストールしようとしましたが、多くの依存関係があるため、ボックスの yum リポジトリのリストに EPEL リポジトリを追加することにしました。

于 2012-01-16T15:41:56.040 に答える
0

新しい perl 実行可能ファイルを指すように PATH 環境変数を設定します。例えば

 export PATH=/newpath/perl:$PATH
于 2011-01-21T21:40:31.147 に答える