はじめに
composer installした際、composer.lockに記述されているバージョンとインストールされたライブラリのバージョンが違うというバグに遭遇したので、
その対処を書く。
対処
composer.lock
のライブラリの詳細が書かれている箇所で、commit referenceが
そのバージョンを指しているかを確認する。
例
自分のときはmockeryで起こったので、それを例として示す
composer.lock
.
.
.
{
"name": "mockery/mockery",
"version": "0.8.0",
"source": {
"type": "git",
"url": "https://github.com/padraic/mockery.git",
"reference": "10ef0f8a63392f244e5b19de261b6a08eb8e4109"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/padraic/mockery/zipball/10ef0f8a63392f244e5b19de261b6a08eb8e4109",
"reference": "10ef0f8a63392f244e5b19de261b6a08eb8e4109",
"shasum": ""
},
.
.
この例では、versionは 0.8.0
と書いてあるが、 sourceのreference, distの urlとreferenceは 0.7.2
を指しているので、 正しいcommitに書き換える。
composer.lock
.
.
.
{
"name": "mockery/mockery",
"version": "0.8.0",
"source": {
"type": "git",
"url": "https://github.com/padraic/mockery.git",
"reference": "35f0e18022f5538df9df8920a3d96c1761d63220"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/padraic/mockery/zipball/35f0e18022f5538df9df8920a3d96c1761d63220",
"reference": "35f0e18022f5538df9df8920a3d96c1761d63220",
"shasum": ""
},
.
.
これで一旦vender以下を削除してcomposer installすればOK。
確認の手順はgithubで管理されているライブラリであれば、
- ライブラリのページに移動 https://github.com/padraic/mockery.git
- releasesをクリック https://github.com/padraic/mockery/releases
- versionとそれが指すコミットが、 同一かどうかをチェックする
という感じ
終わりに
話としてはこれで終わりで、原因は多分 composer update
のバグだろうと思われるが、
最新(1.2.2)のバージョンでは発生していないのを確認したので、深く追求していない。
ちなみに composer update
を行ったバージョンは 1.2.0。
需要があるとは思わないけど、いい感じの記事も見つけられず地味にハマったので、
同じバグに遭遇した人にヒットしたらいいなと思います。
self-update
はこまめにやりましょう。
終わり。