肉とビールとパンケーキ by @sotarok

少し大人になった「肉とご飯と甘いもの」

PEAR で Unable to find the wrapper "channel" - did you forget to enable it when you configured PHP?

なんか出るよね最近。環境はDebian SqueezeのPHP 5.3.x。いや Lenny + dotdeb でも出る。(てか後述のとおり xdebug の設定だから環境依存じゃないかも。ちなみに PEAR は version 1.9.1)
検証してないけど channel:// を register してないのに使ってる気がする。

$ sudo pear upgrade-all

PHP Warning:  file_exists(): Unable to find the wrapper "channel" - did you forget to enable it when you configured PHP? in /usr/shar
e/php/PEAR/Downloader/Package.php on line 1517
PHP Stack trace:
PHP   1. {main}() /usr/share/php/pearcmd.php:0
PHP   2. PEAR_Command_Common->run($command = 'upgrade-all', $options = array (), $params = array ()) /usr/share/php/pearcmd.php:305
PHP   3. PEAR_Command_Install->doUpgradeAll($command = 'upgrade-all', $options = array (), $params = array ()) /usr/share/php/PEAR/Command/Common.php:271
PHP   4. PEAR_Command_Install->doInstall($command = 'upgrade-all', $options = array (), $params = array (0 => 'channel://components.ez.no/base', 1 => 'channel://components.ez.no/consoletools', 2 => 'channel://openpear.org/phpman', 3 => 'channel://pear.ethna.jp/smarty', 4 => 'channel://pear.ethna.jp/simpletest', 5 => 'channel://pear.ethna.jp/ethna', 6 => 'channel://pear.php.net/structures_graph', 7 => 'channel://pear.php.net/console_getopt', 8 => 'channel://pear.php.net/archive_tar', 9 => 'channel://pear.php.net/pear', 10 => 'channel://pear.php.net/xml_util', 11 => 'channel://pear.php.net/db', 12 => 'channel://pear.phpunit.de/dbunit', 13 => 'channel://pear.phpunit.de/file_iterator', 14 => 'channel://pear.phpunit.de/php_codecoverage', 15 => 'channel://pear.phpunit.de/phpunit', 16 => 'channel://pear.phpunit.de/phpunit_selenium', 17 => 'channel://pear.phpunit.de/php_timer', 18 => 'channel://pear.phpunit.de/text_template', 19 => 'channel://pear.phpunit.de/php_tokenstream', 20 => 'channel://pear.phpunit.de/phpunit_mockobject', 21 => 'channel://pear.symfony-project.com/yaml', 22 => 'channel://pear.twig-project.org/twig', 23 => 'channel://pecl.php.net/memcached', 24 => 'channel://pecl.php.net/xdebug')) /usr/share/php/PEAR/Command/Install.php:900
PHP   5. PEAR_Downloader->download($params = array (0 => 'channel://pear.php.net/structures_graph', 1 => 'channel://pear.php.net/cons
ole_getopt', 2 => 'channel://pear.phpunit.de/php_codecoverage', 3 => 'channel://pear.phpunit.de/phpunit', 4 => 'channel://pear.phpunit.de/phpunit_selenium', 5 => 'channel://pear.phpunit.de/phpunit_mockobject', 6 => 'channel://pear.twig-project.org/twig')) /usr/share/php/PEAR/Command/Install.php:661
PHP   6. PEAR_Downloader_Package->initialize($param = 'channel://pear.twig-project.org/twig') /usr/share/php/PEAR/Downloader.php:278
PHP   7. PEAR_Downloader_Package->_fromFile($param = 'channel://pear.twig-project.org/twig') /usr/share/php/PEAR/Downloader/Package.php:160
PHP   8. file_exists('channel://pear.twig-project.org/twig') /usr/share/php/PEAR/Downloader/Package.php:1517

.. 延々と

upgrade-all ok: channel://pear.php.net/Structures_Graph-1.0.4
upgrade-all ok: channel://pear.php.net/Console_Getopt-1.3.0
upgrade-all ok: channel://pear.phpunit.de/PHP_CodeCoverage-1.0.3
upgrade-all ok: channel://pear.phpunit.de/PHPUnit_Selenium-1.0.2
upgrade-all ok: channel://pear.phpunit.de/PHPUnit_MockObject-1.0.4
upgrade-all ok: channel://pear.twig-project.org/Twig-1.0.0RC1
upgrade-all ok: channel://pear.phpunit.de/PHPUnit-3.5.8

Warning: unlink(/tmp/glibctestQDzKXJ): No such file or directory in System.php on line 206
PHP Warning:  unlink(/tmp/glibctestQDzKXJ): No such file or directory in /usr/share/php/System.php on line 206
PHP Stack trace:
PHP   1. _PEAR_call_destructors() /usr/share/php/PEAR.php:0
PHP   2. call_user_func_array(array (0 => 'System', 1 => '_removeTmpFiles'), array ()) /usr/share/php/PEAR.php:774
PHP   3. System::_removeTmpFiles() /usr/share/php/PEAR.php:0
PHP   4. System::rm($args = array (0 => '-r', 1 => '/tmp/glibctestQDzKXJ')) /usr/share/php/System.php:440
PHP   5. unlink('/tmp/glibctestQDzKXJ') /usr/share/php/System.php:206

ああ、

1523                     $this->_explicitGroup = true;
1524                 }
1525             }
1526 
1527             if (@is_file($param)) {
1528                 $this->_type = 'local';
1529                 $options = $this->_downloader->getOptions();
1530                 if (isset($options['downloadonly'])) {
1531                     $pkg = &$this->getPackagefileObject($this->_config,
1532                         $this->_downloader->_debug);

@ 使ってるけど、僕の環境は xdebug.scream が On になってるから出るのね。PEARってほんとつくづく気持ち悪いよね。結構大きくなっててもう変えるのも直すのもだるいって話なんでしょうか(どこかで聞いたような話)。PEAR2に期待ってことですかね。。

エラーは出るけど @ つけて見えなくしてるから別にいいよねってかんじなんでしょうか。そんなやつは一度アレ *1を読みなおしてくると良いと思います。

追うの面倒だし、一応インストールはできてるから無視してる、が、気持ち悪い。

(とつぶやくだけのエントリーです。解決を期待した方すみません)

*1:え、この記事もう一昨年記事!?時間進みすぎじゃないすか?