ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

vagrant + cakephpでphpunitをインストールしようしたらエラーになってワロタ

スポンサードリンク

http://www.flickr.com/photos/63775128@N00/2984381240
photo by koyhoge


もぉーーーーーーーーーーーーーー


どんなけエラー出すんですか!? ヾ(*`Д´*)ノ""プンプン


phpでテスト環境が欲しくて、phpunitをインストールしようとしました。


しかし、pearではインストールすることができなかったので、半自動でインストールしました。


その時のことをメモ

環境


cakephp配置ディレクトについて、実データはホスト側が持っていて、ゲストからnfsを使って共有されている環境になっています。


また、この投稿の作業については、ゲストサーバで行っています。(途中、ホスト側で行う作業もあるので注意)

pearでインストール


pearをまずインストールしました。


方法はまた別の記事で投稿しようと思いますが、結局pearを使ってインストールができなかった。


インストールしたけど、tab補完されているコマンドがあるに実行すると”存在しません”ってエラーがでたりと、その他色々面倒なことばっかり(´・ω・)


恐らく途中の設定だったり、何か勘違いしている点があると思うので、pearでのインストールは今回断念。

半自動でのインストール


流れとして、

  • 手動でphpunitをダウンロード
  • cakephpを使って、依存関係を確認しながら、phpunitに関連するパッケージをインストール


まずはphpunitをダウンロード

$ cd /tmp/
$ git clone https://github.com/dereuromark/cakephp-phpunit


んで、cakephpのディレクトリにある、"~/plugins"ディレクトリに、ダウンロードしたパッケージを配置します。

# まずはディレクトリを作成
$ mkdir ~/plugins/Phpunit

# ダウンロードしたパッケージをコピー
$ cp -rf cake-phpunit/* ~/plugins/Phpunit


そして、コンソールからcakephpをコマンドを使って、関連パッケージをインストール

$ cd ~/cakephp/app/
$ Console/cake Phpunit.Phpunit install

Welcome to CakePHP v2.5.7 Console
---------------------------------------------------------------
App : app
Path: ~/app/
---------------------------------------------------------------
Installing PHPUnit 3.7 ...
1. /app/Vendor/
2. /vendors/
Select VENDOR path to install into (q/1/2)
[q] >


コマンドを実行すると、選択肢が表示されます。

  1. /app/Vendor/
  2. /vendors/


どのディレクトリにインストールしますか? の、話しですが、私は「2」を選択しました。


理由としては、なんか、バージョン管理で含めたくないモジュールは"/vendors"に入れてほしいとのこと。なので、そこを選択しました。(あってるのかねぇ? )


とにかく、番号を選択したら、インストールが開始します。


しかし、問屋はおろしてはくれなかった。。。すぐさまエラーが発生しました。

エラーその1
Error: Xml cannot be read.


ん!? よくわかんない(´・ω・)


実はこれ、色々調べても解決することはありませんでした。


当時、コマンドを実行したときはモバイルルーターを使用していたので、恐らくネット回線が原因では? と、考えています。


なので、上記エラーがでたとしても根気強くもう一度コマンドを実行してください。

エラーその2
Downloading PHPUnit 3.7.32 .. Download finished.
Extracting ..tar: package.xml: uid 1000 gid 1000 に所有者を変更できません: 許可されていない操作です
tar: PHPUnit-3.7.32/PHPUnit/Extensions/PhptTestCase/Logger.php: uid 1000 gid 1000 に所有者を変更できません: 許可されていない操作です
tar: PHPUnit-3.7.32/PHPUnit/Extensions/GroupTestSuite.php: uid 1000 gid 1000 に所有者を変更できません: 許可されていない操作です
tar: PHPUnit-3.7.32/PHPUnit/Extensions/PhptTestCase.php: uid 1000 gid 1000 に所有者を変更できません: 許可されていない操作です
tar: PHPUnit-3.7.32/PHPUnit/Extensions/PhptTestSuite.php: uid 1000 gid 1000 に所有者を変更できません: 許可されていない操作です
tar: PHPUnit-3.7.32/PHPUnit/Extensions/RepeatedTest.php: uid 1000 gid 1000 に所有者を変更できません: 許可されていない操作です
tar: PHPUnit-3.7.32/PHPUnit/Extensions/TestDecorator.php: uid 1000 gid 1000 に所有者を変更できません: 許可されていない操作です
tar: PHPUnit-3.7.32/PHPUnit/Extensions/TicketListener.php: uid 1000 gid 1000 に所有者を変更できません: 許可されていない操作です
tar: PHPUnit-3.7.32/PHPUnit/Framework/Assert/Functions.php: uid 1000 gid 1000 に所有者を変更できません: 許可されていない操作です
tar: PHPUnit-3.7.32/PHPUnit/Framework/Comparator/Array.php: uid 1000 gid 1000 に所有者を変更できません: 許可されていない操作です
tar: PHPUnit-3.7.32/PHPUnit/Framework/Comparator/DOMDocument.php: uid 1000 gid 1000 に所有者を変更できません: 許可されていない操作です
tar: PHPUnit-3.7.32/PHPUnit/Framework/Comparator/Double.php: uid 1000 gid 1000 に所有者を変更できません: 許可されていない操作です
tar: PHPUnit-3.7.32/PHPUnit/Framework/Comparator/Exception.php: uid 1000 gid 1000 に所有者を変更できません: 許可されていない操作です
tar: PHPUnit-3.7.32/PHPUnit/Framework/Comparator/MockObject.php: uid 1000 gid 1000 に所有者を変更できません: 許可されていない操作です
tar: PHPUnit-3.7.32/PHPUnit/Framework/Comparator/Numeric.php: uid 1000 gid 1000 に所有者を変更できません: 許可されていない操作です
tar: PHPUnit-3.7.32/PHPUnit/Framework/Comparator/Object.php: uid 1000 gid 1000 に所有者を変更できません: 許可されていない操作です
tar: PHPUnit-3.7.32/PHPUnit/Framework/Comparator/Resource.php: uid 1000 gid 1000 に所有者を変更できません: 許可されていない操作です
tar: PHPUnit-3.7.32/PHPUnit/Framework/Comparator/Scalar.php: uid 1000 gid 1000 に所有者を変更できません: 許可されていない操作です
tar: PHPUnit-3.7.32/PHPUnit/Framework/Comparator/SplObjectStorage.php: uid 1000 gid 1000 に所有者を変更できません: 許可されていない操作です
tar: PHPUnit-3.7.32/PHPUnit/Framework/Comparator/Type.php: uid 1000 gid 1000 に所有者を変更できません: 許可されていない操作です
〜 多すぎるので省略 〜

おぉおおおおおおおおおおおおおおお!!!? (°Д°;


なんだぁこりゃ〜!??


エラー多すぎ。


でも、多分なんとなくエラー内容は理解しました。オーナーを変更することができないから困っているエラーですね。


ただ、いちいち所有者とか設定変更するのも面倒なので、ホスト側からコマンドを実行したらできました。

  • ホスト側から共有フォルダにあるcakephpのコマンドを実行
$ cd ~/cakephp/app/
$ Console/cake Phpunit.Phpunit install

〜省略〜
---------------------------------------------------------------
Downloading PHP CodeCoverage 1.2.16 .. Download finished.
Extracting ..Extracting done.
Adding to Vendors ..Adding done.
---------------------------------------------------------------
〜省略〜


インストールが無事に完了したら、ブラウザから確認しましょう。赤い帯みたいな色棒が表示されていなければ完璧です!


よかった。。。。本当によかった。。。


ともあれ、インストールすることができました。