2013年8月29日木曜日

pear/peclコマンドがサーバにインストールされてないときインストールする方法

ふつーに生活してたら、PHPはRPMで入れるもの。でも、あえて茨の道を歩むことを選ぶ人もいるはず。そういうオイラも茨の道を歩むタイプ。そう、RPMで入れれば楽なのにあえてtarball(ソース)からインストールしてドヤ顔なオイラ。

まあ、php自体をtarballからインストールする件については割愛するとして、表題のpear/peclのお話。コマンドの方ね。

どうもtarballからインストールすると、pear/peclコマンドがインストールされないっぽい。もしかしたらなんかの拍子に消しちゃったのかもしれないけど、まあそんなときのための覚え書き。念のためもう一度言っておくけど、pear/pecl「コマンド」のお話です。PEARそのもの自体は、configureのオプションで「--disable-cli」か「--without-pear」を指定していなければ、make installを実行したときにインストールされているはず。あ、「/path/to」の部分は各自の環境に合わせて読み替えてね♪

# cd /path/to/php5/bin/
# ls
phar  phar.phar  php  php-cgi  php-config  phpize

そこでPEARのマニュアルを参照。「PEAR パッケージマネージャの取得とインストール」に書いてある手順でインストールできるらしい。ってことでやってみた。

# wget http://pear.php.net/go-pear.phar
--2013-08-29 10:46:23--  http://pear.php.net/go-pear.phar
pear.php.net をDNSに問いあわせています... 5.77.39.20
pear.php.net|5.77.39.20|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 4082712 (3.9M) [application/octet-stream]
`go-pear.phar' に保存中

100%[==============================================================================================================================>] 4,082,712    957K/s 時間 4.2s

2013-08-29 10:46:28 (957 KB/s) - `go-pear.phar' へ保存完了 [4082712/4082712]

# ls
go-pear.phar  phar  phar.phar  php  php-cgi  php-config  phpize

これでgo-pear.pharが出来たので実行してみる。ふむふむどうやら環境設定メニューのようだ。

# php ./go-pear.phar

Below is a suggested file layout for your new PEAR installation.  To
change individual locations, type the number in front of the
directory.  Type 'all' to change all of them or simply press Enter to
accept these locations.

 1. Installation base ($prefix)                   : /path/to/php5
 2. Temporary directory for processing            : /tmp/pear/install
 3. Temporary directory for downloads             : /tmp/pear/install
 4. Binaries directory                            : /path/to/php5/bin
 5. PHP code directory ($php_dir)                 : /path/to/php5/share/pear
 6. Documentation directory                       : /path/to/php5/docs
 7. Data directory                                : /path/to/php5/data
 8. User-modifiable configuration files directory : /path/to/php5/cfg
 9. Public Web Files directory                    : /path/to/php5/www
10. Tests directory                               : /path/to/php5/tests
11. Name of configuration file                    : /path/to/php5/etc/pear.conf

1-11, 'all' or Enter to continue:

「1」から「11」のいずれかの数字を入力してEnterキーをポチッとすればその項目を変えることが出来るし、「all」と入力してポチッとすれば全部の項目を順番に変えていくことが出来るらしい。特に変える必要が無ければ、そのままポチッとしてしまえばいい。するとずらずらっと画面に表示されてなにやらインストールされているっぽい。

Beginning install...
Configuration written to /path/to/php5/etc/pear.conf...
Initialized registry...
Preparing to install...
installing phar:///path/to/php5/bin/go-pear.phar/PEAR/go-pear-tarballs/Archive_Tar-1.3.11.tar...
installing phar:///path/to/php5/bin/go-pear.phar/PEAR/go-pear-tarballs/Console_Getopt-1.3.1.tar...
installing phar:///path/to/php5/bin/go-pear.phar/PEAR/go-pear-tarballs/PEAR-1.9.4.tar...
installing phar:///path/to/php5/bin/go-pear.phar/PEAR/go-pear-tarballs/Structures_Graph-1.0.4.tar...
installing phar:///path/to/php5/bin/go-pear.phar/PEAR/go-pear-tarballs/XML_Util-1.2.1.tar...
install ok: channel://pear.php.net/Archive_Tar-1.3.11
install ok: channel://pear.php.net/Console_Getopt-1.3.1
install ok: channel://pear.php.net/Structures_Graph-1.0.4
install ok: channel://pear.php.net/XML_Util-1.2.1
install ok: channel://pear.php.net/PEAR-1.9.4
PEAR: Optional feature webinstaller available (PEAR's web-based installer)
PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)
PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)
PEAR: To install optional features use "pear install pear/PEAR#featurename"

******************************************************************************
WARNING!  The include_path defined in the currently used php.ini does not
contain the PEAR PHP directory you just specified:

If the specified directory is also not in the include_path used by
your scripts, you will have problems getting any PEAR packages working.


Would you like to alter php.ini ? [Y/n] :

「ここで装備して行くかい?」的なノリでphp.iniを書き換えるかを聞かれるので、書き換えるなら「y」を、書き換えないなら「n」を入力する。今回は書き換えてみることにした。せっかくなので。

php.ini  include_path updated.

Current include path           : .:/path/to/lib/php
Configured directory           : /path/to/php5/share/pear
Currently used php.ini (guess) : /path/to/apache2/conf/php.ini
Press Enter to continue:

** WARNING! Backed up old pear to /path/to/bin/pear_old

The 'pear' command is now at your service at /path/to/php5/bin/pear

** The 'pear' command is not currently in your PATH, so you need to
** use '/path/to/php5/bin/pear' until you have added
** '/path/to/php5/bin' to your PATH environment variable.

Run it without parameters to see the available actions, try 'pear list'
to see what packages are installed, or 'pear help' for help.

For more information about PEAR, see:

  http://pear.php.net/faq.php
  http://pear.php.net/manual/

Thanks for using go-pear!

という感じで全行程終了。とても簡単。さて、先ほど書き換えたところがどうなってるのか見てみる。viでphp.iniを開いてみると、include_pathのところがこんな感じで書き換わってる。

;***** Added by go-pear
include_path=".:/path/to/lib/php/"
;*****

pear/peclコマンドについても、下記の通りインストールされている。

# ls
go-pear.phar  pear  peardev  pecl  phar  phar.phar  php  php-cgi  php-config  phpize

これだけ。必要なら/usr/local/binあたりにシンボリックリンクを張ったりすればよし。

# pear
Commands:
build                  Build an Extension From C Source
bundle                 Unpacks a Pecl Package
channel-add            Add a Channel
channel-alias          Specify an alias to a channel name
channel-delete         Remove a Channel From the List
channel-discover       Initialize a Channel from its server
channel-info           Retrieve Information on a Channel
channel-login          Connects and authenticates to remote channel server
channel-logout         Logs out from the remote channel server
channel-update         Update an Existing Channel
clear-cache            Clear Web Services Cache
config-create          Create a Default configuration file
config-get             Show One Setting
config-help            Show Information About Setting
config-set             Change Setting
config-show            Show All Settings
convert                Convert a package.xml 1.0 to package.xml 2.0 format
cvsdiff                Run a "cvs diff" for all files in a package
cvstag                 Set CVS Release Tag
download               Download Package
download-all           Downloads each available package from the default channel
info                   Display information about a package
install                Install Package
list                   List Installed Packages In The Default Channel
list-all               List All Packages
list-channels          List Available Channels
list-files             List Files In Installed Package
list-upgrades          List Available Upgrades
login                  Connects and authenticates to remote server [Deprecated in favor of channel-login]
logout                 Logs out from the remote server [Deprecated in favor of channel-logout]
makerpm                Builds an RPM spec file from a PEAR package
package                Build Package
package-dependencies   Show package dependencies
package-validate       Validate Package Consistency
pickle                 Build PECL Package
remote-info            Information About Remote Packages
remote-list            List Remote Packages
run-scripts            Run Post-Install Scripts bundled with a package
run-tests              Run Regression Tests
search                 Search remote package database
shell-test             Shell Script Test
sign                   Sign a package distribution file
svntag                 Set SVN Release Tag
uninstall              Un-install Package
update-channels        Update the Channel List
upgrade                Upgrade Package
upgrade-all            Upgrade All Packages [Deprecated in favor of calling upgrade with no parameters]
Usage: pear [options] command [command-options] 
Type "pear help options" to list all options.
Type "pear help shortcuts" to list all command shortcuts.
Type "pear help " to get the help for the specified command.

0 件のコメント:

コメントを投稿