今日は1日 Composer と戦っていた...!
学んだことを簡単にまとめておこうと思う.基本的に困ったら Documentation を読むとちゃんと書いてあるなと感じた.
./composer.phar self-update
self-update
で Composer を更新すると,デフォルトの挙動だと GitHub から最新のコミットを取得する仕様になっていた.ドキュメントには latest version
と書いてあって,最新のリリースバージョンなのかなーと思ったけど,違った.
常に最新のコミットから取得すると,もしバグがあった場合に踏む確率も高いし,Composer のリポジトリを読んでたら,普通にコミッターが master に直接 push してることもあるようで,少し不安に感じた.せめて Stable バージョンがあったら良いんだけど,未だに alpha
と beta
なの!!!
To update Composer itself to the latest version, just run the self-update command. It will replace your composer.phar with the latest version.
バージョンを固定する
回避策はあって self-update
の引数で specific release
を指定することができる.GitHub のリリースバージョンを見て実行する.以下のサンプルでは 1.0.0-alpha11
を指定している.
➜ ./composer.phar self-update 1.0.0-alpha11 Updating to version 1.0.0-alpha11. Downloading: 100% Use composer self-update --rollback to return to version 3933a7f404cfa197c5457f49b0665eae40ddedd9 ➜ ./composer.phar -V Composer version 1.0.0-alpha11 2015-11-14 16:21:07
alpha and beta
リリースサイクルが謎だった.Composer ってもう枯れてるのかと思ったけど,最新バージョンで alpha
なことに驚いたし,先週にとうとう alpha
を卒業して beta1
になっていた.今さら β なの?w
- 1.0.0-beta1
- 1.0.0-alpha11
- 1.0.0-alpha10
- ...
- 1.0.0-alpha1
beta1 でハマった
今日 self-update
をしたら,バイナリとしては beta1
+ α の状態になった.
➜ ./composer.phar self-update Updating to version 3933a7f404cfa197c5457f49b0665eae40ddedd9. Downloading: 100% Use composer self-update --rollback to return to version 9fb2d4f2d642a0749decb41bc2fe4be2bf8bef7a ➜ ./composer.phar -V Composer version 1.0-dev (3933a7f404cfa197c5457f49b0665eae40ddedd9) 2016-03-07 01:50:41
再現性は低いけど,数回以下のエラーが発生した.ようするに Smarty を GoogleCode Subversion から取得しようとしているけど,http アクセスだからダメだよ!ということだった.
➜ ./composer.phar install Loading composer repositories with package information Installing dependencies (including require-dev) from lock file (中略) - Installing smarty/smarty (v3.1.17) Checking out /tags/v3.1.17/@4818 [RuntimeException] Package could not be downloaded, Your configuration does not allow connection to http://smarty-php.googlecode.com/svn//tags/v3.1.17/@4818. See https://getcomposer.org/doc/06-config.md#secure-http for details.
ちなみに Smarty も Packagist から取得できるため,GoogleCode を参照するのは間違っていて,clear-cache
を1度流したら発生しなくなった.
➜ ./composer.phar clear-cache
新機能 secure-http
上記のエラーが発生して,http アクセスをする必要がある場合,secure-http
オプションを設定する必要がある.デフォルトだと true
になっている.そこを false
に.
"config": { "secure-http": false }
よくよく調べていると,この secure-http
は beta1
で入った新機能だった.意図せずに alpha
から beta
に更新されて,さらに composer.json
に修正が必要って言われるのは微妙だよなー.
Defaults to true. If set to true only HTTPS URLs are allowed to be downloaded via Composer. If you really absolutely need HTTP access to something then you can disable it, but using Let's Encrypt to get a free SSL certificate is generally a better alternative.
ちなみに secure-http
を実装した PR は以下にある.
脱 PEAR
今日 composer.json
をリファクタリングしていて,一部 PEAR に依存している部分でエラーになったりしていた.具体的に言うと HTTP_Request2
で,ここは Packagist に切り替えることにした.まさに同じ議論がされている Issue を発見した.
many pear packages are also registered on Packagist because their maintainers have made them compatible with composer, and they should be used from there instead when using composer (this is the case for the HTTP_Request2 package btw: https://packagist.org/packages/pear/http_request2)
over 60 days
Composer を実行すると更新を促す Warning が出ることがあって,調べていると over 30 days
となっている記事も多いけど,自分の環境だと over 60 days
だった.このあたりを追っていたら,該当するコミットを発見したんだけど,PR は出てなくて,直接 master に push されていた.コミュニティの方針次第なんだろうけど,OSS として少し不安に感じた.
➜ ./composer.phar -V Warning: This development build of composer is over 60 days old. It is recommended to update it by running "./composer.phar self-update" to get the latest version. Composer version 1.0-dev (9fb2d4f2d642a0749decb41bc2fe4be2bf8bef7a) 2015-06-05 13:07:39
まとめ
引き続き Composer 関連の技術的負債を解消できるように頑張る!
Composer は完全に初心者だったけど,1日で少し詳しくなった気がする!(Bundler と同じと考えちゃダメだなwww)