Windows 10にインストールした composer の global環境で、ブランチの master, main や開発版がインストールされます。
Linuxではそんなことないのに。
composer.jsonで確認したところ、設定がそうなってました。
ここ数年、Windows 10にインストールしたcomposerのパッケージを更新してなかったので、久しぶりにアップデートしました。
composer global update
すると、パッケージのバージョンがこうなっている。
composer global show
Changed current directory to C:/Users/***/AppData/Roaming/Composer
composer/xdebug-handler 1.4.x-dev f27e06c Restarts a process without Xdebug.
felixfbecker/advanced-json-rpc v3.2.1 A more advanced JSONRPC implementation
felixfbecker/language-server dev-master 9dc1656 PHP Implementation of the Visual Studio Code Language Ser...
felixfbecker/language-server-protocol dev-master 9d846d1 PHP classes for the Language Server Protocol
jetbrains/phpstorm-stubs dev-master 45cb2ea PHP runtime & extensions header files for PhpStorm
microsoft/tolerant-php-parser v0.0.23 Tolerant PHP-to-AST parser designed for IDE usage scenarios
netresearch/jsonmapper v1.6.0 Map nested JSON structures onto PHP classes
phpdocumentor/reflection-common dev-master a0eeab5 Common reflection classes used by phpdocumentor to reflec...
phpdocumentor/reflection-docblock 4.3.4 With this component, a library can provide support for an...
phpdocumentor/type-resolver 1.x-dev 4b3579f A PSR-5 based resolver of Class names, Types and Structur...
psr/log 1.1.4 Common interface for logging libraries
sabre/event 5.1.2 sabre/event is a library for lightweight event-based prog...
sabre/uri 2.2.1 Functions for making sense out of URIs.
squizlabs/php_codesniffer 4.0.x-dev 745d952 PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files a...
symfony/polyfill-ctype dev-main f24ae46 Symfony polyfill for ctype functions
webmozart/assert dev-master b419d64 Assertions to validate method input/output with nice erro...
webmozart/glob 4.1.0 A PHP implementation of Ant's glob.
webmozart/path-util dev-master 95a8f7a A robust cross-platform utility for normalizing, comparin...
正式版じゃなくてGitのブランチ(master, main)や開発版(***-dev)が多くなってる。
composer.jsonファイルを確認したら設定がそうなってました。
{
"minimum-stability": "dev",
"require-dev": {
"felixfbecker/language-server": "dev-master"
},
"require": {
"squizlabs/php_codesniffer": "4.0.x-dev"
}
}
'minimum-stability' が 'dev' になってるので、まだリリースされてない最新版がインストールされたもよう。
念の為、Linux環境のglobalを確認したらこの記述はない。ということでこれを削除。
'minimum-stability' の未指定(デフォルト)は 'stable' でリリース版です。
{
"require-dev": {
"felixfbecker/language-server": "*"
},
"require": {
"squizlabs/php_codesniffer": "*"
}
}
パッケージのバージョンも最新版をダウンロードするように変えときます。そうしないとエラーが出るから。
composer global update
Changed current directory to C:/Users/***/AppData/Roaming/Composer
Composer is operating significantly slower than normal because you do not have the PHP curl extension enabled.
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Root composer.json requires felixfbecker/language-server dev-master -> satisfiable by felixfbecker/language-server[dev-master].
- felixfbecker/language-server dev-master requires jetbrains/phpstorm-stubs dev-master -> found jetbrains/phpstorm-stubs[dev-master] but it does not match your minimum-stability.
Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
エラーの内容は、リリース版をインストールするのにバージョンはそうじゃないものになってるよ? というもの。
改めて、全パッケージをまとめてアップデートしたらこうなります。
composer global update
composer global show
Changed current directory to C:/Users/***/AppData/Roaming/Composer
felixfbecker/advanced-json-rpc v1.2.10 A more advanced JSONRPC implementation
felixfbecker/language-server v2.3.1 PHP Implementation of the Visual Studio Code Language Server Protocol
netresearch/jsonmapper v0.11.0 Map nested JSON structures onto PHP classes
nikic/php-parser v3.1.5 A PHP parser written in PHP
phpdocumentor/reflection-common 1.0.1 Common reflection classes used by phpdocumentor to reflect the code stru...
phpdocumentor/reflection-docblock 3.3.2 With this component, a library can provide support for annotations via D...
phpdocumentor/type-resolver 0.4.0
sabre/event 4.0.0 sabre/event is a library for lightweight event-based programming
squizlabs/php_codesniffer 3.6.0 PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects viol...
symfony/polyfill-ctype v1.23.0 Symfony polyfill for ctype functions
webmozart/assert 1.10.0 Assertions to validate method input/output with nice error messages.
ぜんぶ、リリース版に変わりました。
Windowsでの global はスタビリティのデフォルトが 'dev' ?
ボクは、minimum-stability の設定を変えた記憶がありません。てっきりLinuxとWindowsは同じだと思ってました。
設定を変えたのを忘れてる可能性もあるので断定はできませんが、もし同じようなことになったら、composer.jsonを確認しましょう。
というか、Gitのmaster, mainブランチはcomposerでは開発扱いするというのを初めて知りましたが、考えてみればそうなります。
composerはGitのブランチではなくタグを見ています。そのタグ名にバージョンを入れることでパッケージのバージョンを理解する。
タグ名は、*.*.* か、頭にvを付けて v*.*.* の形式で書くことになってる。
ただオリジナルのタグ名でも、composerでのインストール時のバージョン指定でタグ名を指定すればインストール可能。
このあたりのルールは、composerでインストールできるパッケージを自作するときに覚えることです。
まだ作業したことがなくても知っていて損はないですよ?