如何从命令行安装 Mediawiki 扩展?

How can I install Mediawiki extensions from the command line?

我正在尝试使用 Ansible 和维基媒体自动安装维基媒体 command-line install script

我注意到当前版本包含用于安装扩展的脚本参数。来自脚本帮助命令:

$ php maintenance/install.php --help

CLI-based MediaWiki installation and configuration.
Default options are indicated in parentheses.

Usage: php install.php [--conf|--confpath|--dbgroupdefault|--dbname|--dbpass|--dbpassfile|--dbpath|--dbport|--dbprefix|-
-dbschema|--dbserver|--dbtype|--dbuser|--env-checks|--extensions|--globals|--help|--installdbpass|--installdbuser|--lang
|--memory-limit|--mwdebug|--pass|--passfile|--profiler|--quiet|--scriptpath|--server|--skins|--wiki|--with-extensions] [
name] <admin>

...

Script specific parameters:
    --extensions: Comma-separated list of extensions to install
    --with-extensions: Detect and include extensions

但是,我找不到关于如何最好地使用这些参数的任何其他信息。 install.php 脚本或扩展的维基媒体手册页都没有记录它们:

有人可以指出有关这些参数的更多详细信息文档或提供如何使用它们的示例吗?

我打算做一些试验和错误,如果我在其他人回答之前弄清楚它们是如何工作的,我会自己回答这个问题。但我知道扩展安装可能会变得复杂并且通常涉及更新配置文件,所以我希望我能找到一些现有的文档来指导我。

简答

这些扩展参数只需在 LocalSettings.php 文件中添加一行,如果在 extensions 目录中找到指定的扩展,则在运行时加载扩展。

长答案

我玩了一下。我测试了 --with-extensions,根据帮助文档,它将 detect and include extensions。这似乎意味着它将扫描扩展目录并安装它在那里找到的任何扩展。

我运行以下命令:

php maintenance/install.php --with-extensions --dbserver="localhost" --dbname=foo --dbuser=foo --dbpass=foo --server="https://wiki.foo.localhost" --script path=/mediawiki -en --pass=foo "My Wiki Name" "Admin"

它在我的 LocalSettings.php 配置文件中生成了以下块,列出了当前版本的 Mediawiki 核心中包含的默认包:

# Enabled extensions. Most of the extensions are enabled by adding
# wfLoadExtensions('ExtensionName');
# to LocalSettings.php. Check specific extension documentation for more details.
# The following extensions were automatically enabled:
wfLoadExtension( 'CategoryTree' );
wfLoadExtension( 'Cite' );
wfLoadExtension( 'CiteThisPage' );
wfLoadExtension( 'CodeEditor' );
wfLoadExtension( 'ConfirmEdit' );
wfLoadExtension( 'Gadgets' );
wfLoadExtension( 'ImageMap' );
wfLoadExtension( 'InputBox' );
wfLoadExtension( 'Interwiki' );
wfLoadExtension( 'LocalisationUpdate' );
wfLoadExtension( 'MultimediaViewer' );
wfLoadExtension( 'Nuke' );
wfLoadExtension( 'OATHAuth' );
wfLoadExtension( 'ParserFunctions' );
wfLoadExtension( 'PdfHandler' );
wfLoadExtension( 'Poem' );
wfLoadExtension( 'Renameuser' );
wfLoadExtension( 'ReplaceText' );
wfLoadExtension( 'SpamBlacklist' );
wfLoadExtension( 'SyntaxHighlight_GeSHi' );
wfLoadExtension( 'TitleBlacklist' );
wfLoadExtension( 'WikiEditor' );

这个参数的复杂性,可能是明智的,仅此而已。

我尝试了 运行 这个命令来查看 --extensions=GoogleLogin 参数是否会自动神奇地安装 GoogleLogin extension。它没有。相反,它报告了这个错误:

Could not find the registration file for the extension "GoogleLogin"

因此,如果您正在寻找功能更全面的类 Composer 扩展包管理器,这不是它。

当我下载 GoogleLogin 扩展并将其放在 extensions 目录和 运行 --with-extensions 参数时,它确实将其包含在配置文件扩展块中。

在没有明确测试的情况下,我得出的结论是 --extensions 参数的运行方式与 --with-extensions 相同,除了它将仅重写 LocalSettings.php 配置文件中那些明确指定的扩展名 [=在 extensions 目录中找到 48=] 和 。