2011/12/10 (土)
PyrusでプロジェクトローカルなPEARライブラリインストール : PHP Advent Calendar jp 2011 Day 10
PHP Avent Calendar jp 2011の10日目、@calpo22です。
→前日「includeとextractの組み合わせでテンプレート処理を作る。PHPのAdvent Calender #9 - ブックマクロ開発に」
みなさんPEAR使ってますか?
PEARのライブラリを普通にインストールすると/usr/binとかに入るんですが、そうじゃなくて自分用に~/binに入れたいとか、フレームワークのvendorディレクトリに入れたいとかありますよね。
これで結構苦労していたところ、今年のPHPカンファレンスで「Pyrus使うと捗るよ」みたいな話を聞きくことができました。
pearの後継となるパッケージマネージャらしく、「なにそれすごい!これでかつる!」と期待に胸をふくらませつつ家に帰って試してみたところ・・・
とにかく日本語の情報が全然無い
という状態でなんか凹みました。
でも、Pyrusだとpearよりもプロジェクトローカルなライブラリのインストールがやりやすいです!
ということでPyrusによるPEARライブラリインストールのご紹介。
まずは俺ローカルなPEARライブラリインストール
~/mypyrusに自分用のPEARライブラリをインストールしてみます。
(必ずしも俺ローカルが必要なわけではないですが、整理しやすかったのでこのようにしています)
pyrus.pharダウンロード
pyrus.phar自体はどこにあってもいいんですが、とりあえず~/mypyrusに入れておくことに。
$ mkdir mypyrus $ cd mypyrus/ $ wget http://pear2.php.net/pyrus.phar
pyrusの初期設定
最初にpyrusを実行すると初期設定が行われ、パッケージのインストール先のディレクトリ等が設定されます。
$ php pyrus.phar install Pyrus version 2.0.0a3 SHA-1: BE7EA9D171AE3873F1BBAF692EEE9165BB14BD5D Pyrus: No user configuration file detected It appears you have not used Pyrus before, welcome! Initialize install? Please choose: yes no [yes] : # ↑yesなのでそのままEnter Great. We will store your configuration in: /home/calpo/.pear/pearconfig.xml Where would you like to install packages by default? [/home/calpo/mypyrus] : # ↑にインストールなのでそのままEnter $ ls ~/.pear/pearconfig.xml /home/calpo/.pear/pearconfig.xml
~/.pear/pearconfig.xmlが作成されます。
config-showコマンドで設定を確認できます。
$ php pyrus.phar config-show Pyrus version 2.0.0a3 SHA-1: BE7EA9D171AE3873F1BBAF692EEE9165BB14BD5D Using PEAR installation found at /home/calpo/mypyrus System paths: php_dir => /home/calpo/mypyrus/php ext_dir => /usr/lib64/php/modules cfg_dir => /home/calpo/mypyrus/cfg doc_dir => /home/calpo/mypyrus/docs bin_dir => /usr/bin data_dir => /home/calpo/mypyrus/data ・ ・
bin_dirが/usr/binになっているので自分用に変更しましょう。
(~/mypyrus/.config が生成されます)
$ php pyrus.phar set bin_dir /home/calpo/mypyrus/bin $ php pyrus.phar config-show ・ ・ bin_dir => /home/calpo/mypyrus/bin ・ ・
PHPUnitインストール
準備ができたので俺専用PHPUnitをインストールしてみましょう。
$ php pyrus.phar set auto_discover on $ php pyrus.phar channel-discover pear.phpunit.de $ php pyrus.phar install phpunit/PHPUnit Pyrus version 2.0.0a3 SHA-1: BE7EA9D171AE3873F1BBAF692EEE9165BB14BD5D Using PEAR installation found at /home/calpo/mypyrus Sorry, phpunit/PHPUnit references an unknown channel pear.symfony-project.com for pear.symfony-project.com/YAML Do you want to add this channel and continue? Please choose: yes no [yes] : # ↑途中チャンネルの追加について問われます ・ ・ pear.phpunit.de/PHP_Invoker depended on by pear.phpunit.de/PHPUnit
どん!
入りました。
$cd ~/mypyrus $ ls bin cache docs downloads php pyrus.phar $ ls bin/ phpunit $ ls php/ File PHP PHPUnit SymfonyComponents Text
include_pathの設定
早速bin/に入ったphpunitを実行しようとしても、必要なディレクトリがinclude_pathに設定されていないので怒られます。
$ cd ~/mypyrus/bin $ ./phpunit Warning: require(PHPUnit/Autoload.php): failed to open stream: No such file or directory in /home/calpo/mypyrus/bin/phpunit on line 42 $ php -i | grep include_path include_path => .:/usr/share/pear:/usr/share/php => .:/usr/share/pear:/usr/share/php
今回はお手軽に~/mypyrus/bin/phpunit に設定を追加して、~/mypyrus/phpをinclude_pathに入れてしまいます。
// ↓をrequireの前に追加 set_include_path( realpath(dirname(__FILE__).'/../php') . PATH_SEPARATOR . dirname(__FILE__) . PATH_SEPARATOR . get_include_path());
ただライブラリによってbin/に入るファイルがphpスクリプトだったりシェルスクリプトだったり、PHP_CLASSPATHみたいな独自の環境変数を設定する必要があったりとなんかもう・・・
php.iniが変更できるならそれが一番確実です。
$ cd ~/mypyrus/bin $ ./phpunit --version PHPUnit 3.6.4 by Sebastian Bergmann.
いぇーい
プロジェクトローカルなPEARライブラリインストール
続いて適当なプロジェクトのvendorディレクトリにプロジェクト専用PEARライブラリをインストールしてみます。
ディレクトリの設定
setとかのコマンドの前にディレクトリを指定してあげると、そこローカルな作業と設定ができます。
(そのディレクトリに.configが出来上がります)
例えば~/project_hoge/vendorにインストールする場合・・・
$ php pyrus.phar /home/calpo/project_hoge/vendor set bin_dir /home/calpo/project_hoge/vendor/bin $ php pyrus.phar /home/calpo/project_hoge/vendor config-show Pyrus version 2.0.0a3 SHA-1: BE7EA9D171AE3873F1BBAF692EEE9165BB14BD5D Using PEAR installation found at /home/calpo/project_hoge/vendor System paths: php_dir => /home/calpo/project_hoge/vendor/php ext_dir => /usr/lib64/php/modules cfg_dir => /home/calpo/project_hoge/vendor/cfg doc_dir => /home/calpo/project_hoge/vendor/docs bin_dir => /home/calpo/project_hoge/vendor/bin ・ ・
インストール
チャンネルの設定などもプロジェクトローカルなのでまた設定します。
$ php pyrus.phar /home/calpo/project_hoge/vendor set auto_discover on $ php pyrus.phar /home/calpo/project_hoge/vendor channel-discover pear.phpunit.de $ php pyrus.phar /home/calpo/project_hoge/vendor install phpunit/PHPUnit ・ ・ pear.phpunit.de/PHP_Invoker depended on by pear.phpunit.de/PHPUnit $ ls ~/project_hoge/vendor/bin phpunit
こんな感じでプロジェクトローカルなPEARライブラリをほいほいインストールしていけます。
さらに・・・
package.xmlをmakeしてプロジェクトごとに必要なパッケージをまとめて管理したりと夢がひろがるらしいので日本語の情報ください :)
みんなでつかおうPyrus!
明日は@kokkekunさんです。
- 190 http://www.google.co.jp/url?sa=t&rct=j&q=requestanimationframe&source=web&cd=1&ved=0CCgQFjAA&url=http://d.hatena.ne.jp/calpo/20110523/p1&ei=BzniTsndGtChmQXy9dTxBA&usg=AFQjCNE6HYYzMjASoDJaz_dfDnpgopYmQg
- 155 http://www.google.co.jp/url?sa=t&rct=j&q=ssl_error_rx_record_too_long&source=web&cd=9&ved=0CGkQFjAI&url=http://d.hatena.ne.jp/calpo/20110920/p1&ei=FFfkTteSAojNmQXv0OzpBA&usg=AFQjCNHfgptjJkPj643iqQA35afwuEHGUA
- 73 http://www.google.co.jp/url?sa=t&rct=j&q=attempt to write a readonly database&source=web&cd=1&ved=0CCMQFjAA&url=http://d.hatena.ne.jp/calpo/20110315/p1&ei=9JflTrenOeHImQWQmJiGBQ&usg=AFQjCNEVzhObNVhUgxmJRZ0Z_3Cr0BaYLw&sig2=c8rPRZ7ow4H
- 70 http://www.google.co.jp/url?sa=t&rct=j&q=uncaught exception: syntax error, unrecognized expression: #&source=web&cd=1&ved=0CCEQFjAA&url=http://d.hatena.ne.jp/calpo/20110714/p1&ei=SKjmTsWxDoj_mAXmg5ScCg&usg=AFQjCNF21KXljyi0a
- 53 http://www.google.co.jp/url?sa=t&rct=j&q=session_set_save_handler memchached&source=web&cd=2&ved=0CCYQFjAB&url=http://d.hatena.ne.jp/calpo/20111104/p1&ei=9HDlTo7PIsrCmQWOxoH5BA&usg=AFQjCNHzBKQvJfl1us2Mb2SMVU0L-hBJOg&sig2=6IUkzY-ls7jGuDu7Qbfv
- 43 http://www.google.co.jp/url?sa=t&rct=j&q=jshint&source=web&cd=3&ved=0CDIQFjAC&url=http://d.hatena.ne.jp/calpo/20110301/p1&ei=joHlTtbND4SemQWem4ygBQ&usg=AFQjCNGVDStIeinrqcZOxMvrj9CMys1fpQ&cad=rja
- 39 http://pipes.yahoo.com/pipes/pipe.info?_id=f8e50936209277c7946c9bc16b988bf7
- 37 http://www.google.co.jp/url?sa=t&rct=j&q=css 画像を切り抜く&source=web&cd=8&ved=0CGgQFjAH&url=http://d.hatena.ne.jp/calpo/20110517/p1&ctbs=lr:lang_1ja&ei=BHfjTvDcLKmHmQW7-uj8BA&usg=AFQjCNHUd
- 35 http://www.google.co.jp/url?sa=t&rct=j&q=サムネイル css 切り出し&source=web&cd=1&ved=0CB8QFjAA&url=http://d.hatena.ne.jp/calpo/20110408/p1&ei=G7nmTorvKuvLmAWzzNGYCg&usg=A
- 32 http://www.google.co.jp/url?sa=t&rct=j&q=Attempt+to+write+a+read-only+database&source=web&cd=1&ved=0CB8QFjAA&url=http://d.hatena.ne.jp/calpo/20110315/p1&ei=6v3nTuDjL-b-mAXczoGRCg&usg=AFQjCNEVzhObNVhUgxmJRZ0Z_3Cr0BaYLw





