前一段學校里面我原來架設的 FreeBSD CVSup mirror 服務器停止服務了,因為機器被搬走了:p,很想再搞一個,但是可惜校內(nèi)沒有什么我可以用的機器是用 FreeBSD 的,我有權限的機器有 AIX,linux,windows,后想了半天決定在 linux 上裝一下試一試,先搜索沒找到什么相關資料,本來嘛,沒有多少人會有這么 bt 的想法,除了我:p。
試驗平臺,RedHat Linux 9。因為 AIX 平臺我沒有 root 權限,為了避免太多的麻煩。。
首先應該安裝 cvsup,因為 CVSup mirror 是完全依賴于 cvsup 工作的,安裝 cvsup 有 ezm3 的依賴,ezm3 的主頁在這里http://www.polstra.com/projects/freeware/ezm3/
新的版本是 1.1,配合新的 cvsup 軟件,也應該安裝新的 1.1 版本。下載源代碼編譯安裝,不用考慮依賴性,因為沒有什么其他東西會依賴 ezm3 和 cvsup 的,所以不用擔心會出現(xiàn)什么依賴性問題。編譯安裝過程中要注意的是 ezm3 的編譯安裝過程是不可分的,所以需要使用有 root 權限的用戶。編譯安裝需要的時間不短,耐心等一等了。之后編譯安裝 cvsup,一切都很順利。
分析 FreeBSD 平臺上裝好的 cvsup-mirror 以及 cvsup-mirror 的 ports,/usr/local/etc/cvsup 下面應該有這樣的文件(夾):
-rwxr-xr-x 1 root root 312 6月 7 20:10 config.sh
-rw-r--r-- 1 root root 154 6月 7 15:51 cvsupd.aclearcase/" target="_blank" >ccess
drwxr-xr-x 2 root root 4096 6月 7 16:22 prefixes
drwxr-xr-x 101 cvsupin cvsupin 4096 6月 7 19:04 sup
drwxr-xr-x 5 cvsupin cvsupin 4096 6月 7 19:57 sup.client
-rw-r--r-- 1 root root 404 6月 7 15:53 supfile
-rwxr-xr-x 1 root root 1574 6月 7 20:11 update.sh
config.sh 和 cvsupd.access 是 ports 中 make 可以生成的,可以直接利用。supfile 和 update.sh 存在于 ports/net/cvsup-mirror/files 文件夾。因為都是腳本文件,所以直接采取復制的政策。
一切都可以參考 ports/net/cvsup-mirror/ 下的相關文件:)
創(chuàng)建需要的目錄:
mkdir -p /usr/local/etc/cvsup/prefixes
mkdir -p /usr/local/etc/cvsup/sup.client/distrib
mkdir -p /usr/local/etc/cvsup/sup
mkdir -p /usr/local/etc/rc.d
mkdir -p /home/cvsupmirror/ncvs
mkdir -p /home/cvsupmirror/www
拷貝必須的文件:
cp work/config.sh /usr/local/etc/cvsup/config.sh
cp work/cvsupd.access /usr/local/etc/cvsup/cvsupd.access
cp files/update.sh /usr/local/etc/cvsup/update.sh
cp files/supfile /usr/local/etc/cvsup/supfile
cp files/refuse.self /usr/local/etc/cvsup/sup.client/distrib/refuse.self
cp files/cvsupd.sh /usr/local/etc/rc.d/cvsupd.sh
cp /dev/null /usr/local/etc/cvsup/.start_server
做鏈接,保證你的 cvsup 的內(nèi)容放在正確的地方:
按照 config.sh 中的設置,注意必須前后一致。
ln -sf /home/cvsupmirror/ncvs /usr/local/etc/cvsup/prefixes/FreeBSD.cvs
ln -sf /home/cvsupmirror/www /usr/local/etc/cvsup/prefixes/FreeBSD-www.current
ln -sf /usr/local/etc/cvsup/prefixes/.. /usr/local/etc/cvsup/prefixes/distrib.self
ln -sf SKIP /usr/local/etc/cvsup/prefixes/FreeBSD-gnats.current
ln -sf SKIP /usr/local/etc/cvsup/prefixes/FreeBSD-mail.current
添加組 cvsup 和 cvsupin,添加用戶 cvsup 和 cvsupin。
都沒有 shell,cvsup 沒有主目錄,cvsupin 建一個在 /home 好了。
mkdir -p /home/cvsupin/.cvsup
touch /home/cvsupin/.cvsup/auth
把 /home/cvsupin 和 /home/cvsupmirror 都給上適當?shù)臋嘞?br />
ll /home
drwx------ 3 cvsupin cvsupin 4096 6月 7 16:12 cvsupin
drwxr-xr-x 4 root root 4096 6月 7 19:06 cvsupmirror
ll /home/cvsupmirror
drwxr-xr-x 14 cvsupin cvsupin 4096 6月 7 19:56 ncvs
drwxr-xr-x 3 cvsupin cvsupin 4096 6月 7 19:57 www
還有 /usr/local/etc/cvsup 里面的兩個及其子目錄:
drwxr-xr-x 101 cvsupin cvsupin 4096 6月 7 19:04 sup
drwxr-xr-x 5 cvsupin cvsupin 4096 6月 7 19:57 sup.client
設置日志記錄:
在 /etc/syslog.conf 中添加:
!cvsupd
$.info /var/log/cvsupd.log
注意 update.sh 需要做些更改才能在 linux 上執(zhí)行
首先要安裝 jot 命令,搜索得到:
http://freshmeat.net/projects/bsd-jot/
提供了 jot 的 rpm,這個命令是 BSD 基本系統(tǒng)的一部分,RedHat 默認是沒有的
裝好了修改 update.sh 中 jot 的路徑,改為 /usr/local/bin/jot
還有這樣一行:
lockf -t 0 $ /bin/sh << 'E*O*F'
看上去不是很重要,注釋掉了。
E*O*F
也無法識別,注釋掉了。
設定 crontab 讓他定時執(zhí)行
23 * * * * /usr/local/etc/cvsup/update.sh
ok,差不多了,有問題再看看日志吧,手動執(zhí)行 /usr/local/etc/cvsup/update.sh,注意用全路徑,呵呵,沒有錯誤更新吧,啟動 cvsupd 找個客戶連一下,到 /var/log/ 下面看看 log,應該沒啥問題。基本的過程是這樣了,做完這個好些天了,現(xiàn)在憑印象和系統(tǒng)上裝好的樣子寫,難免有遺漏,有問題告訴我哦,嘿嘿。