会社のサーバに、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
以上、終了。