一般ユーザで pear をローカルインストール

個人的に root になれない状況があまり無いのであまりこういった状況は無いのですが。。。

サーバに pear はインストールされているけど root になれない場合に使いたいモジュールをインストールする方法です。

/home/hoge/pear に pear::pager をインストールする場合の例です。

インストール前の状態

$ pear list
Installed packages, channel pear.php.net:
=========================================
Package        Version State
Archive_Tar    1.3.1   stable
Console_Getopt 1.2     stable
PEAR           1.4.9   stable
XML_RPC        1.5.0   stable

pear::pager の install

$ mkdir /home/hoge/pear
$ cd /home/hoge/pear
$ pear config-create /home/hoge .pearrc
Configuration (channel pear.php.net):
=====================================
Auto-discover new Channels     auto_discover    <not set>
Default Channel                default_channel  pear.php.net
HTTP Proxy Server Address      http_proxy       <not set>
PEAR server [DEPRECATED]       master_server    <not set>
Default Channel Mirror         preferred_mirror <not set>
Remote Configuration File      remote_config    <not set>
PEAR executables directory     bin_dir          /home/hoge/pear
PEAR documentation directory   doc_dir          /home/hoge/pear/docs
PHP extension directory        ext_dir          /home/hoge/pear/ext
PEAR directory                 php_dir          /home/hoge/pear/php
PEAR Installer cache directory cache_dir        /home/hoge/pear/cache
PEAR data directory            data_dir         /home/hoge/pear/data
PHP CLI/CGI binary             php_bin          <not set>
PEAR test directory            test_dir         /home/hoge/pear/tests
Cache TimeToLive               cache_ttl        <not set>
Preferred Package State        preferred_state  <not set>
Unix file mask                 umask            <not set>
Debug Log Level                verbose          <not set>
PEAR password (for             password         <not set>
maintainers)
Signature Handling Program     sig_bin          <not set>
Signature Key Directory        sig_keydir       <not set>
Signature Key Id               sig_keyid        <not set>
Package Signature Type         sig_type         <not set>
PEAR username (for             username         <not set>
maintainers)
User Configuration File        Filename         /home/hoge/pear/.pearrc
System Configuration File      Filename         #no#system#config#
Successfully created default configuration file "/home/hoge/pear/.pearrc"

設定の確認

$ pear -c .pearrc config-show

作成した pear 環境のインストール状況を確認。

$ pear -c .pearrc list
(no packages installed from channel pear.php.net)

pear::pager のインストール

$ pear -c .pearrc install pager
downloading Pager-2.4.9.tgz ...
Starting to download Pager-2.4.9.tgz (36,055 bytes)
..........done: 36,055 bytes
install ok: channel://pear.php.net/Pager-2.4.9

インストールできたか確認

$ pear -c .pearrc list
Installed packages, channel pear.php.net:
=========================================
Package Version State
Pager   2.4.9   stable

インストールした pear::pager を使う方法

php の include_path に /home/hoge/pear/php を追加する。
ini_set('include_path', '/home/hoge/pear/php'.PATH_SEPARATOR.ini_get('include_path'));

そして、インストール先を apache が参照できるよう chmod などする。

$ chmod -R g+rx /home/hoge
$ chgrp -R apache /home/hoge