Differences between revisions 1 and 7 (spanning 6 versions)
Revision 1 as of 2005-01-07 16:35:31
Size: 531
Editor: Zoom.Quiet
Comment: 如何完好的升级到 MoinMoin1.3.1 ?!
Revision 7 as of 2005-02-05 11:22:25
Size: 9083
Editor: ZoomQuiet
Comment:
Deletions are marked like this. Additions are marked like this.
Line 8: Line 8:
= 怎么办? = = 为什么? =

=
= 怎么办? ==
Line 15: Line 17:

== 凉办! ==

=== 升级脚本 ===
 * 果然有专门的脚本进行处理!
 * 台湾 [http://ljm.idv.tw/mywiki/%e9%a6%96%e9%a0%81 林哲民] 指点了一下子:
 * {{{
我想你之前的文件應該都是用 GB2312 碼存儲的吧?
首先要把 data/ 製作一份備份,移除所有歐洲語系 (latin-1)
的頁面 (如 Hje_e4... 這種) 然後執行 moin-1.3.2 裡面
附的 12_to_13_mig?.py 程式。

一定要看 README 說明,升級全部順利的話 20 分鐘左右
可以做好,但如果沒看說明、或是沒有移掉 latin-1 網頁,
可以搞上幾個小時。

正確轉換的話,連變更記錄和附件都會留下來。

-- 泰山崩兮!禮樂壞兮!
}}}

=== mig 处理流程 ===
 * 呜乎矣哉!按照移植说明,要一一进行转换!
 * {{{首先要把 data/ 製作一份備份,移除所有歐洲語系 (latin-1)
的頁面 (如 Hje_e4... 這種)
text:
    _d* ##language:sv
    Aide_* ##language:fr
    Aiuto* ##language:it
    H_* ##language:sv
    Aktuelle_c4nderungen ##language:de
    ZufallsSeite ##language:de
    
text.default 中多有:
    Hi* 是德文的
    Hj* 是挪威的
(干脆杀光!反正新版本中是使用underlay 目录专门管理帮助页面了!)
"""
 * 然后,按照原始的:
    [http://moinmoin.wikiwikiweb.de/MoinMoinRelease1.3/README%2emigration 如何移植] 文档进行:
{{{
具体脚本在 MoinMoin/scripts/migration/12_to_13_migN.py
(在你MoinMoin安装到的目录, /usr[/local]/lib/python2.x/site-packages/MoinMoin).

有几个脚本问以将你的数据转换到当前版本
你必须,在 停止 旧版Wiki 后,运行 新版Wiki 前进行转换

确定有足够的空间(每次转换都会产生新的复制)

在升级时,先确认你的版本,作为转换入口的依据

 你运行的版本 使用的移植(mig)脚本
 ---------------------------------------------
 before 1.2 first upgrade to 1.2.4 and test for a while
 1.2.x mig1 - check from_encoding in script!
 1.3 <patch-78 mig2
 1.3 <patch-101 mig3
 1.3 <patch-196, =beta2 mig4
 1.3 <patch-221, =beta3 mig5
 1.3 <patch-248 mig6 - check from_encoding in script!
 1.3 <patch-275, =beta5 mig7
 1.3 <patch-305, =beta6 mig8
 1.3 <patch-332, =beta7 mig9
 1.3rc1 -

 修改脚本中的 from_encoding 设置为相应的值,
 如果你旧版本的安装中没有使用默认的 iso-8859-1 编码
 (在1.2.X 和以前的版本,默许是 iso-8859-1 编码
 (你可以在 moin_config.py中使用 charset = '...' 来修改),
 ) 你必须在 mig 脚本中也进行修改

当然,其实你最后还是要将所有移植脚本按照正确的次序运行一遍的,
以上对照表,仅仅是帮助你记忆,哪些脚本已经运行过?!

将你的 date/ 目录复制到脚本目录中,依次运行所有脚本

结束后,你将获得新版本的数据目录
可能有些东西没并不需要转换,请阅读脚本中的注释获得详细指点

特别要注意 mig5 的脚本.

注意!移植脚本,仅仅能够自动转换你的 文章,并不能转换你定制的插件,在1.3的新API接口面前,
你原先版本的Plugin 并不会良好的工作,需要重新自行调整,与1.3保持一致!
}}}


== 经历 ==
 * MoinMoin 1.2.3 是 FreeBSD 的Ports 提供的MoinMoin !
 * 经过长久安定的运行,还是有些小问题!
 * 虽然一开始就是指定 UTF-8 的编码进行的管理
 * 但是Wiki 森林中,天生有些问题——就是那些个欧洲编码的文章!!
 * 转换到12_to_13_mig4.py 死活过不去:
{{{data.pre-mig4/pages/huanian(2f)MoinEditorBackup/text -> data/pages/huanian(2f)MoinEditorBackup/text
Traceback (most recent call last):
  File "12_to_13_mig4.py", line 148, in ?
    convert_eventlog(opj(origdir, 'event.log'), opj('data', 'event-log'))
  File "12_to_13_mig4.py", line 63, in convert_eventlog
    data[0] = str(convert_ts(float(data[0]))) # we want usecs
ValueError: empty string for float()
}}}
   * 幸好,都是Python ,调试一下子,就确定了有问题的 event-log 记录行,
   * vi 进去,修改好!这次是在行首有非常的二进制“ ”空格!!
 * 12_to_13_mig6.py 时,则是没有办法将 UTF-8 以外的欧洲字符,转换为Uincode的,
   * 还是 vi 进去逐一清除!
 * 到了12_to_13_mig8.py 是死活不行了,
 * 返回去 干脆 {{{#touch data/event-log}}} 放空 log 记录!
 * 接着就好了!哈哈哈!
 * 除了在 RecentChanges 中,报告有些修改动作丢失………………可以忍受!!


=== 1.2.xto 1.3.3 ===
 * 小心再小心的按步就班的升级,还是没有躲了中文的麻烦!!
----
 * step but step 按照以上的介绍升级前使用 FreeBSD 的Ports 先升级Python 系统:
  * {{{
#cd /usr/ports/
#升级Ports 树
#cvsup -sgL2 /usr/share/examples/cvsup/ports-supfile -h tarsier.delphij.net
#直接下载最新的Ports 索引..否则你要等候很长时间来重建!
#make fetchindex
#make searc name=python
#询问出最新的Python 包在哪?
..
Port: python-2.4_1
Path: /usr/ports/lang/python
...
#cd /usr/ports/lang/python
#make clean && make install
#OK 就可以自动安装完一切!!!
}}}
 * 不过发布的MoinMoin 还是 1.3.1 在 FreeBSD 的Ports 中,
 * 只好自个儿下载最新的 然后简单的 {{{
#python setup.py install
}}}
 * 完事儿!!MoinMoin 的安装!
  * 可是!升级就没有如此简单了!
  * 要求一步步调整原有的内容页面
  * 这次我一直顺利的运行到12_to_13_mig6.py 才有问题:
   * {{{Traceback (most recent call last):
  File "12_to_13_mig6.py", line 100, in ?
    convert_eventlog(opj(origdir, 'event-log'), opj('data', 'event-log'), from_encoding, to_encoding)
  File "12_to_13_mig6.py", line 77, in convert_eventlog
    val = convert_string(val, enc_from, enc_to)
  File "12_to_13_mig6.py", line 58, in convert_string
    return str.decode(enc_from).encode(enc_to)
  File "/usr/local/lib/python2.4/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe5 in position 8: unexpected end of data
}}}
 * 中文!!或是其它欧洲语言的页面访问信息行, event-log 中的不能简单的处理,所以崩溃!
 * 老办法,修改 12_to_13_mig6.py 先不进行转换,而是报告哪里有问题,然后手工删除有问题的行就好!
  * '''可是!'''怎么也难以清除,手工枯燥的使用 vi 不断的根据崩溃点的信息来搜索,删除,搜索,删除...怎么也不能完全修正?!
 * 问了高手,知道一个技巧:
{{{
# grep -v OpenGNS%E7 event-log > event-log-fixE7
}}}
  * 可以将所有包含模式 '''OpenGNS%E7''' 的行忽略,整理出新的文件
  * 哈哈哈!!加快了清理工作,要知道啄木鸟Wiki 的 访问事件日志文件已经有 63Mb 之巨!! Vi 效率再高也是痛苦的!
-----
 * 呜乎哀哉!!可是清除了5个模式,还在不断的崩溃!!
 * 火大!直接修改脚本,自动跳过有问题的记录行--- 反正一定是文字编码问题,不用理会的!
  * ["/12_to_13_mig6.py"] -- 修改后的升级脚本
 * 世界为之清静!!
  * 最后报告说{{{
mig6 finished but maybe there is 4424 lines log not transition for some unicode ERROR!!
}}} 天!!!
 * 不过接下来就好了,顺畅的完成!!简单设定一下子 Apache 就重新开启了 啄木鸟的 MoinMoin!!!

==== 惊奇与遗憾 ====
 * {{{<meta name="robots" content="index,nofollow">
}}}
 * 解析出来的页面居然已经有 '''nofollow''' 这个''避孕套'' 了!!哈哈哈!!
  * [http://www.chedong.com/blog/archives/000045.html +1 rel="nofollow" = 互联网为超链戴上的安全套?! ;-)]
  * [http://blog.cnblog.org/archives/2005/01/wikiaeenofollow.html wiki也要nofollow - CNBlog: Blog on Blog]
  * [http://heterotopias.org/node/504?PHPSESSID=360790edeeed10347bd3a4b3bf49eb8a 為blog加套套:rel="nofollow" | Heterotopias]
  * [http://www.technorati.com/cosmos/search.html?rank=&url=nofollow 更多....]
----
 * 可惜,{{{[[Include(PageName)]]}}}的嵌入页面,没有了原来快速修改的入口链接....

= 反馈 =
 * 如果你也面临升级 MoinMoin 有什么问题和经验请分享...

如何完好的升级到 MoinMoin1.3.1 ?!

-- Zoom.Quiet [DateTime(2005-01-07T16:35:31Z)] TableOfContents

为什么?

怎么办?

有最新稳定版本了!但是!

  • MoinMoin 的安装方式没有变化!

    • 但是!!目录结构完全变化了!!
    • 原先的升级后,也是原有看页面全部不能自动识别,是人工一一恢复的!!
    • 这次一定要摸索出正确的方式来!
  • 到现在没有头绪!请大家帮忙是也乎!………………

凉办!

升级脚本

  • 果然有专门的脚本进行处理!
  • 台湾 [http://ljm.idv.tw/mywiki/%e9%a6%96%e9%a0%81 林哲民] 指点了一下子:

  • 我想你之前的文件應該都是用 GB2312 碼存儲的吧?
    首先要把 data/ 製作一份備份,移除所有歐洲語系 (latin-1)
    的頁面 (如 Hje_e4... 這種) 然後執行 moin-1.3.2 裡面
    附的 12_to_13_mig?.py 程式。
    
    一定要看 README 說明,升級全部順利的話 20 分鐘左右
    可以做好,但如果沒看說明、或是沒有移掉 latin-1 網頁,
    可以搞上幾個小時。
    
    正確轉換的話,連變更記錄和附件都會留下來。
    
    -- 泰山崩兮!禮樂壞兮!

mig 处理流程

  • 呜乎矣哉!按照移植说明,要一一进行转换!
  • {{{首先要把 data/ 製作一份備份,移除所有歐洲語系 (latin-1)

的頁面 (如 Hje_e4... 這種) text:

  • _d* ##language:sv Aide_* ##language:fr Aiuto* ##language:it H_* ##language:sv Aktuelle_c4nderungen ##language:de

    ZufallsSeite ##language:de

text.default 中多有:

  • Hi* 是德文的 Hj* 是挪威的

(干脆杀光!反正新版本中是使用underlay 目录专门管理帮助页面了!) """

具体脚本在 MoinMoin/scripts/migration/12_to_13_migN.py 
(在你MoinMoin安装到的目录, /usr[/local]/lib/python2.x/site-packages/MoinMoin).

有几个脚本问以将你的数据转换到当前版本
你必须,在 停止 旧版Wiki 后,运行 新版Wiki 前进行转换

确定有足够的空间(每次转换都会产生新的复制)

在升级时,先确认你的版本,作为转换入口的依据

 你运行的版本             使用的移植(mig)脚本
 ---------------------------------------------
 before 1.2              first upgrade to 1.2.4 and test for a while
 1.2.x                   mig1 - check from_encoding in script!
 1.3 <patch-78           mig2
 1.3 <patch-101          mig3
 1.3 <patch-196, =beta2  mig4
 1.3 <patch-221, =beta3  mig5
 1.3 <patch-248          mig6 - check from_encoding in script!
 1.3 <patch-275, =beta5  mig7
 1.3 <patch-305, =beta6  mig8
 1.3 <patch-332, =beta7  mig9
 1.3rc1                  -

 修改脚本中的 from_encoding 设置为相应的值,
 如果你旧版本的安装中没有使用默认的 iso-8859-1 编码
 (在1.2.X 和以前的版本,默许是 iso-8859-1 编码
 (你可以在 moin_config.py中使用 charset = '...' 来修改), 
 ) 你必须在 mig 脚本中也进行修改

当然,其实你最后还是要将所有移植脚本按照正确的次序运行一遍的,
以上对照表,仅仅是帮助你记忆,哪些脚本已经运行过?!

将你的 date/ 目录复制到脚本目录中,依次运行所有脚本

结束后,你将获得新版本的数据目录
可能有些东西没并不需要转换,请阅读脚本中的注释获得详细指点

特别要注意 mig5 的脚本.

注意!移植脚本,仅仅能够自动转换你的 文章,并不能转换你定制的插件,在1.3的新API接口面前,
你原先版本的Plugin 并不会良好的工作,需要重新自行调整,与1.3保持一致!

经历

  • MoinMoin 1.2.3 是 FreeBSD 的Ports 提供的MoinMoin !

  • 经过长久安定的运行,还是有些小问题!
  • 虽然一开始就是指定 UTF-8 的编码进行的管理
  • 但是Wiki 森林中,天生有些问题——就是那些个欧洲编码的文章!!
  • 转换到12_to_13_mig4.py 死活过不去:

{{{data.pre-mig4/pages/huanian(2f)MoinEditorBackup/text -> data/pages/huanian(2f)MoinEditorBackup/text Traceback (most recent call last):

  • File "12_to_13_mig4.py", line 148, in ?
    • convert_eventlog(opj(origdir, 'event.log'), opj('data', 'event-log'))
    File "12_to_13_mig4.py", line 63, in convert_eventlog
    • data[0] = str(convert_ts(float(data[0]))) # we want usecs

ValueError: empty string for float() }}}

  • 幸好,都是Python ,调试一下子,就确定了有问题的 event-log 记录行,
  • vi 进去,修改好!这次是在行首有非常的二进制“ ”空格!!
  • 12_to_13_mig6.py 时,则是没有办法将 UTF-8 以外的欧洲字符,转换为Uincode的,
    • 还是 vi 进去逐一清除!
  • 到了12_to_13_mig8.py 是死活不行了,
  • 返回去 干脆 #touch data/event-log 放空 log 记录!

  • 接着就好了!哈哈哈!
  • 除了在 RecentChanges 中,报告有些修改动作丢失………………可以忍受!!

1.2.xto 1.3.3

  • 小心再小心的按步就班的升级,还是没有躲了中文的麻烦!!


  • step but step 按照以上的介绍升级前使用 FreeBSD 的Ports 先升级Python 系统:
    • #cd /usr/ports/
      #升级Ports 树
      #cvsup -sgL2 /usr/share/examples/cvsup/ports-supfile -h tarsier.delphij.net
      #直接下载最新的Ports 索引..否则你要等候很长时间来重建!
      #make fetchindex
      #make searc name=python 
      #询问出最新的Python 包在哪?
      ..
      Port:   python-2.4_1
      Path:   /usr/ports/lang/python
      ...
      #cd /usr/ports/lang/python
      #make clean && make install
      #OK 就可以自动安装完一切!!!
  • 不过发布的MoinMoin 还是 1.3.1 在 FreeBSD 的Ports 中,

  • 只好自个儿下载最新的 然后简单的

    #python setup.py install
  • 完事儿!!MoinMoin 的安装!

    • 可是!升级就没有如此简单了!
    • 要求一步步调整原有的内容页面
    • 这次我一直顺利的运行到12_to_13_mig6.py 才有问题:
      • {{{Traceback (most recent call last):
      File "12_to_13_mig6.py", line 100, in ?
      • convert_eventlog(opj(origdir, 'event-log'), opj('data', 'event-log'), from_encoding, to_encoding)
      File "12_to_13_mig6.py", line 77, in convert_eventlog
      • val = convert_string(val, enc_from, enc_to)
      File "12_to_13_mig6.py", line 58, in convert_string
      • return str.decode(enc_from).encode(enc_to)
      File "/usr/local/lib/python2.4/encodings/utf_8.py", line 16, in decode
      • return codecs.utf_8_decode(input, errors, True)

UnicodeDecodeError: 'utf8' codec can't decode byte 0xe5 in position 8: unexpected end of data }}}

  • 中文!!或是其它欧洲语言的页面访问信息行, event-log 中的不能简单的处理,所以崩溃!
  • 老办法,修改 12_to_13_mig6.py 先不进行转换,而是报告哪里有问题,然后手工删除有问题的行就好!
    • 可是!怎么也难以清除,手工枯燥的使用 vi 不断的根据崩溃点的信息来搜索,删除,搜索,删除...怎么也不能完全修正?!

  • 问了高手,知道一个技巧:

# grep -v OpenGNS%E7 event-log > event-log-fixE7
  • 可以将所有包含模式 OpenGNS%E7 的行忽略,整理出新的文件

  • 哈哈哈!!加快了清理工作,要知道啄木鸟Wiki 的 访问事件日志文件已经有 63Mb 之巨!! Vi 效率再高也是痛苦的!


  • 呜乎哀哉!!可是清除了5个模式,还在不断的崩溃!!
  • 火大!直接修改脚本,自动跳过有问题的记录行--- 反正一定是文字编码问题,不用理会的!
    • ["/12_to_13_mig6.py"] -- 修改后的升级脚本
  • 世界为之清静!!
    • 最后报告说

      mig6 finished but maybe there is 4424 lines log not transition for some unicode ERROR!!
      天!!!
  • 不过接下来就好了,顺畅的完成!!简单设定一下子 Apache 就重新开启了 啄木鸟的 MoinMoin!!!

惊奇与遗憾

  • {{{<meta name="robots" content="index,nofollow">

}}}


  • 可惜,[[Include(PageName)]]的嵌入页面,没有了原来快速修改的入口链接....

反馈

  • 如果你也面临升级 MoinMoin 有什么问题和经验请分享...

HowtoMoinUpgrade (last edited 2009-12-25 07:10:06 by localhost)