注意:虽然使用git的方式看似很便捷,但很多时候会因此发生一些莫名其妙的问题,尤其是在进行大版本升级的时候,所以最保险的方式是从官网下载各个对应版本到服务器上(1.38.1中采用git报错的有TemplateStye和Lingo)。

2022年6月14日更新

今天在虚拟机中测试1.38版,需要重新安装所有的扩展,之前的脚本用起来有点不顺,最大的原因就是无法判断扩展是否已经安装了(git时不时出错,就会跳过几个扩展)。另外,版本号的话也需要变更,虽然用查找替换的方法也挺快,但是原来的文本太长,查起来不方便。
所以更新一下,脚本如下:

cat extensions_list.txt | while read line
do
    if [ ! -d "$line" ]; then
        git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/$line --branch REL1_38
    else
        echo "$line已经存在"
    fi
done

而extensions_list.txt文件中只要每行写一个扩展名就成了。如果要确认是否安装全了,重新执行一下看看是不是都显示已存在了。增加脚本也可以直接把名字添加进txt文件中,再执行一次就可以了。
版本号直接硬解码到脚本中,个人用好像没必要参数化了。

2021年9月11日原文

MediaWiki的安装和升级进行了N遍,自己都有点嫌烦了,尤其是每次大版本升级,所有的扩展都要跟着安装一遍。玩的时间越长,用到的扩展也越多,大多还不包括在安装包中。
以前都是逐个下载然后再逐个上传,直到通过git的方式后才逐渐体会到后者的效率。不过每次在控制台中git clone xxx扩展,即便是复制黏贴,一次又一次地还是挺烦的。于是从网上找了段脚本代码,能把所有需要的扩展地址从某个文本文件依次读出后再执行git clone
首先,创建一个gitlist.txt的文本文件,在其中加入需要拉取的扩展地址,如下:

https://gerrit.wikimedia.org/r/mediawiki/extensions/AdvancedSearch --branch REL1_35
https://gerrit.wikimedia.org/r/mediawiki/extensions/CodeMirror --branch REL1_35

大部分的扩展都可以在https://gerrit.wikimedia.org/r/mediawiki/extensions中找到,所以复制一行改一下扩展名就可以了。而--branch REL1_35对应的是MediaWiki的版本号,此处以1.35为例。

再创建一个脚本文件clone.sh,代码如下:

cat gitlist.txt | while read line ; do git clone $line; done;

将以上两个文件上传到/extensions目录下,执行clone.sh脚本,等上一段时间,列表中的所有扩展都安装完毕。
虽然有各种安装扩展的方法,之所以我喜欢上述这种方式是因为可以在gitlist.txt随意地调整自己需要的扩展,尤其是在使用一段时间重装或者升级时。
当然,换一种思路来看,将常用扩展的名字保存至文本文件,然后使用脚本批量运行mediawiki-extensions命令来安装可能会更加便捷。

说明:本人并不熟悉脚本语言,所以只能抛砖引玉地做个简单的一键安装脚本适用于自己日常使用。如果能够加入判断,自动跳过已安装扩展或者是重新安装扩展的功能,还望高手指点,先行谢过。

最后修改:2022 年 06 月 15 日
如果觉得我的文章对你有用,请随意赞赏