【php】PEARをインストールする(Pyrusで)
問題
PEARって、サーバー単位で1つ、
各プロジェクトのベンダー用ディレクトリに設置したり、システムごとに必要なものだけ持たせたりしたいんだけど。
答え
Pyrus(新しい方のPEARインストーラー)でなら簡単。
自分のプロジェクトのライブラリ用ディレクトリに入れたり、フレームワークのvendorディレクトリに入れたりできる。もちろん、みんなで共用できるようにサーバー単位で1つインストールすることもできる。
1. pyrus.pharダウンロード
10MBぐらいある。どこにあってもかまわないので、好きなところに。
$ wget http://pear2.php.net/pyrus.phar
2. 初期設定
初めてinstallを実行すると、初期設定するか?と聞かれる。
設定は自分のホームディレクトリに ~/.pear/pearconfig.xml で保存される。
$ php pyrus.phar install Pyrus version 2.0.0a4 SHA-1: 72271D92C3AA1FA96DF9606CD538868544609A52 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/ec2-user/.pear/pearconfig.xml Where would you like to install packages by default? [/home/ec2-user] : /tmp/myProject/lib (←あくまでもデフォルトの場所なのでどこでもよいけど、開発中のプロジェクトがあればそこにしておくとよいでしょう。) You have chosen: /tmp/myProject/lib Thank you, enjoy using Pyrus (......以下略......)
設定の確認は getコマンドで。
$ php /tmp/pyrus.phar get Pyrus version 2.0.0a4 SHA-1: 72271D92C3AA1FA96DF9606CD538868544609A52 Using PEAR installation found at /tmp/myProject/lib System paths: php_dir => /tmp/myProject/lib/php ext_dir => /usr/lib64/php/modules cfg_dir => /tmp/myProject/lib/cfg doc_dir => /tmp/myProject/lib/docs bin_dir => /usr/bin data_dir => /tmp/myProject/lib/data www_dir => /tmp/myProject/lib/www test_dir => /tmp/myProject/lib/tests src_dir => /tmp/myProject/lib/src php_bin => /usr/bin/php php_ini => /etc/php.ini php_prefix => (......以下略......)
バイナリの設置場所 bin_dir
が /usr/bin
となっているので、これもプロジェクト内になるように変えることができる。
設定をするのは setコマンドで。
$ php pyrus.phar set bin_dir /tmp/myProject/lib/bin
3. PEARインストール
PEARのコアのPEARのインストールなら、
$ php pyrus.phar install pear/PEAR
アンインストールは、
$ php pyrus.phar uninstall pear/PEAR
依存関係は自動的に解決してくれる。必要なものがなければ一緒に取ってきてくれる。
$ php pyrus.phar install pear/Services_ReCaptcha Pyrus version 2.0.0a4 SHA-1: 72271D92C3AA1FA96DF9606CD538868544609A52 Using PEAR installation found at /tmp/myProject/lib Downloading pear.php.net/Services_ReCaptcha Mime-type: application/octet-stream Downloading pear.php.net/HTTP_Request2===============================================================>] 100% (10/10 kb) Mime-type: application/octet-stream Downloading pear.php.net/Net_URL2====================================================================>] 100% (96/96 kb) Mime-type: application/octet-stream Downloading pear.php.net/PEAR========================================================================>] 100% (11/11 kb) Mime-type: application/octet-stream Installed pear.php.net/Services_ReCaptcha-1.0.3======================================================>] 100% (289/289 kb) ← 頼んだもの Installed pear.php.net/HTTP_Request2-2.1.1 ← 頼んでないけど取ってきてくれた Installed pear.php.net/Net_URL2-2.0.0 ← 頼んでないけど取ってきてくれた Installed pear.php.net/PEAR-1.9.4 ← 頼んでないけど取ってきてくれた
4. 使うとき
include_pathが通っていないところにPEARがあるので、include_pathを自家用PEARに合わせる。
<?php set_include_path('/tmp/myProject/lib/php'); require_once 'HTTP/Request2.php'; $request2 = new HTTP_Request2(); //......以下略......
5. さらに他のものもインストール
PEARチャンネルに対応しているパッケージなら、同じようにインストールできる。
例えば、PHPUnitのインストールなら、
$ php pyrus.phar set auto_discover on $ php pyrus.phar channel-discover pear.phpunit.de $ php pyrus.phar install phpunit/PHPUnit
確認すると、ファイルが増えている。
$ ls /tmp/myProject/lib/bin/ pear peardev pecl phpunit $ ls /tmp/myProject/lib/php/PHPUnit/ Autoload.php Extensions Framework Runner TextUI Util
6. さらに他のプロジェクトにも対応
新たにプロジェクトmyProject2が始まって、/tmp/myProject2で開発、/tmp/myProject2/appにソースが合って、/tmp/myProject2/app/vendor がベンダー用ディレクトリだとしたら、
設定もプロジェクトごとにできるので、以下のように設定しておいてから、
$ php pyrus.phar /tmp/myProject2/app/vendor set bin_dir /tmp/myProject2/app/vendor/bin
PEARをインストールする。
$ php /tmp/pyrus.phar /tmp/myProject2/app/vendor install pear/PEAR
コメント