Composer 2.0 踩雷與問題排除
沒想到 10/24 正式釋出後,沒兩天就發現問題了。
11/6 追加補充
這問題是聽其他朋友分享的。
問題很單純:Travis CI build 失敗,因為 Travis CI 預設會在設定 PHP 環境的時候,執行下面指令:
$ composer self-update |
此資訊是從 Travis CI console 複製過來的。
因此可以想像 Travis CI rebuild 的時候,就會自動換 Composer 2.0 了。因為我昨天只有在本機試過是沒問題的,所以就確認一下看是哪些套件出問題,後來發現是下面這兩個:
- nesbot/carbon <= v1 依賴的 kylekatarnls/update-helper <= v1.1
- phpstan/phpstan <= v0.11 依賴 jean85/pretty-package-versions <= v1.2 依賴的 ocramius/package-versions < v1.7.0
這兩個套件有限制依賴 composer-plugin-api <= v1
,寫法不同,總之就是不支援 v2 API,所以在跑 composer install 的時候會出錯。
解決方法
這次案例是有時間要求,所以是 rollback v1 解決的,在 Travis CI 適當的階段加上這行即可:
composer self-update --1 |
這這兩個套件來說,正規解法應該是版本更新:
11/6 追加補充
補 Composer 2 剛踩到的雷:用 Laravel 至少要升到 v6.18.7 或 v7.6.0 以上才有修正這個問題,v8+ 則沒有問題。以下是相關資訊:
結論
確實如官網所提醒的,最容易出問題的地方是 Plugin API 版本不相容。
相對不容易發現問題的 platform 檢查,我覺得它才是比較可怕的,下次大家升 Composer 2.0,或有使用 Travis CI 的時候,記得要注意 Composer 有這些變動。