pirumを使ってPEARチャネルサーバーを構築

2013-04-07T00:00:00+00:00 PHP

動かしてるシステムとかのPHPパッケージをPEAR経由でインストール出来るようにしたいとか。pirumっていうのを使えば簡単に構築できるらしいのでやってみた

pirumのインストール

http://pirum.sensiolabs.org に書いてる通りにインストールする。やるとpirumってコマンドが使えるようになる模様

でそのPEARチャネルなファイル郡を生成するディレクトリを作っておく

pirum.xmlを作成

/var/www/pear/pirum.xmlを作成

<?xml version="1.0" encoding="UTF-8" ?>
<server>
  <name>pear.localhost</name>
  <summary>localhost PEAR Server</summary>
  <alias>local</alias>
  <url>http://pear.localhost/</url>
</server>

でコマンドを実行してファイルを生成する

pirum build /var/www/pear

PEARチャネルに登録するPHPパッケージのpackage.xmlを作成

http://pear.php.net/manual/ja/guide.developers.package2.intro.php を参考にしつつ作成

<?xml version="1.0" ?>
<package
    packagerversion="1.4.10"
    version="2.0"
    xmlns="http://pear.php.net/dtd/package-2.0"
    xmlns:tasks="http://pear.php.net/dtd/tasks-1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0

http://pear.php.net/dtd/tasks-1.0.xsd


http://pear.php.net/dtd/package-2.0

                      http://pear.php.net/dtd/package-2.0.xsd">

    <name>phest</name>
    <channel>pear.localhost</channel>
    <summary>PHP Simple Testing</summary>
    <description>PHP Simple Testing Unit Framework</description>
    <lead>
        <name>kinjouj</name>
        <user>kinjouj</user>
        <email>kinjouj@gmail.com</email>
        <active>yes</active>
    </lead>
    <date>2013-04-06</date>
    <version>
        <release>0.0.1</release>
        <api>0.0.1</api>
    </version>
    <stability>
        <release>devel</release>
        <api>devel</api>
    </stability>
    <license>PHP License</license>
    <notes>http://github.com/kinjouj/php-phest/blob/development/README.md</notes>
    <contents>
        <dir name="/" beseinstalldir="Phest">
            <file role="php" name="Phest.php" />
            <file role="script" name="phest" />
            <dir name="Phest">
                <file role="php" name="Assert.php" />
                <file role="php" name="Context.php" />
                <file role="php" name="Exception.php" />
                <file role="php" name="Matcher.php" />
                <file role="php" name="Report.php" />
                <file role="php" name="Subtest.php" />

                <dir name="Assert">
                    <file role="php" name="Plan.php" />
                    <file role="php" name="That.php" />
                </dir>

                <dir name="Report">
                    <file role="php" name="Console.php" />
                </dir>

                <dir name="Runner">
                    <file role="php" name="Console.php" />
                </dir>
            </dir>
        </dir>
    </contents>
    <dependencies>
        <required>
            <php>
                <min>5.4.13</min>
            </php>
            <pearinstaller>
                <min>1.9.4</min>
            </pearinstaller>
            <package>
                <name>Console_Color2</name>
                <channel>pear.php.net</channel>
                <min>0.1.2</min>
            </package>
            <package>
                <name>Console_CommandLine</name>
                <channel>pear.php.net</channel>
                <min>1.2.0</min>
            </package>
        </required>
    </dependencies>
    <phprelease>
        <filelist>
            <install as="phest" name="phest" />
        </filelist>
    </phprelease>
</package>

作ったらコマンド実行してパッケージング

pear package

終わったらtgzなファイルが出来る

PEARチャネルにパッケージを登録

pirum add /var/www/pear /path/to/package-versio.tgz

な感じで登録。これで終わり、Webサーバーにディレクトリな参照を設定してアクセスしてみると

という感じで表示される。んまぁSymfonyなプロジェクトとかもこういうの使ってるんじゃないのかなと

であとは通常通り作ったPEARチャネルをchannel-discoverしつつ、pirum.xmlで指定したエイリアスでパッケージをインストールしたり出来る

追記

https://github.com/mwillbanks/Pirum にある版を使うとclone-packageっていうコマンドが使える模様。恐らくは外部なPHPパッケージを自分のPEARチャネルにぶち込める物なんじゃないかと予想

Twitter Bootstrapのボタンを押した際にモーダルダイアログを閉じる方法 HttpClientクラスで「java.io.IOException: Attempted read from closed stream」が出るケース