• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:同一筐体におけるPerlの複数バージョンは共存できますか?)

同一筐体で複数バージョンのPerlを共存できますか?

このQ&Aのポイント
  • UNIXマシン上でOSバンドルのPerlがありますが、別のバージョンをインストールしたい場合、複数のPerlを共存させることは可能ですか?
  • もし共存が可能な場合、インストールから設定・確認手順について教えてください。
  • また、1つのUNIXサーバに複数のPerlが存在するかを確認する方法も教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

>perlソース(5.8.0)のダウンロードを行おうとしています。 >OSはHP-UXのため、HPのサイトを見ているのですが対象 >バージョンのソースが見当たりません。 >(OSにバンドルされているものは、公開されていないのでしょうか?) えーと・・・ ソースをコンパイルするという意味を理解されていますが? ソースというのはバイナリにする以前のもので、この時点でHP-UX用とかSolaris用とかLinux用という区別はありません。なのでどこから落としてもいいですが、普通はメーカーのサイトには置いてありません。 もし置いてあったとしても、それはその環境用にコンパイルされたバイナリ(もしくはsrpm)でしょうし、HP-UXのような商用OSの場合はサポート契約した人しかダウンロードできないところにあるのではないでしょうか(HP-UXを使ったことがないので不明)。 またOSバンドルされていた旧バージョンのバイナリが手に入ったとしても、おそらく今のより新しいバージョンと同じディレクトリにインストールしようとすると思うので共存は出来ないかもしれません。だから「ソースからコンパイル」するのです。 たぶんこれからの作業でいろいろ問題が起きると思いますが、ネットで検索するスキルを身につけてないと大変ですよ。 一応ダウンロードできるサイトの「一例」を書いておきます。 http://search.cpan.org/~jhi/perl-5.8.0/

aratani
質問者

お礼

長々と小職のような初心者に大変丁寧なご回答をいただきありがとうございました。 これから頑張ってスキルアップに励みます。 以上です。

その他の回答 (3)

回答No.3

ちょっと勘違いされているかもしれません。 先に言及したモジュールというのはperlスクリプトで使用しているpmというものです。 use DBI; などと呼び出されているモジュールのことです。 なので、コンパイルまでは必要ありません。スクリプト実行時に必要になりますが、どのモジュールが必要かはスクリプト次第です。 コンパイル~インストールに必要なのは「ソース」と呼びます。 インストール後に、 perl -MCPAN -e shell などで必要なモジュールをインストールできます。 この場合も、新たにインストールしたperlを呼び出すため /usr/local/bin/perl -MCPAN -e shell などとすればOKです。 <インストール~環境設定手順(概要)>  1.perlソース(5.8.0)ダウンロード  2.サーバへ格納~解凍  3.configure ~ make ~ make install  4.アプリ(*.plスクリプトの1行目)に実行環境(3.でインストール・作成したperl bin環境)のパス設定する。  5.必要なモジュールのインストール という流れになります。

aratani
質問者

お礼

ご回答ありがとうございました。 大変参考になりました。 なお、複数Perlを入れようとしましたが、MAKE、インストールにて多数のエラーが出てしまい、今回は断念しました。 (こちらの都合により、あまり既存環境を触れないこと、開発期間の問題等) 別途、別のサーバに新規にPerlを入れる方向で作業を進めることにしました。 また何か不明点等ありましたら投稿させていただきます。 以上です。

aratani
質問者

補足

大変丁寧なご回答ありがとうございます。 環境設定までの手順について理解いたしました。 下記質問させてください。  #最後といいながら、すみません。 perlソース(5.8.0)のダウンロードを行おうとしています。 OSはHP-UXのため、HPのサイトを見ているのですが対象 バージョンのソースが見当たりません。 (OSにバンドルされているものは、公開されていないのでしょうか?) ダウンロード可能なサイトなどおわかりであれば、ご教示程宜しく お願いいたします。 以上です。

回答No.2

スクリプト1行目のperlへのパスを書き換えるだけでOKです。 ただし探しにいくディレクトリ(@INC)も変わるので、モジュール類がそこにちゃんと入っているか確認してください。

aratani
質問者

補足

lowrider_2005様  ご回答ありがとうございます。  机上だけでなく、実際やってみることですね。。  サンプルや既存で動作しているplスクリプトを参考にしてみます。 最後に質問です。  既存のperl(5.8.3)とは別に、新規perl(5.8.0※都合により古いですが)をインストールし、新規の方で動作するアプリを作成するにあたり、インストール・設定手順および注意事項がありましたらご教示願います。(特に下部★部分) <インストール~環境設定手順(概要)>  1.perlモジュール(5.8.0)ダウンロード  2.サーバへ格納  3.installおよびmake  4.アプリ(*.plスクリプトの1行目)に実行環境(3.でインストール・作成したperl bin環境)のパス設定する。   ※実行ユーザにおける環境変数の設定でも可 ■注意事項  (1)新規インストール・makeする際、実行環境にモジュール類が全て入っていることを確認 ★  (2)新規インストール・makeする前に既存のperl環境をバックアップしておく。★ 以上です。

回答No.1

(1)インストールパスを変えれば出来ます。 (2)コンパイル時のオプションで--prefixを付けてディレクトリ指定 (3)findで探すしかないのでは・・  find / -name perl -print など。  perl -vで一つしか出ないのは当然です。環境変数(PATH)のディレクトリを順番に探し、最初にあった物が実行されます。なので、 /usr/bin/perl、 /usr/local/bin/perl という2つのperlが存在していたとしても、環境変数で先に書いてあるほうのperlが呼び出されるのです。 findで探し複数のperlが見つかったら、フルパスで叩いてみればわかります。 /usr/bin/perl -v /usr/local/bin/perl -v ちなみにモジュールを見に行くディレクトリはperlが勝手に判断してくれます。 perl -V として@INC:に表示されるパスです。 (もちろん都度変更することも可能)

aratani
質問者

補足

ご回答ありがとうございます。 (3)findで探した結果、複数のperlが夫々のbin配下にありました。 初歩的で申し訳ございませんが、もう1点確認させてください。 夫々のバージョンでpl(アプリケーション)を起動したい場合は起動(シェル、コマンド等)の頭に実行するperlのPATHを設定若しくは実行ユーザのenvに予めPATHを追加し、どのPerlモジュールを使用するか指定することで可能、と考えて宜しいでしょうか? 以上、ご回答をお待ちしております。