您的位置:首页 > 其它

同舟共济BBS的FB2000到smth的安装转化手册(一)

2006-08-13 03:19 387 查看
花了很久的时间,看了这个版面上好多文章,自己失败摸索了好几次,总算把
FB2000转化到了smth,基本成功。把我碰到的一些问题,摸索的过程整理一下,发表
在这里。各位大虾给指点指点看看,有什么不合适的地方,给指出来。想转换FB2000
到smth的站友可以看看,希望我走的这些弯路能对你们日后的转化工作有所帮助。

原先BBS系统:FB2000v1126,按照bbsdev版讨论的内容,修正过一些小bug,增加了一些小功能
没有对帐号和版面数据的结构做过改动。操作系统:RH9

安装水木系统主要参考cn.bbs转信installbbs组
flyriver的标题为《smthbbs 在 RedHat Linux 8/9 上的安装指南》的文章和
和smth打包源码doc目录的文档。

转化主要参考cn.bbs转信installbbs组了
major的标题为convert FB2k to SMTH.BBS
thdog的标题为《我的 FB2SMTH 转化手册》
smth打包源码的文档

有些内容可能直接从上面提到的文章copy过来,对以上朋友的努力表示感谢。
还有在bbsdev回答过我的问题的诸位朋友,不能一一致谢,一并表示感谢。

1. 备份老系统,修改bbs组和bbs帐号为501:501
原先的/home/bbs mv为 /home/bbsold
原先的/home/bbssrc mv为 /home/bbssrcold
smth的打包文件解开在/home/smthbbs-1.1
2.
安装smth系统能用原先系统的尽量用原先系统的,只安装了新的libsmtp
其他的,都是RH9自带的,用RH9的那个RHN升级过:)

2.1
首先安装libsmtp,源代码解开之后以root
/configure --disable-pthreads
make
make install

然后cd /usr/lib
ln -s /usr/local/lib/libesmtp.so
ln -s /usr/local/lib/libesmtp.so.5

2.2
以root修改目录属性,血泪教训,转换过程中好多地方因为目录,文件的属主不是bbs
而耽误了很多时间查错误,
遇到莫名其妙的问题,先检查文件的属主。
chown -R bbs:bbs /home/bbs
chown -R bbs:bbs /home/smthbbs-1.1

2.3

修改以下文件
后面提到修改文件的目录默认为/home/smthbbs-1.1/

site/devel.h
修改
#define HAVE_TSINGHUA_INFO_REGISTER 0 /*清华信息注册系统,其他站台没用*/
增加
#define NEW_COMERS 1 /* 新手上路在newcomers发文*/
#define HAVE_BIRTHDAY 1 /* id的信息包括生日 */
#define HAVE_TEMPORARY_NICK 1 /* 允许临时呢称 */
#define HAVE_FRIENDS_NUM 1 /* 状态条显示好友个数 */
#define CNBBS_TOPIC 1 /* 进站显示全国十大 */
#define ANONYMOUS_DEFAULT 1 /* 匿名版默认匿名 */
#define CONV_PASS 1 /*这个一定要加上否则会出致命错误*/

关于最后这个CONV_PASS 1 多说几句。在thdog那篇文章里面,提到的在bbsconfig.h
当中增加这个宏定义,但是每次configure之后,bbsconfig.h这个文件会被configure改变
这个宏定义会丢失。然后这样make出来的系统一启动,/home/bbs目录下面会出现一大堆
乱码文件,然后所有的帐号不能登陆,非常恐怖,那些乱码文件删都删不掉。幸好我有
备份。把这个#define CONV_PASS 1 添加在devel.h就不会丢失了。

site/default.h
修改
#define SECNUM 9 /* 和自己站台的分区数目一致*/
#define DEFAULTBOARD "Test" /* 登陆默认认版面的名字,注意大小写*/
#define BLESS_BOARD "Congratulation" /* 祝福版版面的名字,注意大小写 */
#define MAIL_BBSDOMAIN "bbs.tongji.edu.cn"
#define NAME_BBS_ENGLISH "bbs.tongji.edu.cn"
#define NAME_BBS_CHINESE "同舟共济"
#define NAME_BBS_NICK "BBS 站"
#define BBS_FULL_NAME "同舟共济站"

#ifndef NAME_ANONYMOUS /*匿名发文的昵称 */
#define NAME_ANONYMOUS "匿名天使"
#endif

site/default.c

const char seccode[SECNUM][5] = {
"0", "1", "2", "3", "4", "5", "6", "7", "8",
}; /* 和你的站台分区数目一样多 */

const char *groups[] = {
const char secname[SECNUM][2][20] = {
const char *explain[] = {

这些改成和自己的站台一样,太长,不列出了。

case BBSNET:
return "穿梭银河";
/*原来是系统维护:)*/
case KILLER:
return "杀人游戏";

登陆限制,从wforum.c里面cp过来的
#ifdef USE_DEFAULT_MULTILOGIN_CHECK
struct count_arg {
int www_count;
int telnet_count;
};
int countuser(struct user_info *uinfo, struct count_arg *arg, int pos)
{
if (uinfo->mode == WEBEXPLORE)
arg->www_count++;
else
arg->telnet_count++;
return COUNT;
}
int multilogin_user(struct userec *user, int usernum, int mode)
{
int logincount;
int curr_login_num;
struct count_arg arg;

bzero(&arg, sizeof(arg));
logincount = apply_utmpuid((APPLY_UTMP_FUNC) countuser, usernum, &arg);

if (logincount < 1)
RemoveMsgCountFile(user->userid);

if (HAS_PERM(user, PERM_MULTILOG))
return 0; /* don't check sysops */
curr_login_num = get_utmp_number();
/*
* binxun 2003.5 仲裁,版主,Chatop,等都可以三登
*/
if ((HAS_PERM(user, PERM_BOARDS) || HAS_PERM(user, PERM_CHATOP)
|| HAS_PERM(user, PERM_JURY) || HAS_PERM(user, PERM_CHATCLOAK)
|| HAS_PERM(user, PERM_BMAMANGER))
&& logincount < 3)
return 0;
/*
* allow multiple guest user
*/
if (!strcmp("guest", user->userid)) {
if (logincount > MAX_GUEST_NUM) {
return 2;
}
return 0;
} else if (((curr_login_num < 700) && (logincount >= 3))
||((curr_login_num >= 700) && (logincount >= 2)
&&!(((arg.telnet_count == 0) && (mode == 0))
||(((arg.www_count == 0) && (mode == 1))))))
return 1;
return 0;
}
#endif

/*邮箱容量限制,非常简陋,所有的id都一样,150k,300封,谁能给个完美版?*/
#ifdef USE_DEFAULT_MAIL_LIMIT /*邮件容量限制 */
void get_mail_limit(struct userec *user, int *sumlimit, int *numlimit)
{
/*
* unlimit
*/
*sumlimit = 150;
*numlimit = 300;
return;
}
#endif

contrib/fb2k2smth/convboards.c
修改
const char oldseccode[SECNUM][5] = {
"ab", "cde", "fg", "hi", "jk", "lm", "no", "pq"
};/*和原来的站台一样。 */

2.4安装smth系统以root身份在/home/smthbbs-1.1/目录
/configure --enable-site=devel --with-www=/var/www --with-php=/usr/include/php/ --without-mysql --enable-ssh

make
make install
make install-home

如果有configure有报错,那可以暂时先不要编译web,先转化帐号版面文章,再说,
用下面的configure
/configure --enable-site=devel --disable-www --enable-ssh --without-mysql

make install成功之后,
用 root 用户
在 /usr/lib 做如下文件链接:
ln -s $(BBSHOME)/lib/libBBS.so /usr/lib
ln -s $(BBSHOME)/lib/libBBS.so.0 /usr/lib
ln -s $(BBSHOME)/lib/libzmodem.so /usr/lib
ln -s $(BBSHOME)/lib/libsystem.so /usr/lib
ln -s $(BBSHOME)/lib/libsystem.so.0 /usr/lib
这样就安装好了smth系统的telnet部分。

2.5
还是再强调一次目录的属主问题,碰到的各种出操,基本上都和这个属主有关以
root身份chown -R bbs:bbs /home/bbs

2.6
以root身份,到/home/bbs/bin目录启动bbs运行

/miscd daemon
/bbslogd
/bbsd -p 2323

建议把启动BBS的这些命令写成一个shell文件,startbbs.sh并且随着你的
安装过程不断地添加这个shell文件的内容。
2.7
测试新的smth系统telnet到bbs,注册SYSOP和guest两个id,
看看里面没有什么问题了,ok退出,准备下一步的转换过程

2.8以root身份,到/home/bbs/bin目录停止bbs,清除共享内存
killall -9 miscd
killall -9 bbslogd
killall -9 bbsd
ipcs -m | awk '$0~/bbs/ {system(sprintf("ipcrm shm %s",$2));}'

建议把启动BBS的这些命令写成一个shell文件,stopbbs.sh并且随着你的
安装过程不断地添加这个shell文件的内容。

2.9备份一下这个原始的/home/bbs目录,出了各种问题可以恢复
tar cvfz smth.tgz /home/bbs

3
转化
3.1
以bbs身份,千万记住,一旦以root身份来做,.PASSWDS和~bbs/home属主不对
会造成各种各样的问题,比如转化失败,登陆后掉线等等
cd /home/bbs
rm .PASSWDS
cp /home/bbsold/.PASSWDS .
mv .PASSWDS .PASSWDS.OLD
cp -R /home/bbsold/home .
做完这些,检查一下.PASSWDS和~bbs/home的属主看是不是bbs
如果不是,用chown改成属主为bbs:bbs
3.2
以bbs 身份,(!!千万不要以root运行,多次疏忽这个问题之后得到的血泪教训:) <IMG <I>onclick</I>="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" vspace=2 border=0>
在保证bbs不运行的状态下
运行~/bin/convpasswd
然后到/home/bbs目录,
cd /home/bbs
mv .PASSWDS.NEW .PASSWDS
3.3
以bbs的身份
cd ~/bin
/chlevel
可以看到 屏幕上提示的帐号转换成功的运行结果
3.4
以root身份,到/home/bbs/bin目录启动bbs运行
/miscd daemon
/bbslogd
/bbsd -p 2323
3.5
用原来的帐号密码登陆bbs,可以看到帐号转化成功。
然后退出登陆,
(也许非必要,不过我还是觉得重启一下安心)
以root身份,到/home/bbs/bin目录停止bbs,清除共享内存
killall -9 miscd
killall -9 bbslogd
killall -9 bbsd
ipcs -m | awk '$0~/bbs/ {system(sprintf("ipcrm shm %s",$2));}'
以root身份,到/home/bbs/bin目录启动bbs运行
/miscd daemon
/bbslogd
/bbsd -p 2323
3.6
以bbs身份,
rm -rf /home/bbs/vote
rm -rf /home/bbs/boards
rm .BOARDS
用需要转化的 boards/ 目录替换安装时带的, 用原来的 vote/ 目录替换掉安装时
带的
cd /home/bbs
cp /home/bbsold/.BOARDS .
mv .BOARDS .BOARDS.OLD
3.7

以root身份,用前面提到的那个startbbs.sh启动bbs运行,登陆一下看看,运行正常。
转化版面的工作要在bbs正常运行的条件下完成。退出此bbs帐号的登陆

以bbs身份
cd ~/bin
/convboards
然后可以在/home/bbs/看到那个转化的结果.BOARDS
以任意id登陆bbs,可以看到版面,文章都转化成功了,只是版面列表里面所有的版面
文章都是文章数为0
退出此id的登陆

3.8
以bbs身份
cd ~/bin
./gen_title
再以任意id登陆bbs,可以看到转化成功了,版面,文章都没有什么问题了。

后面待续,写我安装WWW部分和ssh部分的,还有一些其他小tips
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: