cvs import 的语法为:
cvs import -m "log msg" projname vendortag releasetag
vendortag 和releasetag 一般不需要关心,我们这里使用一个用户名和一个start 标志。
我们把其它相关的project也放到cvs仓库中:
cd miniguiapps03 ; cvs import –m “the apps” miniguiapps03 joe start
cd miniguiexec03 ; cvs import –m “the demos” miniguiexec03 joe start
这样,我们把minigui的一个cvs服务器建立好了。
注意, 一个 user 要远程访问某些project, 他必须拥有适当的权限。比如,minigui03这个目录应该属于组minigui,且组可写。才能使minigui组里的用户可以远程参与minigui库的开发。
现在试试看从远程访问 cvs 服务器。
首先, 在你的机器上建立一个工作目录, 譬如是 /home/joe/work
cd /home/joe/work
cvs -d :pserver:joe@www.minigui.org:/home/minigui login
cvs -d :pserver:joe@www.minigui.org:/home/minigui co minigui03
cvs -d :pserver:joe@www.minigui.org:/home/minigui co miniguiapps03
cvs -d :pserver:joe@www.minigui.org:/home/minigui co miniguiexec03
cvs -d :pserver:joe@www.minigui.org:/home/minigui logout
当你敲入login行时,系统会提示你输入password, 打进去。 www.minigui.org是cvs服务器所在的机器。 该指定被执行后,该 cvsroot
(:pserver:joe@www.minigui.org:/home/minigui) 和加密后的密码会被存在 ~/.cvspass 里。
底下几行取出各个project。后logout。
cd minigui03
做了一些修改后,可以commit出去:
cvs commit -m "little change"
上面是一般开发者的登陆方法,对于匿名cvs, 可以让其不需要输入口令即可登陆,但是不能让其commint。这需要:
1. 将要开放的project设为全局可读写,因为cvs服务器在操作时要在相应目录下设置读写琐(即需要创建一些临时文件),所以即使是check out 操作,也需要目录可写。
2. 为了让匿名用户只有check out权限,可以在CVSROOT目录下建立一个readers文件,其中每一行是一个用户,这些用户只具有只读权限。比如:
anonymous
anoncvs
guest
jbrowse
3. 利用passwd文件,使匿名用户不能用其它方式登陆。典型为:
在文件CVSROOT/passwd 中:
anoncvs:XR4EZcEs0szik
在文件/etc/passwd 中为:
anoncvs:!:1729:105:Anonymous CVS User:/home/minigui:/bin/false
CVSROOT/passwd文件是cvs提供的一个专用于存放cvs密码的文件。它的典型格式为:
joe:XR4EZcEs0szik:jane
表示cvs用户joe其实是内部用户jane,其cvs密码加密后被存放在第二个字段,这样将cvs服务与系统的其它部分分离开来,大大地提高了系统的安全性。
上面介绍的是使用需要严格的安全认证的pserver服务器,如果您在局域网内开发程序,则可以使用rsh或者ssh,设置非常简单,服务器端只要开放着rsh或ssh服务器,客户端设置两个环境变量:CVS_RSH与CVSROOT,可以将它们的设置写入预处理脚本,比如使用ssh连接:
$export CVS_RSH="ssh"
$export CVSROOT=":ext:joe@www.minigui.org:/home/minigui"
$ cvs co miniguiexec03
joe@192.9.200.75's password:
输入密码,可以得到一份miniguiexec03的拷贝了。
总结
以上只是一个简介,cvs还有很多高级功能,如果您需要更详细的信息,请看cvs 的info或者到gnu上下载html版本的manual。
第二部分 使用Automake,Autoconf生成Makefile
在Unix上写过程序的人尤其是用 C 来开发程序的人一般都遇到过 Makefile,用 make 来开发和编译程序的确很方便,可是要写出一个Makefile不那么简单了。GNU Make 那份几百页的文件,让许多人害怕。当然,现在关于make的文档比较多,不过写一个Makefile总是一件很烦人的事情,GNU Autoconf 及 Automake 这两个软件是帮助程序开发者轻松产生Makefile 文件的。现在的GNU软件如Apache, MySQL Minigui等都是利用Autoconf,Automake实现自动编译的。用户只要使用 “./configure”, “make”, “make install” 可以把程序安?到系统中。
简介
Makefile 基本上是『目标』(target), 『关联』(dependencies) 和『动作』三者所组成的一系列规则。而 make 是根据 Makefile 的规则决定如何编译 (compile) 和连接 (link) 程序或者其它动作。当然,make 可做的不只是编译和连接程序,例如 FreeBSD 的 port collection 中,Makefile还可以做到自动下载远程程序,解压缩 (extract) , 打补丁 (patch),设定,然后编译,安装到系统中。
Makefile 基本结构虽然很简单,但是妥善运用这些规则可以变换出许多不同的花样。却也因为这样,许多人刚开始学写Makefile 时会觉得没有规范可以遵循,每个人写出来的Makefile都不大一样,不知道从哪里下手,而且常常会受到开发环境的限制,只要环境参数不同或者路径更改,可能 Makefile 得跟着修改。虽然有GNU Makefile Conventions (GNU Makefile惯例)制订出一些在进行 GNU 程序设计时写 Makefile 的一些标准和规范,但是其内容很长而且很复杂,并且经常作一些调整,为了减轻程序开发人员维护Makefile 的负担,出现了Automake。
利用Automake,编程者只需要写一些预先定义好的宏 (macro),提交给Automake处理,会产生一个可以供 Autoconf 使用的 Makefile.in文件。再配合使用 Autoconf产生的自动配置文件 configure 即可产生一份符合 GNU Makefile 惯例的 Makeifle 了。
需要的软件
在开始使用 Automake 之前,首先确认你的系统安装有如下软件:
1. GNU Automake
2. GNU Autoconf
3. GNU m4
4. perl
5. GNU Libtool (如果你需要产生 shared library)
好也使用 GNU C/C++ 编译器 、GNU Make 以及其它 GNU 的工具程序来作为开发的环境,这些工具都是属于 Open Source Software 不但免费而且功能强大。如果你是使用 Red Hat Linux 可以找到所有上述软件的 rpm 文件。
一个简单的例子
Automake 所产生的 Makefile 除了可以做到程序的编译和连接,也可以用来生成文档(如 manual page, info 文件等),还可以有把源码文件包装起来以供发布,所以程序源代码所存放的目录结构好符合GNU 的标准惯例,接下来用一个hello.c ?做为例子。
在工作目录下建立一个新的子目录devel,再在 devel 下建立一个"hello"' 的子目录,这个目录将
作为存放 hello这个程序及其相关文件的地方:
% mkdir devel;cd devel;mkdir hello;cd hello
用编辑器写一个hello.c文件,
#include <stdio.h>
int main(int argc, char** argv)
{
printf(“Hello, GNU!n”);
return 0;
}
接下来要用 Autoconf 及 Automake ?产生 Makefile 文件了