背景
最近propelをインストールしようとした際に、
$ pear channel-discover pear.propelorm.org
このコマンドがpear.propelorm.orgサーバーの無応答でどうにもならなかったことがあった。(この記事を書いている時点でも無応答)
多分、ver2がリリースされているのでver1世代のPEARはメンテされていないんだろう。
ソースコード自体はgithubにあるので、他のインストール方法で解決することもできるのだが、上記コマンドおよびその後に続くインストールコマンドはChefで実行しているので、なるべく同じ手順で対応したい。
ということで、偽pear.propelorm.orgを立ち上げた時の作業メモ。
他のPEARチャンネルでも、似たような手順で対応可能だと思う。
# ローカル用なので雑な手順なのはご愛嬌・・・
目標
- (サーバーが死亡した)PEARチャンネルをローカルネットワークに作る
- インストールするホストでは、「pear」コマンドを変更せずに利用可能にする
手順
PEARパッケージを作る準備
httpdなどのWebサーバーが立ち上がっているホスト(PEARインストール対象のホストでも良い)を用意する。
そのホストで、Pirumをインストールする。
$ pear channel-discover pear.pirum-project.org
$ pear install pirum/Pirum
自前のPEARチャンネルを作る
以下の手順はpropelを対象にした例。
まずはソースコードのダウンロードと解凍。
$ cd /tmp
$ wget https://github.com/propelorm/Propel/archive/1.7.1.zip
$ mv 1.7.1 Propel-1.7.1.zip
$ unzip Propel-1.7.1.zip
解答したパッケージのトップにpirum.xmlを作成する。
$ cd Propel-1.7.1/
$ vim pirum.xml
ここでのポイントはオフィシャルのPEARインストール手順に合わせて name と alias を書いておくこと。
オフィシャルではこんな感じなので、
$ pear channel-discover pear.propelorm.org
$ sudo pear install -a propel/propel_generator
$ sudo pear install -a propel/propel_runtime
channel-discoverのコマンドに合わせて name を、
installのコマンドの「 foo/bar 」の foo に合わせて alias を書く。
こんな感じ。
<?xml version="1.0" encoding="UTF-8" ?>
<server>
<name>pear.propelorm.org</name>
<summary>Local Propelorm PEAR channel</summary>
<alias>propel</alias>
<url>http://pear.propelorm.org/</url>
</server>
この例ではURLをオフィシャルに合わせているが、URLを完全に自前のものに変えても良い。
「pear install」コマンドを打った時にアクセスするURLとなる。
XMLファイルができたら、PEARパッケージ化する。
$ pirum build .
チャンネルにパッケージを追加する
今は空のチャンネルになっているはず。phingでパッケージをビルドし、pirumコマンドで追加していく。
# PropelはPEAR用XMLファイルがリポジトリに一緒に置いてあって良かった。
version=の部分は、パッケージのバージョンを入れる。
$ phing -Dversion=1.7.1 -f generator/pear/build-pear-package.xml
$ pirum add . generator/pear/build/propel_generator-1.7.1.tgz
$ phing -Dversion=1.7.1 -f runtime/pear/build-pear-package.xml
$ pirum add . runtime/pear/build/propel_runtime-1.7.1.tgz
確認
$ cat packages.json
Webサーバーに配置
Webサーバーの設定によって色々だと思うので、以下は例。とにかく、 pirum.xmlで書いたURLでアクセスできるように配置する。
配置の仕方がかなり雑なのはご愛嬌。
$ sudo cp -rp /tmp/Propel-1.7.1/* /var/www/html/
この例だと「1Webサーバー:1PEARチャンネル」になってしまうので、VirtualHostとかVirtualDocumentRootと組み合わせるのが良いと思う。ここでは割愛。
PEARインストールする対象ホストで確認
もし上記pirum.xmlのようにオフィシャルのURLに合わせているなら、hostsファイルを編集する。
WebサーバーのIPアドレス pear.propelorm.org
そして、上記pirum.xmlで記載したURLでアクセスできることを確認。
$ curl <pirum.xmlに書いたURL>
PEAR Channelの情報が出てくれば成功。
インストールしてみる
オフィシャルのPEAR手順にしたがってコマンドを打ってみる。
$ pear channel-discover pear.propelorm.org
もしオリジナルなURL・・・例えば http://hoge/fuga/ を設定しているなら、以下のように入力。
$ pear channel-discover hoge/fuga
パッケージを入れてみる。
$ sudo pear install -a propel/propel_generator
$ sudo pear install -a propel/propel_runtime
OKだった。