GNU/Linux 下使用 GRO

GNU/Linux用户如何使用GRO,cnix有一篇说明, 我按照自己的使用方法,对其中没提到的部分进行一些补充。

SSH Key的管理

Linux发行版中使用的SSH通常为OpenSSH,它支持SSH1和SSH2。 GRO使用的SSH支持SSH2(GRO项目确认邮件里面仍写着只支持SSH1),所以上传的public key建议使用dsa。

在自己机器上生成SSH2 key可以用下面命令:

$ ssh-keygen -t dsa

如果是生成SSH1 key,应使用下面命令:

$ ssh-keygen -t rsa1

GRO Shell

GRO的Shell出于安全考虑没有开放,但我们可以用它来测试上传的SSH key是否生效。
比如,键入下面命令:

$ ssh jungle@gro.clinux.org

如果显示如下信息,则表明Key已经生效。

Congratulations!
If you see this info, you have putty correctly configurated!
You need not login. Please go directly trying your CVS client.
Connection gro.clinux.org closed.

使用CVS

现在的Linux系统下默认CVS_RSH=ssh,如果你没有设置CVS_RSH,可以省掉export CVS_RSH=ssh这一步。

新项目创建以后,首先需要导入项目,因为GRO的源码库是空的(实际里面有一个CVSROOT目录,但由于权限限制,无法检出)。
例如,我是这样导入cvsdoc的:

$ cd cvsdoc
$ cvs -z3 -d :ext:jungle@cvs.cvsdoc-zh.gro.clinux.org:/cvs/cvsdoc-zh import cvsdoc jungle init

导入成功之后(可以通过GRO的CVSWEB查看),还需要导出一份到本机的工作目录中。
例如:

$ mkdir gro
$ cd gro
$ cvs -z3 -d :ext:jungle@cvs.cvsdoc-zh.gro.clinux.org:/cvs/cvsdoc-zh co cvsdoc

主页的维护

GRO提供的主页空间在Linux下用sftp进行管理非常方便,sftp也在OpenSSH包中。

cvsdoc-zh项目建立后,在服务器上的会有一个目录:/home/groups/cvsdoc-zh。里面包括几个子目录:

cgi-bin
htdocs
incoming
log

其中htdocs是放置主页的根目录,incoming为发布软件包必须要使用的临时文件夹。

因为事先上传了SSH key,所以sftp登录GRO的服务器很简单,只需:

$ sftp jungle@gro.clinux.org

用上面命令登录到服务器后,当前目录是用户的HOME目录。 接着我们就可以使用put,get这些ftp的上传、下载命令来更新主页文件了。 当大量文件需要更新时,使用sftp的交互方式并不方便, 这时可以写一个batchfile,用它来自动更新所有文件。

下面是更新cvsdoc-zh的batchfile:sftp2gro,供大家参考:

cd /home/groups/cvsdoc-zh/
put cvsdoc/zh_CN/cvsdoc-zh_gb-v1_12_5_1.tar.gz incoming/
put cvsdoc/zh_CN/cvsdoc-zh_gb-v1_12_5_1.tar.bz2 incoming/
put cvsdoc/zh_CN/cvsdoc-zh_gb-v1_12_5_1.info.tar.bz2 incoming/
put cvsdoc/zh_CN/cvsdoc-zh_gb-v1_12_5_1.zip incoming/
put cvsdoc/zh_TW/cvsdoc-zh_b5-v1_12_5_1.tar.gz incoming/
put cvsdoc/zh_TW/cvsdoc-zh_b5-v1_12_5_1.tar.bz2 incoming/
put cvsdoc/zh_TW/cvsdoc-zh_b5-v1_12_5_1.zip incoming/
put cvsdoc/zh_CN/html/*.html htdocs/cvsdoc/zh_CN/html/
put cvsdoc/zh_TW/html/*.html htdocs/cvsdoc/zh_TW/html/
put *.html htdocs/
put images/* htdocs/images/
put style/*.css htdocs/style/
bye

使用的时候,只需键入:

$ sftp -b sftp2gro jungle@gro.clinux.org

就能自动更新所有文件:-)