Walrus,Digit. | 一覧 | 検索 | 更新履歴(RSS) | 新規作成
はてなブックマークに追加 はてなブックマークを表示 編集 | 編集(管理者用) | 差分

Perlメモ/モジュールのインストール(PPM)

編集

ActivePerl+PPMによるモジュールインストール方法。

Windows、Linux等にActiveState社が提供しているPerl環境「ActivePerl」では、モジュールを「PPM」というツールでインストールできます。 このPPMについてのメモを載せていきます。

PPMに何か問題があれば、CPANも試してみてください。 CPANでは、PPMではインストールできないモジュール、より新しいモジュールをインストールできることが多々あります。 CPANについては、Perlモジュール/インストール(CPAN)にまとめてあります。

PPMでのインストール

はてなブックマークを表示 はてなブックマークに追加 リンク 編集

コマンドラインから、下のコマンドを叩くだけです。

ppm install パッケージ名

多くのパッケージ名には、「::」または「-」が含まれますが、これはどちらを使用しても構いません。 例えば、「CGI-Lite」と「CGI::Lite」では、どちらの書式でも同じものがインストールされます。


なお、厳密に言えば、ハイフンを使うのが正解です。

例えば「ppm install XML-RSS」とするとXML::RSSモジュールがインストールされますが、「ppm install XML:RSS」とした場合は「XML::RSS」で始まるモジュールが検索され、複数あるためこの候補が一覧されて終わります。 「CGI::Lite」と「CGI-Lite」のケースでは、「CGI::Lite」で始まるモジュールが一つしかないので、どちらでもCGI::Liteモジュールがインストールされます。

アンインストール

コマンドラインから、下のコマンドを叩くだけです。

ppm remove パッケージ名

HTMLドキュメントのダウンロード

Windows版のActivePerl build630にはHTMLドキュメントがつきません。 代わりにHTMLヘルプがついたのですが、「HTMLドキュメントも欲しい」という時は、PPMでダウンロードできます。

ppm install ActivePerl-HTML

全文検索の「Namazu」などを使っていると必要ですね。 ダウンロードサイズで、2001年11月19日現在の版は2,376,940バイトあります。

ActivePerl build631では、ふたたびHTMLドキュメントが同梱されるようになりました。

インストールが失敗するケース

PPMでのインストールは、大雑把に言えば、コンパイル済みのバイナリが取得され、適切なフォルダにコピーされるだけです。 ほとんど、失敗の余地はありません。

それでも失敗する場合、多くのケースではファイルの取得に失敗しています。 以下の2点を確認して下さい。

なお、SoftWareのページで配布しているINCMプラグイン「PPMプラグイン」ではこの2点を対処しています。 INCMをお持ちであれば、試してみると良いでしょう。

プロキシが未設定

インターネットに接続する際に、プロキシを通す環境では、プロキシ関連の環境変数HTTP_PROXYの設定が必要です。 この点は、PPMのドキュメントに明記されています。

Windowsを利用している場合、autoexec.batか、あるいはマイコンピュータのプロパティを開き、詳細タブの環境変数でで設定しておくと毎回指定する手間が不要になります。

リポジトリが不足

PPMがモジュールを探しに行くURLが「リポジトリ」です。デフォルトではActiveStateの提供するリポジトリだけが登録されています。

ところが、例えばCrypt::SSLeay(LWPモジュールでHTTPSアクセスするときなどに必要)をインストールしようとすると、上記のリポジトリではこのモジュールが提供されていません。こんな時には適切なリポジトリ、この場合であればUniversity of Winnipegのリポジトリを追加する必要があります。(Crypt関連のモジュールやGDモジュールなどはこちらからインストールするように、ActiveStateのサイトでも説明されています)。

ただし,Perlのバージョンと適合したリポジトリを利用する必要があります。

Perl 5.6用の、University of Winnipegのリポジトリは次のURLです。

http://theoryx5.uwinnipeg.ca/ppmpackages/

Perl 5.8用の、University of Winnipegのリポジトリは次のURLです。

http://theoryx5.uwinnipeg.ca/ppms/

Perl 5.10用の、University of Winnipegのリポジトリは次のURLです。

http://cpan.uwinnipeg.ca/PPMPackages/10xx/

この他に、id:CharsbarさんがPlagger、Jifty、Catalyst、MySQLユーザ向けとして提供してくださっているリポジトリも、非常に魅力的なモジュールが多くあります。ActivePerl 5.8を使っている場合、こちらも加えておくと良いかもしれません。(現時点ではまだver 5.10には対応していません。)

http://ppm.tcool.org/server/ppmserver.cgi?urn:PPMServer

私はさらに、以下を加えることがあります。

http://www.bribes.org/perl/ppm/package.lst

リポジトリの追加方法については、後述の関連項目を確認してください。

リポジトリの管理

リポジトリはモジュールが配布されているインターネット上/ローカルのディレクトリのことです。初期状態ではActiveState社の提供しているリポジトリが登録されていますが、ここにないモジュールをインストールしたい時や、ローカルのディレクトリをリポジトリとして使いたい時にはリポジトリの追加をします。

なお、この内容はActivePerlといっしょにインストールされるドキュメントの「Using PPM」のページにかかれているrepコマンドの使い方をまとめなおしたものです。

現在のリポジトリの確認

現在登録されているリポジトリは、repコマンドを実行すると表示されます。

ppm> rep
[1] ActiveState PPM2 Repositry
[2] ActiveState Package Repositry

"rep describe 番号"で、そのリポジトリの詳細情報を見ることができます。

ppm> rep describe 1
Describing Active Repository 1:
    Name: ActiveState PPM2 Repositry
    Location: http://ppm.ActiveState.com/cgibin/PPM/ppmserver-5.8-windows.pl?urn:/PPMServer
    Type: PPMServer 2.0

リポジトリの追加と削除

リポジトリの追加は、rep addを使用します。外部のリポジトリを追加(通常は外部でしょう)する時には、"rep add リポジトリ名 URL"を実行します。例えば、以下のようにすると"http://theoryx5.uwinnipeg.ca/ppms/"を"theoryx5"の名前で登録できます。

ppm> rep add "theoryx5" "http://theoryx5.uwinnipeg.ca/ppms/"
[1] ActiveState PPM2 Repositry
[2] ActiveState Package Repositry
[3] theoryx5

ローカルディレクトリをリポジトリに登録する場合も同じです。URLの代わりにディレクトリのフルパスを記述します。

ppm> rep add "local" "C:\rep"
[1] ActiveState PPM2 Repositry
[2] ActiveState Package Repositry
[3] theoryx5
[4] local

リポジトリの削除はrep delです。この後ろにリポジトリの番号か、名前を続けると、そのリポジトリは削除されます。

ppm> rep del 3
[1] ActiveState PPM2 Repositry
[2] ActiveState Package Repositry
[3] theoryx5

追加したリポジトリについては、rep describeで内容を確認しておくと良いでしょう。余談ですが、ローカルディレクトリであればちゃんとTypeは「Local directory」と表示されます。

リポジトリの優先順位とオン/オフ。

リポジトリに振られている番号は検索の優先順位です。優先順位の番号が振られていないものがあれば、そのリポジトリはオフになっています。

リポジトリのオン、オフはそのもの、rep onとrep offで行なえます。rep offではリポジトリの名前か番号で対照を指定できます。rep onでは(番号が振られていない状態なので)リポジトリ名で対象を指定します。

ppm> rep off 3
[1] ActiveState PPM2 Repositry
[2] ActiveState Package Repositry
[ ] theoryx5
ppm> rep on theoryx
[1] ActiveState PPM2 Repositry
[2] ActiveState Package Repositry
[3] theoryx5

リポジトリの優先順位は、rep upとrep downで変更できます。

ppm> rep up 3
[1] ActiveState PPM2 Repositry
[2] theoryx5
[3] ActiveState Package Repositry
ppm> rep down 2
[1] ActiveState PPM2 Repositry
[2] ActiveState Package Repositry
[3] theoryx5

リポジトリの指定は、番号のほかに、リポジトリ名でも可能です。この時、リポジトリ名の先頭数文字だけを指定してもかまいません。

ppm> rep up theo
[1] ActiveState PPM2 Repositry
[2] theoryx5
[3] ActiveState Package Repositry

優先順位の変更は明示的にローカルからモジュールをインストールしたい時や、あるリポジトリに他のリポジトリより新しいバージョンのモジュールが置かれていることがわかっている時に活用すると良いでしょう。

PPM2とPPM3

ActivePerl build638ではPPM(バージョンは2.x)と、PPM3(バージョンは3.x)がインストールされ、どちらを使うかはActivePerlのインストール・ウィザードの中で指定できるようになっています。

上述の「rep」などのコマンドは、PPM3で設けられたコマンドです。 私自身はPPM3を使用していますので、上記のような説明になっています。

PPMからPPM3への切り替え

「PPM3を使わない」という設定でActivePerlをインストールした環境で、以下の手順でPPM(バージョン2.x)からPPM3への切り替えができました。

  • "C:\perl\bin\PPM.bat"を削除。
  • "C:\perl\bin\PPM3.bat"を、同じディレクトリに"PPM.bat"のファイル名でコピー。

PPM.batは元々、PPM3を使わない設定でインストールした時点では、同ディレクトリのPPM2.batと同内容でした。 なお、こうした切り替え方が妥当なものか、確信はありません。 何かご存知でしたら、ぜひコメントをお願いします。

ローカルでのPPMのインストール方法(まとめ)

問題

当初 http://member.nifty.ne.jp/hippo2000/perltips/ppm.htm の内容に従いローカルに保存したモジュールの媒体をインストールしようとしました。 がなんとppmでlocationオプションが無いのでローカルファイルをリポジトリとして参照する事ができなかったのです。

さんたさん・ばっきぃさんの解決方法

  • C:\Temp に解凍して、
ppm> install /Temp/Module-Name/Module-Name.ppd 

でできませんか

あんでっどさんの解決方法

  • バージョンはactive perl 5.8です。
  • 二日がかりで perldoc PPM とppm> help rep,install などを必死こいて和訳してクリアしました

  • ローカルのレポジトリ用に半角英数字のディレクトリを用意して解凍したファイルを入れておきます。英数字オンリーなら名前は何でもいいです
  • ppmの起動
ppm> rep add "LocalRepository" D:\local_m(リターン) ""内はお好きな名前で。

第二パラメータは追加したいローカルリポジトリ。

  • tempdirが英数字のみのパスか否かを確認
ppm> settings(リターン) 
  • tempdirに日本語を含むパスが表示されている場合は英数字のみのパスを指定する必要があるので
  • 次の処理を。英数字だけで構成されているなら次は飛ばしていいです。

ppm> set tempdir D:\local_m\Temp(リターン) 

展開用の仮フォルダを作成しました。

  • 先ほど追加したローカルリポジトリがアクティブになっている事を確認して下さい
ppm> rep (リターン)
  • installコマンドでモジュールの追加。
ppm> install D:\local_m\MailTools?-1.59\MailTools?.ppd(リターン) 

コメント

Win32API::Registry object version 0.22 does not match bootstrap parameter 0.23 at C:/apachefriends/xampp/perl/lib/DynaLoader.pm line 253.
Compilation failed in require at C:/apachefriends/xampp/perl/lib/Win32/TieRegistry.pm line 26.
BEGIN failed--compilation aborted at C:/apachefriends/xampp/perl/lib/Win32/TieRegistry.pm line 26.
Compilation failed in require at C:\apachefriends\xampp\perl\bin/ppm.bat line 15
BEGIN failed--compilation aborted at C:\apachefriends\xampp\perl\bin/ppm.bat line 15.
[[#comment]]