用patch升级Dokuwiki

修改了dokuwiki的一些系统配置文件,比如interwiki.conf里面,把英文维基百科改为了中文维基百科,增加互动百科等等。直接覆盖升级之后在去找当时的改动肯定比较麻烦,于是差异安装方式派上了用场。(PS:修改过的文件会patch失败,需要手动更改,上面的interwiki.conf就patch失败了)

一、升级步骤如下

来自dokuwiki官方wiki

1. 下载当前使用版本和新版本并解压

2. 产生diff列表

3. 切换到wiki目录测试升级

完整的安装包中包含install.php,而我们的wiki可能已经把它删除了,这是测试升级过程会中断,所以把完整安装包中的install.php文件删除在产生diff列表比较好。

4. 测试无误后正式升级

就这么愉快的升级完成了~

二、关于diff命令

diff是Unix系统的一个很重要的工具程序。它用来比较两个文本文件的差异,是代码版本管理的基石之一。

 扩展阅读

Linux diff详解

三、关于patch命令

基本语法

选项p的意义

参数-p来指定从第几层开始比较。比如有一个patch文件的补丁头是这样的:

代码:
--- old/modules/pcitableMon Sep 27 11:03:56 1999
+++ new/modules/pcitableTue Dec 19 20:05:41 2000

如果使用参数-p0,就表示从当前目录,找一个叫作new的目录,在它下面找一个叫modules的目录,再在它下面找一个叫pcitableMon的目录。
如果使用参数-p1,就表示忽略第一层,从当前目录找一个叫modules的目录,在它下面找一个叫modules的目录。这样会忽略掉补丁头提到的new目录。
依此类推。

选项N的意义

再次打补丁时会提示:

Reversed (or previously applied) patch detected! Assume -R?[n]

如果输入y,则还原。接下来询问是否应用补丁:

Apply anyway? [n]

输入y应用补丁。

如果不想看到这些提示可以加选项N:

如果你想严格指定是应用补丁可以使用下面命令(就是增加N参数):

# patch -Np0 < foo.patch

如果你想严格指定是还原补丁可以使用下面命令(就是增加R参数):

# patch -Rp0 < foo.patch

2 thoughts on “用patch升级Dokuwiki

  1. 自己的 interwiki的内容可以写到 interwiki.local.conf,这样覆盖升级就不会丢失了。conf/下很多文件都可以这样做:https://www.dokuwiki.org/config

回复 annhe_net 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注