其实,我要的只是一个与 Apache 无关的轻量的独立的 Subversion 守护进程,即 svnserve;这次操作系统是 64 位的 FreeBSD 7.2。不知是 64 位的原因还是 7.2 的原因,部署过程非常不顺利。前后陆陆续续地折腾了两个多星期,快把 Google 都搜烂了。期间公司运维的贾同学与杨同学给予了大力帮助,在此表示感谢。

现在我们开始。首先刻录 64 位 FreeBSD 7.2 的第一张 CD,分区,最小化安装,设置 root 密码,添加隶属 wheel 组的普通用户帐户,配置网络与 sshd……一路顺畅无比,十分痛快,不再赘述。

然后使用 ssh 客户端(推荐 PuTTy,它还支持手机塞班操作系统)连接到服务器,验明正身:

svn# uname -a
FreeBSD svn.xx.xxxx.com 7.2-RELEASE FreeBSD 7.2-RELEASE #0: Fri May  1 07:18:07 UTC 2009     [email protected]:/usr/obj/usr/src/sys/GENERIC  amd64

接着下载 wget 并安装:

svn# mkdir -p /home/work/src/
svn# cd /home/work/src/
svn# fetch http://ftp.gnu.org/gnu/wget/wget-1.12.tar.gz
svn# tar -xzf wget-1.12.tar.gz
svn# cd wget-1.12.tar.gz
svn# ./configure
svn# make
svn# make install
svn# rehash

然后下载需要的其他安装包,并解压:

svn# cd /home/work/src/
svn# wget -c http://xmlsoft.org/sources/libxml2-2.7.7.tar.gz
svn# wget -c "http://downloads.sourceforge.net/project/expat/expat/2.0.1/expat-2.0.1.tar.gz?use_mirror=cdnetworks-kr-2"
svn# wget -c http://subversion.tigris.org/downloads/subversion-1.6.11.tar.gz
svn# wget -c http://subversion.tigris.org/downloads/subversion-deps-1.6.11.tar.gz
svn# tar -xzf libxml2-2.7.7.tar.gz
svn# tar -xzf expat-2.0.1.tar.gz
svn# tar -xzf subversion-1.6.11.tar.gz
svn# tar -xzf subversion-deps-1.6.11.tar.gz

安装 libxml:

svn# cd /home/work/src/libxml2-2.7.7/
svn# ./configure
svn# make
svn# make install

安装 expat:

svn# cd /home/work/src/expat-2.0.1/
svn# ./configure
svn# make
svn# make install

然后:

ln -s /usr/local/lib/libexpat.so /usr/lib/libexpat.so

进入 subversion 目录,逐个安装依赖包的组件:

svn# cd /home/work/src/subversion-1.6.11/

svn# cd apr
svn# ./configure --prefix=/usr/local/apr LDFLAGS="-L/lib64"
svn# make
svn# make install

svn# cd ../apr-util
svn# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ LDFLAGS="-L/lib64"
svn# make
svn# make install

svn# cd ../zlib
svn# ./configure
svn# make
svn# make install

之前一直安装 serf,方法:

svn# cd ../serf
svn# ./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ LDFLAGS="-L/lib64"
svn# make
svn# make install

无奈它死活就是报错:

/usr/lib/crt1.o(.text+0x8a): In function `_start':
: undefined reference to `main'
*** Error code 1

Stop in /usr/home/work/src/subversion-1.6.11/serf.

结果 Google 了好几天,看了 N 篇老外的帖子,发现如果不搭配 Apache 使用,这个组件可以不安装……

然后 neon 也可以不安装。下面的安装方式或许会报错:

svn# cd ../neon
svn# ./configure --enable-shared --enable-ssl LDFLAGS="-L/lib64"
svn# make
svn# make install

其实这个 sqlite 也可以不安装:

svn# cd ../sqlite-amalgamation
svn# ./configure --prefix=/usr/local/sqlite
svn# make
svn# make install

记得不要写到 Subversion 的编译参数里面。“--without-sqlite”也不行,会报错。

最后可以安装 Subversion 了:

svn# cd ..
svn# ./configure --prefix=/usr/local/subversion --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --with-ssl --with-zlib=/usr/lib --without-serf --without-berkeley-db --enable-maintainer-mode LDFLAGS="-L/lib64"
svn# make
svn# make install

如果不安装前面的 expat,会报错:

/usr/bin/ld: cannot find -lexpat
*** Error code 1

Stop in /usr/home/work/src/subversion-1.6.11.

安装到此结束,如果没有意外报错的话——恭喜你,可以自恋一下了:

svn# /usr/local/subversion/bin/svnserve --version
svnserve, version 1.6.11 (r934486)
   compiled May 12 2010, 04:25:34

Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository back-end (FS) modules are available:

* fs_fs : Module for working with a plain file (FSFS) repository.

启动方式就不多说了,手册上写得非常清楚。需要智能化脚本的,也可以 Google 到。

部署结束,感谢收看。

非常抱歉,实在对不住各位。原定我说的要为春节上海之行写四篇文章的事情缩水了,因为我发现南京路的照片拍得极少,可以拿出来见人的就更少了——这可能与我一贯对类似于逛大街的行为感冒有关,更何况是这条著名的大街。因此,城隍庙篇与南京路篇缩水成一篇文章,望各位见谅。

总的来说,春节行走上海实质为路过,走马观花而已。如果不是易先生自告奋勇担当导游,估计我也不会在雨蒙蒙的天气出去散步。前几天拍东方明珠塔和历史博物馆还算认真,后来从浦东坐摆渡船到浦西,脚比手快,虽也拍了一些,但大部分不能见人。眼看距离春节都快过去半年了,我还没发完照片。磨蹭多日,今天就做个了结吧。

这是在浦东到浦西的摆渡船上拍的两岸:

- 阅读剩余部分 -

首先感谢国家,感谢党,给我们美好的生活和安全的保障。

话说上周六杨同学来津参加朋友婚礼,由于第二天要远赴塘沽拜访小妹妹,遂来我处借宿。众所周知,我一直积极响应党和国家的号召,继承并发扬中华民族几千年传承文明与优良美德,倡导艰苦朴素的生活。蓬门陋不可言,何以见君?好在杨同学毫不计较,并且当场脱下衣物以示诚意。我不禁万分感动,内流满面。记得毛爷爷曾经教导我们,革命战友之间的友谊是火热的,今天我终于明白了。

时近深夜,我问杨同学有否饥饿之感。他深情款款看了一眼我的橱柜,咽下口水,对我说:吃泡面就行。多么懂事的孩子,多么贴心的朋友,多么真诚的战友啊。我又一次被感动了,诚恳地对杨同学说,下一次你来一定请你吃楼下的沙县小吃或者五百米以外的兰州拉面。杨同学也被感动了,拉着我的手,眼角里泛着晶莹的水珠,却再也说不出话来。

有朋自远方来,何以忍心让他吃泡面呢。于是我打开冰箱拿出为今年和明年过冬准备的全部食品,热情地邀请杨同学品尝。杨同学饶有兴致地参观与考察了我加工食品的设备与流程,并亲自拍照留念。

这是全部食品(含再加工的配料)与加工设备。在本次宴请中,我选用了咸切面包、包菜叶、奶酪、切片西红柿、番茄沙司、罐装火腿肉和午餐肉、沙拉酱:

- 阅读剩余部分 -

话说我们乘坐据说每秒 7 米的电梯进入东方明珠塔后,在 263 米观光层上走了一圈倍感无聊。上一层 267 米旋转餐厅、酒吧与再上一层 271 米的 KTV 都是另收费的,想了想门票的价格就没再往上。

回到零米大厅后,在乘坐电梯的位置下面看到了一个“老年人看了可回味,青少年看了受教育”的标语。

我说服易先生,我们作为意气风发的祖国的花骨朵,一定要接受正面的爱国主义教育,长大了不能做不明真相的群众。于是我们高高兴兴地来到了上海城市历史发展陈列馆的门口,看到一位穿着鲜艳的红色的衣服的叔叔,我们以为他是收门票的,结果他真的是收门票的——凭楼下东方明珠塔的门票即可进入。

进一段广告,看一下这个历史陈列馆的官方介绍

上海城市历史发展陈列馆位于东方明珠塔零米大厅内,展示面积约 1 万平方米,由“城厢风貌”、“开埠掠影”、“十里洋场”、“海上旧踪”、“建筑博览”、“车马春秋”等场馆组成。陈列馆调集文物和其它展品千余件,是集历史、文化、鉴赏、娱乐于一体,具有创新理念的陈列。与传统博物馆的展示方式不同,上海城市历史发展陈列馆采用融物于景和场景化的展示手法,辅以高科技的技术手段,将蜡像、文物、道具、模型、多媒体、声光电融于一体,向观众展示了昔日上海的民俗风情。

踏入陈列馆,如同步入时光隧道——观众可以游览五方杂处的老城厢,了解五光十色的十里洋场,穿过建筑风格中西合壁的石库门弄堂,领略大都会的文化魅力,走近曾经崛起过的远东巨埠。

更为详细的介绍可以参见新浪网《繁华背后数历史--上海城市历史陈列馆登场》这篇文章。除此之外,可以一边看文章一边看图,一边不说话。

- 阅读剩余部分 -

今年二月初,过年回家,我路过上海。此行原本只是打酱油路过,不是旅游。后来易先生百般勾引,遂多留了几天,变成了自助旅游。感谢国家,感谢党中央,感谢政府,让我有了一次如此美好的旅游机会。我内心充满着对你们的感激,完全不是因为赶时髦,也更加没有组织或者个人强迫我这么说。

记得高中时曾在老家的图书馆里读海上说梦人的那部《歇浦潮》。当时不算大的图书室里,我四处翻找着能带给我一见钟情的书卷。后来一本极具书卷气息的映入眼帘,它就是《歇浦潮》。吸引我的除了书名这沾染诗词情调的三个字之外,还有书作者——海上说梦人。这样一个名字,总能让人联想到写《金瓶梅》的兰陵笑笑生这个名字。于是我带回去了,打开台灯,伏案沉心细读。老上海的百般旧事、重重黑幕,尽得恣绽。正是这部积累了大量生活素材的《歇浦潮》,才让我对上世纪二三十年代的老上海,有了意欲一探的萌芽。

后来读到王安忆的《长恨歌》,对于王琦瑶,我似乎看到了旧上海的繁华与荒凉,似乎嗅到了生于上海长于上海的她青春绽放时的体香和沉沉离去时尸腐的气息。王琦瑶是上海弄堂里的一只鸽子,曾经在一个明媚的早晨飞出那隐晦的弄堂。“也许她以为,蓝天才是她的家园,广阔才是她的归宿。然而她不是雄鹰,只是鸽子。鸽子是供认豢养的,叫人欣赏的,或者说玩味的——如果不是玩弄的话——它飞得再高也飞不出宿命。仍旧要飞回来。回到这曲折的弄堂,回到这暧昧的闺房,回到这无处不在的留言里。她的一生是不快乐的,是一阕幽幽的长恨歌。”《长恨歌》的灼灼隐痛,让我愈加想要看看上海的容颜了。

再后来,我读了易中天的《读城记》。拿上海和北京做比较,是一件十分有趣的事情。也许西方人对于上海和北京,就如同我们对于美国的纽约和华盛顿,澳洲的悉尼和堪培拉吧。正是易中天的这本《读城记》,让我心底对上海的挂牵越发浓重了。

小宝的文字里曾经写过十里洋场与西安的比较,清灵子的文字里也常常提及上海的夜景和旗袍,以及那个写下《一个父亲的札记——妞妞》痛彻心扉的周国平,还有那个在兰州写下冷霜长河发出千年一叹的余秋雨。所有的这些,都幻化为我对上海的牵念。

二〇〇二年的夏天,我第一次去了上海。年轻,冲动,幼稚,叛逆。买了八块钱的火车票一路站着到上海,仅仅是因为参加网上一个 IRC 频道的聚会。我不清楚当初的“远东不夜城”今日在何处,对于其他看到的听到的,不是忽略了就是忘记了,没能记下多少。

次年我和 FT 在杭州见到 CHU 小奇后,印象中似乎又去了一次上海。做了什么,全然忘记了。中间的六七年,除了探望朋友直奔目的地以外,似乎就再也没有游历这十里洋场的地方了。易先生说要带我看夜上海,心底便有些期待,又有些挂牵。阔别多年之后,该是怎样的景象,又会带给我怎样的思绪?

我们的行程从东方明珠塔开始,当晚还去了位于塔内的“上海城市历史发展陈列馆”;次日从浦东坐摆渡船到浦西,去了城隍庙,又重游了南京路步行街。“试拍上海”系列也分为东方明珠之夜、城市历史陈列馆、城隍庙、南京路四个部分、四篇文章。

看图不说话,有图有真相:

- 阅读剩余部分 -