Composer

From mediawiki.org
This page is a translated version of the page Composer and the translation is 95% complete.

Composer (コンポーザー) は、PHPのライブラリの依存性管理ツールです。 MediaWiki 1.25 以降、MediaWikiコアの外部ライブラリの依存関係はComposerで管理されるようになりました。 さらに、MediaWiki拡張機能のインストールの管理にも使用できます(MediaWiki 1.22 以降で利用できます)。 しかし、現状ではあまりサポートされていません。 今後、変更される可能性があります。

Composerのインストール

Unix/Linux、macOSの場合

Composer のインストールには、最も分かりやすい方法である sudo apt install composer の他に、複数の方法があります。

MediaWiki 1.31、1.35.0、1.35.1では、Composer 1.xのみサポートされています。 最新のComposer 1.x安定版リリースを入手するには以下を実行します:

wget -cO - https://getcomposer.org/composer-1.phar > composer.phar

Composer 2.xとComposer 1.xはMediaWiki >= 1.35.2(REL1_36 ブランチとmasterとともに)でサポートされています。 最新のComposer 2.x安定版リリースを入手するには以下を実行します:

wget -cO - https://getcomposer.org/composer-2.phar > composer.phar

macOSをお使いの方は、Homebrewを使ってComposerをインストールすることができます。 この場合、Composer 2.xがインストールされますので、使用しているMediaWikiのバージョンによっては、上記のwgetの指示に従ってComposer 1.xをダウンロードする必要があります。

brew install composer

うまくいかない場合、あるいはHomebrewがインストールされていない場合は、以下をお試しください:

php -r "readfile('https://getcomposer.org/installer');" | php

Toolforgeと拡張機能ディストリビューターは、"integration/composer" gitリポジトリに含まれるComposerのコピーを使用します。

Composerがインストールされると、ダウンロードしたphar経由で以下のようにコマンドを実行できるようになります。

php composer.phar someCommand

通常の実行ファイルとして使用できるように、pharをパスに移動しておくとよいでしょう。

mv composer.phar /usr/local/bin/composer
composer someCommand

mv コマンドが権限が関係で失敗した場合は、sudo を付けてもう一度お試しください。

sudo mv composer.phar /usr/local/bin/composer
composer someCommand

Windowsの場合

ダウンロードページからインストーラーをダウンロードし、実行するだけです。 手動インストールを好む場合は、Windowsにはデフォルトでwget(またはAPTやHomebrew)がないことと、/usr/local/binディレクトリがないことを除いて、上記の手順を踏むことができます。 このような場合は、ウェブブラウザでcomposer-1.pharをダウンロードし、それをcomposer.pharにリネームすればよいのです。

Local installation

You're not out of luck if you don't have permissions to run Composer on the server. It is also possible to download the MediaWiki folder to your local machine, install and run Composer, and transfer the files back to the server.

Composerのアップグレード

Composer 1.x

Composerを最新の1.x安定版にアップグレードしたい場合(または2.x安定版からダウングレードしたい場合)には、以下を使用することができます。

composer self-update --1

権限の関係で更新コマンドに失敗した場合は、sudoを付けてもう一度お試しください。

sudo composer self-update --1

もし、あなたが本当に古いバージョンのcomposerを使用している場合は、--1パラメータがない可能性があります。この場合、self-updateを2回実行することをお勧めします。1つ目は2.xにアップデートする可能性があるため、2つ目は最新版の1.xにダウングレードします。

composer self-update
composer self-update --1

Composer 2.x

Composer 1.xを使用していて、Composer 2.xにアップグレードしたい場合(及び >= 1.35.2のような適切なバージョンのMediaWikiを使用している場合)、以下を使用できます。

composer self-update --2

権限の関係で更新コマンドに失敗した場合は、sudoを付けてもう一度お試しください。

sudo composer self-update --2

MediaWikiコアでの使用法

MediaWiki 1.25以降は、Composerで管理されているいくつかの外部ライブラリに依存しています。 Composerはvendor/autoload.phpでオートローダーを作成し、それをWebStart.phpでインクルードします。

Composerで管理される依存関係は、MediaWikiと拡張機能のtarball配布物にバンドルされているため、システム管理者はComposerを直接使用する必要はありません。 Gitを使用してMediaWikiをインストールするとき、$IP/composer.jsonで宣言された依存関係はcomposer update --no-devを実行することでローカルにインストールするか、mediawiki/vendor.gitリポジトリをクローンしてWikimedia運用クラスタで使用される同じライブラリを提供することができます。[1]

$IP は、あなたが MediaWiki をインストールしたインストールパス (または「ディレクトリ」) を意味します (Install Path の略)。そのディレクトリには LocalSettings.php index.php などがあります。

composer-merge-pluginの使用

$IP は、あなたが MediaWiki をインストールしたインストールパス (または「ディレクトリ」) を意味します (Install Path の略)。そのディレクトリには LocalSettings.php index.php などがあります。

MediaWikiコアは$IP/composer.jsonを"所有"(owns)し、tarballとGitで管理された更新の両方でそのファイルの内容を変更します。 ローカルインストールで、オプションライブラリのロードや拡張機能の管理をComposerで行うために、composer-merge-pluginというComposer用の特別なプラグインが開発されました。[2] このプラグインとMediaWikiコアのcomposer.json構成はローカルデプロイメントが必要な拡張機能とライブラリをMediaWikiのルートディレクトリの中のcomposer.local.jsonファイルに追加することを可能にします。

composer.local.jsonは、Composer自体を使用してインストールされていない拡張機能が必要とするComposerマネージド・ライブラリーをインストールするために使用することもできます。 これは、Extension Distributorによって生成されたtarballから拡張機能をインストールしない場合にのみ必要です。

ローカルにインストールされた拡張機能に含まれるcomposer.jsonファイルをComposerが検出して処理できるようにするには、$IP/composer.local.jsonに次のような内容を追加します。

{
    "extra": {
        "merge-plugin": {
            "include": [
                "extensions/*/composer.json",
                "skins/*/composer.json"
            ]
        }
    }
}

composer.local.jsonを変更した後、composer installを再度実行する前にcomposer.lockを削除して、Composerが依存関係を再計算し、変更が有効になるようにする必要があります。

リソース

脚注