ツイート
シェア
LINEで送る
B! はてぶでブックマーク
Pocketでブックマーク
RSSフィード

PHP composer, Gitのブランチはスタビリティを『開発』扱いにするの?

php
イラストダウンロードサイト【イラストAC】
の画像をもとに加工しています。

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ファイルを確認したら設定がそうなってました。

C:Users***AppDataRoamingComposercomposer.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' でリリース版です。

修正後のcomposer.json
{
    "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でインストールできるパッケージを自作するときに覚えることです。

まだ作業したことがなくても知っていて損はないですよ?

前の投稿
PHP composer, パッケージを本番環境と開発環境に分離する。
2021年9月。最新のPHPコーディング規約(PSR)。静的コードチェックはPSR-12。
次の投稿

コメントを残す