pear install mypear.example.com とかやりたくなったのでやることにした。
参考サイト:
- http://pear.chiaraquartet.net/index.php?package=Chiara_PEAR_Server
- http://diary.eth.jp/?date=20060308
- http://itpro.nikkeibp.co.jp/members/ITPro/oss/20050629/163631/?ST=oss&P=4
サーバのインストール
そもそもpearのサイトにないのかよ,と思ったけれど,ないらしい。このへんの情報の流通はいまいちですね。で,chiaraquartetというサイトからインストールできるそうなので,インストールする。ただし,チャンネルのデータをmysqlに突っ込むらしいのでちょっと面倒そう。
それからすごい問題が!!php5必須ですって!!
% sudo pear channel-discover pear.chiaraquartet.net % sudo pear remote-list -c chiara Channel chiara Available packages: ================================== Package Version Chiara_Bugs 0.3.1 Chiara_PEAR_Server 0.18.5 % sudo pear install -a chiara/Chiara_PEAR_Server-alpha
install -aのおかげで,一緒にいろいろインストールされました。
前準備
- dns: pear.example.com 見たいなのをつくる
<VirtualHost *> DocumentRoot /home/apache/htdocs/pear ServerName pear.example.com </VirtualHost>
mysql> grant all on pear.* to pear@localhost identified by 'pear';
ちなみに,最初からデータベースがあるのにテーブルがないと
Table 'pear.packages' doesn't exist
とか言ってエラーになる様子。
run-scripts
pear installの最後にrun-scriptsしろ,っていってたのを実行する。いろいろ質問されるけれど,
Channel Administrator Handle (package.xml user tag): 自分の名前 Channel Name (server uri like pear.php.net): pear.example.com Suggested Channel Alias [pear] : example Channel summary : オレのチャンネル Channel Administrator Real Name : jibun Channel Administrator Email : jibun@example.com Channel Administrator Password : oreore Path to document root of web server for pear.example.com : /home/apache/htdocs/pear name of frontend.php HTML admin frontend file : index.php temporary path to save uploaded releases in : /tmp
を自分で入力して,あとはぜんぶデフォルト([yes]って書いてあるのはyesがデフォルト)。
確認
ブラウザからhttp://pear.example.comにアクセスし,先ほどの名前とパスワードを入れる。そうすると "Welcome" とか言われてインストールは完了。
で,あとはpackage.xmlというpear流のパッケージ情報ファイルを含んだtgzをブラウザの画面から投げればchannelに登録されるらしい。
つづいてパッケージ作る
package.xmlってどうやって書けばいいのよ,と思いますよね。
書き方自体は http://pear.php.net/manual/en/developers.packagedef.php に書いてあります。PEARには,このxmlのメンテナンスをやってくれるパッケージがあって, http://pear.php.net/package/PEAR_PackageFileManager をつかうといいらしい。
% sudo pear install -a PEAR_PackageFileManager
としていろいろインストールしてくれます。
とは言うものの,とりあえず動けばいいので,次のような適当なxmlを書き(コピペし)ました。
<?xml version="1.0"?> <package version="2.0" xmlns="http://pear.php.net/dtd/package-2.0"> <name>phpinfo</name> <channel>pear.example.com</channel> <summary>php info</summary> <description> do phpinfo(). </description> <lead> <name>ORE ore</name> <user>oreore</user> <email>oreore@example.com</email> <active>yes</active> </lead> <date>2006-06-11</date> <version> <release>0.0.1</release> <api>0.0.1</api> </version> <stability> <release>alpha</release> <api>alpha</api> </stability> <license>hoge license</license> <notes> note dayo </notes> <contents> <dir name="/"> <file name="phpinfo.php" role="php" /> </dir> </contents> <dependencies> <required> <php> <min>1.0.0</min> </php> <pearinstaller> <min>1.0.0</min> </pearinstaller> </required> </dependencies> <phprelease> </phprelease> </package>
この package.xml と同じ場所に phpinfo.php を置いて,pear packageしながら何が必要なのかちまちま確認しつつ,の作業でした。かなり苦労した...。
アップロード
ようやくエラーがなくなって,うまいこと.tgzができたら,さっきの画面からこの.tgzをアップロードします!
といいたいところですが,その前に。
もともと chiara からインストールしてきた PEAR_Server はなんだったのかと言うと,pear channelを簡単にメンテナンスするためのものでした。なので,どのパッケージをこのチャンネルで提供するのかをあらかじめ指定しておかなければいけません。
上のpackage.xmlでごちゃごちゃ書いていたのと同じものを,[Create a Package]のメニューで必須(*印がついてるやつ)フォームに入力してパッケージを登録し,自分をmaintainerに登録します。
そしてようやくアップロードです。あっさり成功したようです。けど,あまり画面が変わんないなー。ほんとうまくいってるのだろうか??
ためしに
% pear channel-discover pear.example.com % pear remote-list pear.example.com
とやってみるんだけど,うまくいかないよー。<追記> つづきを http://d.hatena.ne.jp/ichii386/20060611 に書きました。