unoh.github.com

PEAR package 作成と公開までの手順

Mon Sep 04 08:44:44 -0700 2006

こんにちは,ttsuruoka です.

PEAR package の作成と公開までの手順について,
(たまにしかやらないことは忘れてもいいように)ここにメモしておきます.

例として Services_Delicious のパッケージ作成・公開手順:

0. テスト

まずはテストが正常に通る状態であることを確認.
Services_Delicious では .phpt 形式のテストを用意してあるので,これを実行します.

$ cd /path/to/tests  # テストのあるディレクトリに移動
$ pear run-tests
Running 3 tests
PASS Services_Delicious:bug#8528[bug8528.phpt]
PASS Services_Delicious:Req#7293[req7293.phpt]
PASS Services_Delicious:Req#8044[req8044.phpt]
TOTAL TIME: 00:07
3 PASSED TESTS
0 SKIPPED TESTS


テストを個別に実行したいときは,実行するテストを指定します:

$ pear run-tests bug8528.phpt



1. パッケージ定義ファイル(package.xml)の検証


$ cd /path/to/package  # パッケージのあるディレクトリに移動
$ pear pv
Analyzing Delicious.php
Validation: 0 error(s), 0 warning(s)


pear pv は pear package-validate の省略形です.このコマンドによって package.xml 中のタグの閉じ忘れなどの構文エラーをチェックできます.


2. Tarball を作成

$ pear package


Services_Delicious-0.5.0.tgz が出来上がります.


3. パッケージに問題がないか検証

パッケージ情報の確認:

$ pear info Services_Delicious-0.5.0.tgz
About Services_Delicious-0.5.0
==============================
Provides            Classes: Services_Delicious
Package             Services_Delicious
Summary             Client for the del.icio.us web service.
(中略)
Version             0.5.0
Release Date        2006-09-05
Release License     PHP License
Release State       beta
Release Notes       - Fixed bug #8528: Invalid response code
Release Deps        Package PEAR ==
                    Package HTTP_Request ==
                    Package XML_Serializer >= 0.12.0
                    ext openssl ==
Package.xml Version 1.0
Packaged With PEAR  1.4.9


Release Date, Release Notes をよく確認.

インストールパスの確認:

$ pear list Services_Delicious-0.5.0.tgz 
Contents of Services_Delicious-0.5.0.tgz
========================================
Package File            Install Path
docs/api.txt            /usr/local/lib/php/doc/Services_Delicious/docs/api.txt
examples/addPost.php    /usr/local/lib/php/doc/Services_Delicious/examples/addPost.php
(中略)
examples/renameTag.php  /usr/local/lib/php/doc/Services_Delicious/examples/renameTag.php
Delicious.php           /usr/local/lib/php/Services/Delicious.php


pear install したときにどこにファイルが配置されるか分かります.
おかしいところがあれば package.xml を見直します.


4. ローカルにインストール

パッケージを公開する前にまずはローカル環境にインストールします.

# pear install -f Services_Delicious-0.5.0.tgz


古いパッケージを上書きしてインストールするため -f オプションをつけてあります.
インストール後に以下の項目を確認します:
- 正しいファイル名か
- 正しいディレクトリ構成か
- 正しい場所にインストールされているか


5. 公開

公式なパッケージの場合:
PEAR website からアップロード→パッケージのページ確認(http://pear.php.net/package/Services_Delicious)→ PEAR-general メーリングリスト確認 → pear install で確認

非公式なパッケージの場合:
公開ディレクトリにパッケージファイルを置く→ pear install で確認