ある日のこと。
Composerを使いSmartyを入れようと思ったのですが、何度やってもメッチャクチャ時間がかかった挙句エラーになり、Smartyを入れることができませんでした。
共有フォルダー機能を使うと、Mac上のフォルダーにゲストOSからアクセスができるので、
- ソースはMacで書く
- サーバはぶっ壊してもいいお試しで色々入れたりできるようにゲストOS
といった時に便利なのです。
しかし、この時はまだあんな恐ろしい罠が待ち構えているとは…誰一人知らなかったのだ… (大袈裟。)
##環境
- MacBook Pro Retina (late 2010) OS X 10.9
- VirtualBox 4.3.4
- CentOS 6.5 i386
- PHP 5.5.7
- Composer 43fde9177ededc627d3f6392f996b093410e1036 2013-12-05 15:29:59
- Subversion 1.7.4
##再現手順
- Mac上のフォルダを適当に共有する
- 共有したフォルダをCentOS上にマウント
- マウントしたフォルダ上で
composer install
{
"require": {
"smarty/smarty": "3.*"
}
}
##実行してみると…
[root@centos application]# date
2014年 1月 1日 水曜日 12:25:26 JST
[root@centos application]# composer -vvv install
Reading ./composer.json
Executing command (CWD): git describe --exact-match --tags
Executing command (CWD): git branch --no-color --no-abbrev -v
Executing command (CWD): hg branch
Loading composer repositories with package information
Downloading https://packagist.org/packages.json
Writing /root/.composer/cache/repo/https---packagist.org/packages.json into cache
Reading /root/.composer/cache/repo/https---packagist.org/p-provider-active.json from cache
Reading /root/.composer/cache/repo/https---packagist.org/p-provider-archived.json from cache
Reading /root/.composer/cache/repo/https---packagist.org/p-provider-latest.json from cache
Reading /root/.composer/cache/repo/https---packagist.org/p-provider-stale.json from cache
Installing dependencies (including require-dev)
Reading /root/.composer/cache/repo/https---packagist.org/provider-smarty$smarty.json from cache
- Installing smarty/smarty (v3.1.16)
Checking out /tags/v3.1.16/@4802
A vendor/smarty/smarty/composer.json
A vendor/smarty/smarty/distribution
A vendor/smarty/smarty/distribution/change_log.txt
A vendor/smarty/smarty/distribution/demo
A vendor/smarty/smarty/distribution/demo/templates_c
(中略)
[RuntimeException]
Package could not be downloaded, A vendor/smarty/smarty/composer.json
A vendor/smarty/smarty/distribution
A vendor/smarty/smarty/distribution/change_log.txt
A vendor/smarty/smarty/distribution/demo
A vendor/smarty/smarty/distribution/demo/templates_c
(中略)
Exception trace:
() at phar:///usr/local/bin/composer.phar/src/Composer/Downloader/SvnDownloader.php:84
Composer\Downloader\SvnDownloader->execute() at phar:///usr/local/bin/composer.phar/src/Composer/Downloader/SvnDownloader.php:33
Composer\Downloader\SvnDownloader->doDownload() at phar:///usr/local/bin/composer.phar/src/Composer/Downloader/VcsDownloader.php:59
Composer\Downloader\VcsDownloader->download() at phar:///usr/local/bin/composer.phar/src/Composer/Downloader/DownloadManager.php:180
Composer\Downloader\DownloadManager->download() at phar:///usr/local/bin/composer.phar/src/Composer/Installer/LibraryInstaller.php:155
Composer\Installer\LibraryInstaller->installCode() at phar:///usr/local/bin/composer.phar/src/Composer/Installer/LibraryInstaller.php:86
Composer\Installer\LibraryInstaller->install() at phar:///usr/local/bin/composer.phar/src/Composer/Installer/InstallationManager.php:153
Composer\Installer\InstallationManager->install() at phar:///usr/local/bin/composer.phar/src/Composer/Installer/InstallationManager.php:140
Composer\Installer\InstallationManager->execute() at phar:///usr/local/bin/composer.phar/src/Composer/Installer.php:510
Composer\Installer->doInstall() at phar:///usr/local/bin/composer.phar/src/Composer/Installer.php:210
Composer\Installer->run() at phar:///usr/local/bin/composer.phar/src/Composer/Command/InstallCommand.php:110
Composer\Command\InstallCommand->execute() at phar:///usr/local/bin/composer.phar/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:244
Symfony\Component\Console\Command\Command->run() at phar:///usr/local/bin/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:897
Symfony\Component\Console\Application->doRunCommand() at phar:///usr/local/bin/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:191
Symfony\Component\Console\Application->doRun() at phar:///usr/local/bin/composer.phar/src/Composer/Console/Application.php:117
Composer\Console\Application->doRun() at phar:///usr/local/bin/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:121
Symfony\Component\Console\Application->run() at phar:///usr/local/bin/composer.phar/src/Composer/Console/Application.php:83
Composer\Console\Application->run() at phar:///usr/local/bin/composer.phar/bin/composer:43
require() at /usr/local/bin/composer.phar:15
install [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--no-plugins] [--no-custom-installers] [--no-scripts] [--no-progress] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader]
[root@centos application]# date
2014年 1月 1日 水曜日 12:27:08 JST
あ、あんまり時間かかってない…
SSDすげーな。。。
会社のHDDなパソコンでやった時は時間計ってないけどもっと時間かかったぞ…。
というわけで、svn checkout
の途中でエラーになってしまいます。
##で、困ったときの…?
たすけて!すたっくおーばーふろーせんせー!
[RuntimeException] Package could not be downloaded for smarty · Issue #2352 · composer/composer · GitHub
I found the reason. Filesystem was mounted via vboxsf and svn checkout fails each time. After i moved all data to local disk it was fixed.
ありました、ありましたよ。
まさにComposer & Smarty & VirtualBoxなときの回答が。
さすがすたっくおーばーふろーせんせー。わかってらっしゃる。
##というわけで。
- 上記のとおり、VirtualBoxの共有フォルダー以外のフォルダーで
composer install
を実行し、それを煮るなり焼くなりする。 (っんぁ・・・・?!!!?中はらめっ!!!!!らめなのぉお …おっと誰か来たようだ) - ホストオンリーアダプターを作ってsambaでCentOSの/をpublicにし、smb経由でソースをぶちこむ。
あたりで幸せになれるんじゃないでしょうか。
ボクは1つ目の方法にしました。