サーバー

Ubuntu 12.04 PHPUnitのインストール

Windows 7 に VirtualBoxを利用してUbuntu Server 12.04 をセットアップ、Apache2の Virtual Hostの設定や ProFTPD のインストールを終え、開発環境ももう少しで整います。で、PHPUnitをインストールしようとしたところうまくいかなかったので、その備忘録です。

最初「PHPUnit インストール方法(http://d.hatena.ne.jp/tarurut/20110125/1295906030)」というページを参考にして、「#apt-get install phpunit」でインストール「$phpunit –version」で動作確認したら

$ phpunit --version
PHP Warning: require_once(PHP/CodeCoverage/Filter.php): failed to open stream: No such file or directory /usr/share/php:/usr/share/pear') in /usr/bin/phpunit on line 38

のように表示されて動作しなかった。そこで「#apt-get remove phpunit」として削除、当該ページにリストされているpearコマンドを使った以下の入力を試した。

#pear upgrade-all
#pear channel-discover pear.phpunit.de
#pear channel-discover pear.symfony-project.com
#pear channel-discover components.ez.no
#pear install --alldeps phpunit/PHPUnit

で、最後の行のコマンドを実行したところ、しばらく何の表示もなかったのでCtrl-Cで終了し、今度は次のようにしてインストールした。

#pear install -a pear.phpunit.de/PHPUnit

ここで何故か「#apt-get install phpunit」を実行していたのですが、それは伏せておきます。で、「#phpunit –version」としたところ以下のようなメッセージが表示された。

PHP Fatal error: Call to undefined method PHP_CodeCoverate_filter::getInstance() in /usr/bin/phpunit on line 39

どうしたものかとググっていると以下のページを見つけたので、さっそく試してみた。

Call to undefined method PHP_CodeCoverage_Filter::getInstance()
http://stackoverflow.com/questions/9186000/call-to-undefined-method-php-codecoverage-filtergetinstance

すると「#pear install –alldeps phpunit/PHPUnit」を入力したところで次のメッセージが。

#pear install --alldeps phpunit/PHPUnit
Unknown remote channel: pear.symfony.com
phpunit/PHPUnit requires package "channel://pear.symfony.com/Yaml" (version >= 2.1.0)
No valid packages found
install failed

そこで

#pear channel-discover pear.symfony.com

として

#pear install --alldeps phpunit/PHPUnit

としたところ、良い雰囲気にインストールが完了。

#phpunit --version
PHPunit 3.7.8 by Sebastian Bergmann.

となったのであります。もう一度コンソールに表示されたメッセージを眺めてみると、実は「#pear install -a pear.phpunit.de/PHPUnit」を実行したときに「Unknown remote channel: pear.symphony.com」とメッセージが表示されていたのでした。

お粗末さまでした。

ところでpearのインストールについて

$ sudo apt-get install php-pear

pearのアップデートは

$ sudo pear upgrade PEAR

(130724)

実は簡単にインストールできた

Ubuntu 12.04 サーバーのセットアップで再度インストール操作したが、実はPHPUnitのサイトのインストール操作通りで簡単にできた。pear インストール後

$ sudo pear config-set auto_discover 1
$ sudo pear install pear.phpunit.de/PHPUnit

ただし Stable の PHPUnit 3.7.22 がインストールされた。3.8をインストールする場合は Composer を使うのかな?

アップグレードの確認は

以前にインストールしたサーバーで

$ sudo pear list-upgrades

としたところ

Channel pear.php.net: No upgrades available
pear.phpunit.de Available Upgrades (stable):
============================================
Channel Package Local Remote Size
pear.phpunit.de PHPUnit 3.7.20 (stable) 3.7.22 (stable) 114kB
pear.phpunit.de PHP_CodeCoverage 1.2.10 (stable) 1.2.12 (stable) 156kB
pear.phpunit.de PHP_Invoker 1.1.2 (stable) 1.1.3 (stable) 3.7kB
pear.symfony.com Available Upgrades (stable):
=============================================
Channel Package Local Remote Size
pear.symfony.com Yaml 2.2.1 (stable) 2.3.2 (stable) 40kB

と表示された。で、アップグレードは、

$ sudo pear upgrade --alldeps phpunit/phpunit

したところ

phpunit/PHP_CodeCoverage can optionally use PHP extension "xdebug" (version >= 2.0.5)
downloading PHPUnit-3.7.22.tgz ...
Starting to download PHPUnit-3.7.22.tgz (116,042 bytes)
.........................done: 116,042 bytes
downloading PHP_CodeCoverage-1.2.12.tgz ...
Starting to download PHP_CodeCoverage-1.2.12.tgz (158,796 bytes)
...done: 158,796 bytes
downloading Yaml-2.3.2.tgz ...
Starting to download Yaml-2.3.2.tgz (40,003 bytes)
...done: 40,003 bytes
downloading PHP_Invoker-1.1.3.tgz ...
Starting to download PHP_Invoker-1.1.3.tgz (3,734 bytes)
...done: 3,734 bytes
upgrade ok: channel://pear.phpunit.de/PHP_CodeCoverage-1.2.12
upgrade ok: channel://pear.symfony.com/Yaml-2.3.2
upgrade ok: channel://pear.phpunit.de/PHP_Invoker-1.1.3
upgrade ok: channel://pear.phpunit.de/PHPUnit-3.7.22

となり、アップグレード終了。