如何完好的升级到 MoinMoin1.3.1 ?!
-- Zoom.Quiet [2005-01-07 16:35:31]
为什么?
怎么办?
有最新稳定版本了!但是!
MoinMoin 的安装方式没有变化!
- 但是!!目录结构完全变化了!!
- 原先的升级后,也是原有看页面全部不能自动识别,是人工一一恢复的!!
- 这次一定要摸索出正确的方式来!
- 到现在没有头绪!请大家帮忙是也乎!………………
凉办!
升级脚本
- 果然有专门的脚本进行处理!
台湾 林哲民 指点了一下子:
我想你之前的文件應該都是用 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保持一致!
经历
- 经过长久安定的运行,还是有些小问题!
- 虽然一开始就是指定 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'))
- 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
正式升级 啄木鸟的 Wiki ,这次是升级到 1.3.3 最新版本的MoinMoin....
- 小心再小心的按步就班的升级,还是没有躲了中文的麻烦!!
- 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):
- convert_eventlog(opj(origdir, 'event-log'), opj('data', 'event-log'), from_encoding, to_encoding)
- val = convert_string(val, enc_from, enc_to)
- return str.decode(enc_from).encode(enc_to)
- 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!!!
惊奇与遗憾
- 最大的感受是:
MoinMoin 全部Pythonic 了!!
- 包括配置文件,等等,一切都是标准的 Python 脚本,没有以前的CGI Perl 的味道了...
{{{<meta name="robots" content="index,nofollow">
}}}
解析出来的页面居然已经有 nofollow 这个避孕套 了!!哈哈哈!!
可惜,[[Include(PageName)]]的嵌入页面,没有了原来快速修改的入口链接....
反馈
如果你也面临升级 MoinMoin 有什么问题和经验请分享...