Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

pearコマンドが使えなくなったらどうするか

PEARサイトがリニューアルしたらしい - Do You PHP はてなでも書きましたが、PEAR1.4.0より前のバージョンを使っている場合、アップグレードする必要があります。

$ sudo pear upgrade --force http://pear.php.net/get/Archive_Tar http://pear.php.net/get/XML_Parser http://pear.php.net/get/Console_Getopt
$ sudo pear upgrade --force http://pear.php.net/get/PEAR-1.4.3.tar
$ sudo pear upgrade PEAR

。。。なんですが、「No handlers for package.xml version 2.0 ...」なエラーが出てアップグレードできない場合があります(というか、ハマりました)。ここで、1つずつインストールしようと

$ sudo pear upgrade --force http://pear.php.net/get/Archive_Tar

とかやってしまうと、

$ sudo pear upgrade --force http://pear.php.net/get/XML_Parser

Warning: main(Archive/Tar.php): failed to open stream: No such file or directory in Common.php on line 23

Fatal error: main(): Failed opening required 'Archive/Tar.php' (include_path='/usr/local/lib/php') in /usr/local/lib/php/PEAR/Common.php on line 23
$ 

みたいに悲しい目に遭ってしまいます(というか、やっちゃいました)。こうなると、pearコマンド自体が使えない状態になってしまいます。

で、どうするか?






2分ほど考えましたが、PHP4.4.2にバンドルされているPEARが一部壊れている件 - Do You PHP はてなと同様にgo-pearを使ってPEAR・Archive_Tar・Console_Getoptをまとめてインストールし直すのが簡単で良い気がします(しましたw)。

ということで、

$ wget --proxy=off -O - -q http://pear.php.net/go-pear | sudo php
Welcome to go-pear!

Go-pear will install the 'pear' command and all the files needed by
it.  This command is your tool for PEAR installation and maintenance.
                         :
$ pear list
Installed packages, channel pear.php.net:
=========================================
Package              Version State
Archive_Tar          1.3.2   stable
Console_Getopt       1.2.3   stable
HTML_Template_IT     1.1     stable
Net_UserAgent_Detect 2.0.1   stable
PEAR                 1.6.2   stable
                       :

でインストール完了。無事にupgradeもできましたとさ。

あー。なにやってんだかorz



ちなみに、以前使われていて有効期限切れとなってしまったドメイン「go-pear.org」は、その後売りに出されたようですw

追記(2009/11/05 10:12)

追記時点では、アップグレードする必要があるパッケージがバージョンアップしているので、各パッケージのバージョン番号を明示する必要があります。また、PEAR-1.4.3にアップグレードした後、PEAR-1.4.11にアップグレードする必要があります。

# pear upgrade --force http://pear.php.net/get/PEAR-1.3.6.tgz http://pear.php.net/get/Archive_Tar-1.3.1 http://pear.php.net/get/Console_Getopt-1.2
# pear upgrade http://pear.php.net/get/PEAR-1.4.3
# pear upgrade --force PEAR-1.4.11
# pear upgrade PEAR