2005-05-19

PPMの使い方

PPMはActiveState社が提供するPerlモジュール管理用のツールです。PPMはPerlシステムに拡張モジュールを追加したりアップグレードしたりするのに使用します。本編で使用するPPMはVersion 3.1です。

PPMは以前「Perl Package Manager」と呼ばれていましたが、ActiveState社によると今は「Programmer's Package Manager」と呼ぶそうです。古くからのperlプログラマにとってはPerl Package Managerの方が分かり易いかもしれません。

ppm02.gif

PPMによるモジュール追加/変更の仕組みを簡単にを右図に示します。リポジトリとはモジュールを配布しているインターネット上のディレクトリの事です。初期設定ではActiveState社のリポジトリが登録されています。別のリポジトリを追加する事もできます。

PPMではリポジトリからモジュールを検索したり、ローカルのPerlシステムにモジュールをインストールしたりする事ができます。また、これまでにインストールしたモジュールを検索する事もできます。PPMでインストールされるモジュールは、Perlの標準モジュールとは区別され、別のフォルダに保存されます。このモジュールを標準モジュールに対して拡張モジュールと呼ぶ事にすると、ActivePerl Windows版では

{ActivePerlインストールフォルダ}\lib    標準モジュール
{ActivePerlインストールフォルダ}\site\lib  拡張モジュール

の2つのモジュール保存場所がある事になります。Perlではモジュールなどのライブラリが保存されている場所を特殊変数 @INCで管理しています。コマンドプロンプトで、

perl -le "print foreach @INC" <Enter>

とすると、以下のようにライブラリのインクルードパス(@INC)を表示します。

C:/usr/lib
C:/usr/site/lib
.

PPMを使う上で注意する点は、PPMが管理しているのは拡張モジュールであるという点です。例えば、PPMでCGIモジュールやCarpモジュールを探しても見つかりません。なぜなら、これらのモジュールはPerlの標準モジュールだからです。また、上の@INCの表示順からも分かるようにライブラリの検索順は、標準モジュール→拡張モジュールの順です。この事からppmで例えばCGIモジュールをアップグレードしたとしても実際にインクルードされるのは古い標準モジュールの方だという事が分かります。標準モジュールをアップグレードする機会はあまりないかもしれませんが、注意を要します。

ActiveState社が配布しているPPMの情報は http://ppm.activestate.com/ にアクセスすれば知る事ができます。

ppm03.gif

このサイトではモジュールのビルド状態([Builds])とZIPファイルによるモジュールのダウンロード([Zips])ができます。PPMで初期設定されているActiveState社のリポジトリはここにあります。また、以前のバージョンのZIPファイルもこのサイトから入手できます。

はじめてのPPM

PPMを起動する前に注意する事があります。PPMはインターネット上のリポジトリにHTTPでアクセスします。使用しているインターネット環境(HTTP)がプロキシ経由の場合は、前もって環境変数にHTTPプロキシの設定をしておく必要があります。

HTTPプロキシの設定

本編ではWindowsXPを使用しているので以下のような設定になります。

  1. [マイコンピュータ]を右クリックして[プロパティ]を開きます。
  2. [詳細設定]タブを開いて[環境変数]ボタンを押します。
  3. システム環境変数内の[新規]ボタンを押して以下の新しい環境変数を登録します。
    [変数名] HTTP_proxy     [変数値] http://192.168.1.254:8080/
    ※ HTTPプロキシのIPアドレス:ポート番号は環境に合わせて変更して下さい
  4. もしHTTPプロキシにユーザ認証が必要な場合は、以下の環境変数も登録します。
    [変数名] HTTP_proxy_user  [変数値] あなたのユーザ名
    [変数名] HTTP_proxy_pass  [変数値] あなたのパスワード

Windows 2000の場合もほとんど同じ要領です。Windows 9xの場合はAUTOEXEC.BATにSETコマンドを使用して設定しますが、環境変数名はWindows 2000/XPの場合と同じです。

PPMの起動

PPMを起動するには次の2つの方法があります。

(1)スタートメニュから[プログラム][ActiveState ActivePerl][Perl Packge Manager]をクリックします。
(2)コマンドプロンプトを起動してppmコマンドを実行します。

いずれの場合も、以下の画面が表示されます。(1)の場合はPPMを終了するとコマンドプロンプトも終了します。

ppm01.gif

PPMでの操作はコマンド形式で行います。プロンプト(ppm>)に続けてコマンドを入力して下さい。
例:

ppm>help   このコマンドはppmのヘルプを表示します

よく使うPPMコマンド

以下はよく使うコマンドのリストです。詳しくはActivePerlのHTMLドキュメントを参照して下さい。

helpコマンドのヘルプを表示します。各コマンドのヘルプを見るには、
ppm>help search などとします
repositryリポジトリの表示/登録/削除/優先順位の変更を行います
searchリポジトリ上にあるモジュールを検索します。sコマンドにも同じ機能があります
describeリポジトリ上にあるモジュールの説明を表示します
installリポジトリ上にあるモジュールをインストールします
queryローカルの拡張モジュールを検索します
uninstallローカルの拡張モジュールをアンインストールします。removeコマンドにも同じ機能があります
upgradeローカルの拡張モジュールがアップグレード可能か否かを調べます
exitppmを終了します。quitやqコマンドでも終了します


PPMのコマンドはショートカットできます。例えば、以下の2つは同じです。

ppm> help repositry
ppm> h rep

この例では共にrepositryコマンドのヘルプが表示されます。

ppm> repositry
ppm> rep

この場合も同じです。PPMはコマンドが認識できる最小のスペルを入力すれば解釈してくれます。但し、例外があります。qの場合はquitとqueryがありますが、quitが実行されます。またsはsearchとsettingsがありますが、searchsが実行されます。これはqとsがショートカットではなくコマンド自体として認識されているからです。(helpコマンドを参照)

モジュール名について

PPMのコマンド引数にはモジュール名やモジュール名の検索パターンを指定します。Perlではモジュール名の中に2つのコロン(::)が含まれる場合があります。これは単にディレクトリセパレータ(Unixでは/、Windowsでは\)を意味します。PPMではこのディレクトリセパレータをハイフン(-)で表記します。例えば、SOAP::LiteはSOAP-Liteと表記します。searchコマンドなどでは2つのコロン(::)でも検索できるリポジトリもありますが、正式にはハイフン(-)を使うようです。

登録されているリポジトリとローカルの拡張モジュールの確認

この章の最初に説明したように、ppmの主な機能は「リポジトリからローカルのPerlシステムに拡張モジュールをインストールする事」です。はじめてppmを実行した時には、登録されているリポジトリとローカルのPerlシステムにある拡張モジュールの初期状態を調べておくのが良いでしょう。

登録されているリポジトリを見るにはrepositryコマンドを使います。

ppm> rep
Repositories:
[1] ActiveState PPM2 Repository
[2] ActiveState Package Repository

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

ppm> rep des 2
Describing Active Repository 2:
    Name: ActiveState Package Repository
Location:
http://ppm.ActiveState.com/PPM/ppmserver-5.8-windows.plex?urn:/PPM/Server/SQL
    Type: PPMServer 3.0


インストールされているローカルの拡張モジュールを検索するにはqueryコマンドを使います。

ppm> query *
Using cached query result set 1.
   1. ActivePerl-DocTools     [0.04] Perl extension for Documentation TOC Gene~
   2. ActiveState-Relocat~    [0.03] Relocate a Perl installation
   3. ActiveState-Rx          [0.60] Regular Expression Debugger
   4. Archive-Tar             [1.22] Manipulates TAR archives
   ・
   ・
   ・
  21. SOAP-Lite               [0.55] Library for Simple Object Access Protocol~
  22. Tk                   [804.027] A Graphical User Interface Toolkit
  23. URI                     [1.35] Uniform Resource Identifiers (absolute an~
  24. Win32-AuthenticateU~    [0.02] Win32 User authentication for domains
  25. XML-Parser              [2.34] A Perl module for parsing XML documents
  26. XML-Simple              [2.12] Easy API to read/write XML (esp config fi~

この例では、初期状態で26の拡張モジュールがインストールされている事が分かります。



最終更新のRSS Last-modified: Fri, 20 May 2005 17:28:57 JST (4392d)