読者です 読者をやめる 読者になる 読者になる

Composer beta1 のリリースで secure-http config が追加されていた

PHP Composer

今日は1日 Composer と戦っていた...!

学んだことを簡単にまとめておこうと思う.基本的に困ったら Documentation を読むとちゃんと書いてあるなと感じた.

./composer.phar self-update

self-update で Composer を更新すると,デフォルトの挙動だと GitHub から最新のコミットを取得する仕様になっていた.ドキュメントには latest version と書いてあって,最新のリリースバージョンなのかなーと思ったけど,違った.

常に最新のコミットから取得すると,もしバグがあった場合に踏む確率も高いし,Composer のリポジトリを読んでたら,普通にコミッターが master に直接 push してることもあるようで,少し不安に感じた.せめて Stable バージョンがあったら良いんだけど,未だに alphabeta なの!!!

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-httpbeta1 で入った新機能だった.意図せずに 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 は以下にある.

github.com

脱 PEAR

今日 composer.json をリファクタリングしていて,一部 PEAR に依存している部分でエラーになったりしていた.具体的に言うと HTTP_Request2 で,ここは Packagist に切り替えることにした.まさに同じ議論がされている Issue を発見した.

github.com

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 として少し不安に感じた.

github.com

➜ ./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)

関連記事