どうも!名古屋生活満喫してます。
大須が好きで毎週行ってしまってます。
ただ、友達がいないので一人で大体いってますw
名古屋で遊んでくれる友達欲しい。。。
今回の記事は、
PHPerなら、とても助かっているであろうComposerについてです。
いろんなパッケージ使おうとrequireしてたら、なんか導入できない!
英語でわかわからんってなって諦めてました。
そろそろ次に進めなければと思い、私が問題解決を行った方法をまとめます。
composerコマンド
だけで、できる方法はありそうなので見つけたら教えてください!
私も見つけたら書きます\(^^)/
Composerとは…
公式サイト:https://getcomposer.org/
PHPで何かを作るときに、
既存のライブラリやパッケージを導入/更新するときに使います。
そのとき、依存管理もしてくれるツールです。
JavaScriptでいうnpm
的なやつだと思っています。
Composerの公式サイトに飛んだときに気づいたのですが、
ロゴのおじさん、いろんなカラーパターンがある!!!
リロードするたびに変化するのでぜひ遊んでみてください!
(多分5パターン)
本題に入ります。
例えばこんな例
hautelook/alice-bundleをdev環境に導入する時….
下記のエラーで導入できなかった例です。
$ composer require hautelook/alice-bundle --dev
Using version ^2.5 for hautelook/alice-bundle
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for hautelook/alice-bundle ^2.5 -> satisfiable by hautelook/alice-bundle[2.5.0].
- hautelook/alice-bundle 2.5.0 requires doctrine/orm ^2.5.11 -> satisfiable by doctrine/orm[2.5.x-dev, 2.6.x-dev, 2.7.x-dev, v2.5.11, v2.5.12, v2.5.13, v2.5.14, v2.6.0, v2.6.1, v2.6.2, v2.6.3] but these conflict with your requirements or minimum-stability.
Installation failed, reverting ./composer.json to its original content.
日本語でざっくり訳すと(わたしの解釈です)
hautelook/alice-bundleのv2.5.0(バージョン指定してないので最新版をインストールしようとします)は、
doctrine/ormのv2.5.0以上が必要です。
ということは、doctrine/orm
が今v2.5.0
以下なんです。
いざ、確認!!!
$ composer show doctrine/orm //導入中のpackage(doctrine/orm)詳細を表示
name : doctrine/orm
descrip. : Object-Relational-Mapper for PHP
keywords : database, orm
versions : * v2.4.7
...
エラー警告通りで、doctrine/orm
のバージョンは、2.5.0
以下の2.4.7
でした。
ということで、現状のパッケージ群のままでhautelook/alice-bundle
を導入する想定で問題解決していきたいと思います。
そんなとき使うのが、「packagist 」です!
packagistでは、composerで導入できるパッケージ群が管理されていて検索ができてバージョンごとの詳細も確認できます。
そこで導入したいパッケージ(hautelook/alice-bundle
)を検索して、左側のバージョン選択欄からバージョンを下げながら見ていって、
導入ができない原因のパッケージ(doctrine/orm
)のバージョン(現在v2.4.7
)が通る導入したいパッケージ(hautelook/alice-bundle
)のバージョンを見つけます。
\日本語下手でごめんなさい…/
この方法により
hautelook/alice-bundle
はv1.4.1
であれば、
doctrine/orm: ^2.4
→doctrine/orm
がv2.4
以上なので
導入できることがわかりました!
したがって、hautelook/alice-bundle
を最新版ではなくv1.4.1
をバージョン指定で導入してみます。
$ composer require hautelook/alice-bundle:1.4.1 --dev
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 3 installs, 0 updates, 0 removals
- Installing fzaninotto/faker (v1.8.0): Downloading (70%)
....
いけましたー!!!
$ composer show hautelook/alice-bundle
name : hautelook/alice-bundle
descrip. : Symfony2 Bundle to manage fixtures with Alice and Faker.
keywords : Fixture, alice, faker, orm, symfony
versions : * v1.4.1
...
便利なComposerコマンド一覧
参考:https://qiita.com/KEINOS/items/86a16b06af6e936a1841
インストール済みのパッケージ情報の一覧を取得
$ composer show -i
You are using the deprecated option "installed". Only installed packages are shown by default now. The --all option can be used to show all packages.
...
phpunit/phpunit 7.5.12 The PHP Unit Testing framework.
パッケージ名指定もできます。
$ composer show [vendor]/[package]
$ composer show phpunit/phpunit
name : phpunit/phpunit
descrip. : The PHP Unit Testing framework.
keywords : phpunit, testing, xunit
versions : * 7.5.12
type : library
license : BSD 3-Clause "New" or "Revised" License (BSD-3-Clause) (OSI approved) https://spdx.org/licenses/BSD-3-Clause.html#licenseText
source : [git] https://github.com/sebastianbergmann/phpunit.git 9ba59817745b0fe0c1a5a3032dfd4a6d2994ad1c
dist : [zip] https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9ba59817745b0fe0c1a5a3032dfd4a6d2994ad1c 9ba59817745b0fe0c1a5a3032dfd4a6d2994ad1c
path : /path/vendor/phpunit/phpunit
names : phpunit/phpunit
...
まとめ
英語のエラーって怖いって思いがちですが、
問題解決方法だったりヒントを表示してくれるだけでほんと助かるなーって気持ちに改めてなりました。