Composer
Composer (コンポーザー) は、PHPのライブラリの依存性管理ツールです。 MediaWiki 1.25 以降、MediaWikiコアの外部ライブラリの依存関係はComposerで管理されるようになりました。 さらに、MediaWiki拡張機能のインストールの管理にも使用できます(MediaWiki 1.22 以降で利用できます)。 しかし、現状ではあまりサポートされていません。 今後、変更される可能性があります。
Composerのインストール
MediaWiki 1.35.2 以降、Composer 2.x に対応しています。 |
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にリネームすればよいのです。
ローカルでのインストール
サーバーで Composer を実行する権限がなくても、あきらめる必要はありません。 MediaWiki フォルダーをローカル マシンにダウンロードして、Composer をインストールして実行し、ファイルをサーバーに戻すこともできます。
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運用クラスタで使用される同じライブラリを提供することができます。
composer-merge-pluginの使用
MediaWikiコアは$IP/composer.json
を"所有"(owns)し、tarballとGitで管理された更新の両方でそのファイルの内容を変更します。
ローカルインストールで、オプションライブラリのロードや拡張機能の管理をComposerで行うために、composer-merge-pluginというComposer用の特別なプラグインが開発されました。[1]
このプラグインと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 update
を実行して、Composerが依存関係を再計算し、変更が有効になるようにする必要があります。
リソース
- Composerを使って拡張機能をインストールする方法
- MediaWikiのコアや拡張機能に外部ライブラリを追加する方法
- composer.jsonを作成する際のベストプラクティス
- packagist.orgへのパッケージの追加に関する情報
- w:Composer (software)