【php】 pear/Logをインストールした


会社のサーバに、pear/Logをインストールしてくれと言われた。
pearって何ですか?というくらい無知なので、さりとて「できません」とは言えないので、
まずは自分のバーチャルマシンでリハーサル。


早速pear/Logをインストールしてみる。

# pear install pear/Log
Package name 'pear/Log' not valid

このパッケージ名は有効ではないと言われた。
ちなみに、

# pear install Log
downloading Log-1.9.11.tgz ...
Starting to download Log-1.9.11.tgz (38,479 bytes)
......done: 38,479 bytes
No handlers for package.xml version 2.0

としてインストールしようとしても、PEAR本体のバージョンが1.4.0未満なために
「No handlers for package.xml version 2.0」というエラーが出る。

そこで、PEAR本体のバージョンを上げてやりたいのだが、PEAR-1.3.6以下のバージョンは、
一度1.3.6にしてやらないと、もっと上のバージョンにアップグレードすることができない。

というわけで

# pear upgrade PEAR-1.3.6

上記コマンドでアップグレードを試みるも、

Notice: Undefined index:  st in RPC.php on line 292
downloading PEAR-1.3.6.tgz ...
Starting to download PEAR-1.3.6.tgz (106,880 bytes)
...............done: 106,880 bytes
requires package `XML_RPC' >= 1.4.0
PEAR: Dependencies failed

というように、XML_RPCも一緒にアップグレードしてやらなければならない。
いちいち1つ1つアップグレードするのも手間なので、「-a」オプションをつけて
関連するパッケージもアップグレードしてやることができる。

# pear upgrade -a PEAR-1.3.6
downloading PEAR-1.3.6.tgz ...
Starting to download PEAR-1.3.6.tgz (106,880 bytes)
.........................done: 106,880 bytes

Notice: Undefined index:  st in RPC.php on line 292

Notice: Undefined index:  st in RPC.php on line 292

Notice: Undefined index:  st in RPC.php on line 292
downloading XML_RPC-1.5.1.tgz ...
Starting to download XML_RPC-1.5.1.tgz (32,215 bytes)
...done: 32,215 bytes
upgrade ok: XML_RPC 1.5.1
Optional dependencies:
'xmlrpc' PHP extension is recommended to utilize some features
upgrade ok: PEAR 1.3.6    ← アップグレードされた。

PEAR本体が一旦1.3.6になってくれたところで、
最新のPEARにする。

# pear upgrade PEAR
downloading PEAR-1.6.2.tgz ...
Starting to download PEAR-1.6.2.tgz (297,794 bytes)
.............................................................done: 297,794 bytes
requires package `Archive_Tar' >= 1.3.1
requires package `Structures_Graph' >= 1.0.2
PEAR: Dependencies failed

どうやら、また関連するパッケージをアップグレードしてやらなければならない。
再度「-a」オプションつきでアップグレードを試みる。

# pear upgrade -a PEAR
downloading PEAR-1.6.2.tgz ...
Starting to download PEAR-1.6.2.tgz (297,794 bytes)
.............................................................done: 297,794 bytes
Release for 'pear'      Release for 'pear' dependency
dependency              'PEAR_Frontend_Gtk' has state 'beta', requires
'PEAR_Frontend_Web' has 'stable'
state 'beta', requires
'stable'
upgrade failed

さらに、PEAR_Frontend_Webもアップグレードしましょうと怒られる。
しかしそんなパッケージは入っていない。確認してみる。

# pear list
Installed packages:
===================
Package        Version State
Archive_Tar    1.1     stable
Console_Getopt 1.2     stable
DB             1.6.2   stable
HTTP           1.2.2   stable
Mail           1.1.3   stable
Net_SMTP       1.2.3   stable
Net_Socket     1.0.1   stable
PEAR           1.3.6   stable
XML_Parser     1.0.1   stable
XML_RPC        1.5.1   stable

では個別に入れてやればよいのかといえば、さにあらず。

# pear install PEAR_Frontend_Web
No release with state equal to: 'stable' found for 'PEAR_Frontend_Web'

というわけで、PEAR本体のアップグレードを「-a」オプションなしで試みる。

# pear upgrade PEAR
downloading PEAR-1.6.2.tgz ...
Starting to download PEAR-1.6.2.tgz (297,794 bytes)
.........................................done: 297,794 bytes
requires package `Archive_Tar' >= 1.3.1
requires package `Structures_Graph' >= 1.0.2
PEAR: Dependencies failed

どうやら、Archive_Tar のバージョンが古いのと、Structures_Graph が
インストールされていないのがそもそもの原因のようだ。

というわけで、まずはArchive_Tar をアップグレードする。

# pear upgrade Archive_Tar
downloading Archive_Tar-1.3.2.tgz ...
Starting to download Archive_Tar-1.3.2.tgz (17,150 bytes)
......done: 17,150 bytes
upgrade ok: Archive_Tar 1.3.2

すんなりアップデートできた。では次にStructures_Graphのインストールだ。

# pear install Structures_Graph
downloading Structures_Graph-1.0.2.tgz ...
Starting to download Structures_Graph-1.0.2.tgz (30,947 bytes)
.........done: 30,947 bytes
install ok: Structures_Graph 1.0.2

こちらもすんなりインストールできた。気を取り直してPEAR本体のアップグレードを行う。

# pear upgrade PEAR
downloading PEAR-1.6.2.tgz ...
Starting to download PEAR-1.6.2.tgz (297,794 bytes)
.............................................................done: 297,794 bytes
Optional dependencies:
package `PEAR_Frontend_Web' version >= 0.5.0 is recommended to utilize some features.
package `PEAR_Frontend_Gtk' version >= 0.4.0 is recommended to utilize some features.
upgrade ok: PEAR 1.6.2

PEAR本体が最新になった。ここでようやく、当初の目的である、pear/Logのインストールに進むことができる。

# pear install pear/Log
WARNING: channel "pear.php.net" has updated its protocols, use "channel-update pear.php.net" to update
WARNING: "pear/DB" is deprecated in favor of "pear/MDB2"
Did not download optional dependencies: pear/MDB2, use --alldeps to download automatically
pear/Log can optionally use package "pear/MDB2" (version >= 2.0.0RC1)
pear/Log can optionally use PHP extension "sqlite"
downloading Log-1.9.11.tgz ...
Starting to download Log-1.9.11.tgz (38,479 bytes)
..........done: 38,479 bytes
install ok: channel://pear.php.net/Log-1.9.11

# pear list
Installed packages, channel pear.php.net:
=========================================
Package          Version State
Archive_Tar      1.3.2   stable
Console_Getopt   1.2     stable
DB               1.6.2   stable
HTTP             1.2.2   stable
Log       &
nbsp;      1.9.11  stable ← インストールされた
Mail             1.1.3   stable
Net_SMTP         1.2.3   stable
Net_Socket       1.0.1   stable
PEAR             1.6.2   stable
Structures_Graph 1.0.2   stable
XML_Parser       1.0.1   stable
XML_RPC          1.5.1   stable

ここまでで、pear/Logのインストール作業はおしまい。なお、
WARNING: channel "pear.php.net" has updated its protocols, use "channel-update pear.php.net" to update
というエラーメッセージが出力されているが、
通常のpearコマンド実行時に出力されていなければ問題ないと思われる。
どうしても気持ち悪いのなら

# pear channel-update pear.php.net
Updating channel "pear.php.net"
Update of Channel "pear.php.net" succeeded

として、チャンネルアップデートをかけておくのもよいかもです。
(やった結果に自信もてないので、本番サーバではチャンネルアップデートしませんでした)


ここまでのおさらい

1) PEAR本体を2段構えでアップグレードする。

1-1 PEAR-1.3.6にアップグレードする
    # pear upgrade -a PEAR-1.3.6

1-2 PEAR最新版に必要な、Archive_Tarのアップグレードを行う
    # pear upgrade Archive_Tar

1-3 PEAR最新版に必要な、Structures_Graphをインストールする
    # pear install Structures_Graph

1-4 PEAR本体をアップグレードする
    # pear upgrade PEAR

2) pear/Logをインストールする

    # pear install pear/Log

以上、終了。