- - PR -
RPM perlの最新バージョン
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-11-17 14:01
こちらに投稿するのははじめてになります。よろしくお願いいたします。
Vine 3.1を使用しています。 apt-getでインストールできるperlの最新版は5.8.2ですが 設置しているCGIでバージョン5.8.2では正常に動作しない (nullの配列が正常に処理できない)問題があり、バージョン アップを行いたいと思っております。 5.8.2より新しいバージョンをインストールするにはソースから コンパイルする方法しかないのでしょうか? またperlの最新バージョンは5.8.7だと思いますがRPMのバージョン とは大きな開きがありますが、こんなものなのでしょうか? | ||||||||||||||||
|
投稿日時: 2005-11-17 15:07
Vine3.1オフィシャルのパッケージとしては存在しないわけですから、 そうなるんでしょうね。 ただ、VineSeedで5.8.6が公開されているので、それを使うって 選択肢もあったりするんでしょうかね。 VineとVineSeedの関係を良く知らないので憶測でモノ言ってみてます。
そんなもんです。 一般的に、Linuxなんかでの各アプリにはx.y.zみたいなバージョン番号が振られてる わけですが、バージョンアップによって機能追加や変更が行われることも多々あります。 して、Linuxディストリビューションの特定のバージョンにおいて、 セキュリティ修正などが行われたとしても、収録されているアプリケーションのバージョンは 変更しないのが原則です。そうやってディストリビューション全体の品質を保証するわけです。 なので、x.y.z-Aなんてバージョンのソフトが配布されていることも多いと思いますが、 このベンダ独自で割り振ってる-Aの部分で、x.y.z+1にて行われた修正のうち、 セキュリティに関する部分のみとかのパッチ適用を行ってたりするわけです。 Vine3.1は1年近く前のリリースで、収録するソフトのバージョン選定は さらに前から行われていたわけですから、現在のPerl自体の最新版とは バージョンがかけ離れていて当然ではあります。 バージョンを上げるには、自力対処するか、ディストリビューション自体の バージョンアップを考えるかしましょう。 Perlは他にも依存してるところが多いと思うので、ソースコンパイルでの 導入は慎重にやらないと大変かもしれない。 _________________ Mattun Microsoft MVP for Directory Services (Oct 2006-Sep 2007) | ||||||||||||||||
|
投稿日時: 2005-11-17 15:28
こんにちは。
いや、もうそれなら、 パッケージ版のPerlとは別に、/usr/local にでも、独自ビルドのPerlを入れた方が良いかもしれません。 その CGI専用と割り切って。 ※ 昔はPerlって言えば /usr/local/bin/perl でしたからね。 拘りの無いソフト/ライブラリは、完全にパッケージ任せでも良いんですけど、ちょっとでもカスタマイズしようとすると、依存関係の縛りや、適用パッチの把握でムリが出るのが難だと思っています。 ※ 私の場合は Apache … 以上、ご参考まで。 | ||||||||||||||||
|
投稿日時: 2005-11-17 15:57
ご質問に対してはMattunさん・angelさんの回答で解決できると思うのですが、その前に前提として
を回避するために本当にPerlのバージョンアップが必要なのでしょうか?運用中のサーバであるならば、ディストリビューションの更新は言うまでも無く、Perlの差替もインパクトが大きいでしょうし、angelさんが提案された専用の独自ビルドのPerlを入れる方法ならば初期のインパクトは小さいですが、Perlのバージョンを2系統で管理する必要が発生するため、管理コストは上がりますよね。 そもそも、そのCGIで実現したい機能をPerlの5.8.2でも動作する方法で実装できないかどうかをまずは模索すべきなのではないかと思うのですが如何でしょうか? | ||||||||||||||||
|
投稿日時: 2005-11-17 16:33
確かにその点がまず重要ですね。 「nullの配列が正常に処理できない」というのがどのような問題で、どのように CGIの動作に影響しているか、というのは、個人的に Perl使いとして興味があります。 ※ Perlって単純そうな所で不具合を持っていることがありますからね。先日嵌りました…orz | ||||||||||||||||
|
投稿日時: 2005-11-17 17:54
ご回答&ご意見ありがとうございます。
デフォルトとは別のディレクトリにインストールするにはどうすれば よいのでしょうか?
問題の起こるCGIというのは実はゲームCGIでして、ゲームの開始時にログファイルを
として作成しています。 $plaerMaxというのはゲーム最大参加人数で参加者が最大数より 少ない場合は$Name[$_]がnullになる場合があるわけですが その際に予期しないログ(確か改行が入ったと思います)になります。 ですので別処理でnullの場合は"0"を入れるなどすれば回避はできます。 ただperlの最新バージョンを使用してみたい好奇心もありましたので このような質問をさせていただきました。 | ||||||||||||||||
|
投稿日時: 2005-11-18 08:21
まずはfindコマンドでperlコマンドがどこにインストールされているかを確認して下さい。おそらくは/usr/bin/perlだと思います。 ソースを展開してコンパイルする場合、デフォルトでは/usr/local以下にインストールされることになります。perlの場合は/usr/local/bin/perlとなります。なので、上述のfindコマンドで/usr/local/bin/perlが存在していなかった場合は、特に何も考えずにソースからコンパイルすれば、パッケージでインストールされたperlとは別のディレクトリにインストールされます。
$playerMaxではなく、$#Nameを基準にして繰り返し処理を行えばよろしいのではないでしょうか?$Name <= $playerMaxになっていることが大前提ですが。 | ||||||||||||||||
|
投稿日時: 2005-11-18 09:46
ソースからコンパイルし/usr/local/bin/perlができました。
/usr/bin/perl (5.8.2) /usr/local/bin/perl (5.8.7) CGIも正常に動作いたしました。 仮に今後、/usr/bin/perlのperlも5.8.7にバージョンアップしたい場合は /usr/bin/perlをアンインストールしてシンボリックリンクを作成すれば よいのでしょうか?
確かにそれで解決しそうですね。 ご教授ありがとうございました。 |