匿名CVS
目录
匿名CVS是一种保持本地OpenBSD代码树与当前OpenBSD代码树同步的方法。
除了可以获得目前OpenBSD最尖端的新技术, 它还可以用来获取发行版勘误表中的补丁。
与其它源代码更新技术相比, 匿名CVS的主要优势是可以直接通过核心源代码库或其镜像站点进行更新, 这意味着你可以使用全套的CVS命令来控制系统的整合、更新及执行比较。可在中心源代码库上针对不同历史版本的数据库进行查询。
目前的OpenBSD项目有四个不断更新的源代码库以及两个历史代码库:
- src - 存放OpenBSD操作系统的原有源代码。
- ports - 存放OpenBSD的Ports。
- www - 存放所有OpenBSD的web页面, (包含本页)。
- xenocara - 存放OpenBSD的不断更新的X.org v7源代码树。
- X11 and XF4 - 收藏着经OpenBSD改写的
XFree86-3 和 XFree86-4
源代码树。
这些代码树放在这里仅仅是为了展示OpenBSD历史, 绝大多数用户没有理由再使用这些代码树。
总而言之, 匿名CVS的真正魅力在于它是一个"宽容的"源代码控制系统 - 它尊重你对本地代码的修改并“尽可能”更新你的代码树, 而不是丢给你一个晦涩的错误清单, 让你不得不在继续前解决它们。
CVS 是一个源代码控制系统, 用来管理OpenBSD的源代码树。它保存着所有官方发行版及其变更的源代码资料库,同时允许开发人员可在其本地对资料库进行修正。
有两种访问源代码树的级别:
- 提供给开发者的可读写级别:
那些负责修正代码的开发人员必须有一个能修改源代码树的帐号。
拥有这种帐号的人可以和其他开发人员一起维护OpenBSD代码树。
如果你在某些地方做的很出色并得到了开发团队的认可, 你就可以获得这样的一个帐号。
- 提供给普通用户的只读级别:
任何人全可以只读地访问CVS仓库, CVS仓库的拷贝也常用这种方式镜像到其他的站点上。
CVS的强悍之处在于它可以智能地将中央代码仓库的变更与用户在本地所做的变更整合到一起, 这意味着你当你修改了一个系统组件后再进行升级或更新时, 你的修改不会被"覆盖", CVS会尽最大的可能整合代码树变化和用户自定义变化。
当源代码上的变化和用户自定义变化无法完全整合时, CVS提供一个"软着陆", 向本地拷贝提供注释的变化, 不修改你本地的变化而继续更新其它你请求的模块。
尽管你能从一个AnonCVS(CVS匿名服务器)下载整个代码树,
但是你通常可以通过"预装"FTP或OpenBSD发行版CD上的源文件建立原始的本地代码树来节省你大量的时间和带宽, 特别是在你要运行 -稳定版 时, 因为稳定版相对于发行版来说仅有少量文件进行了修改。
提取CD上的源代码树到 /usr/src (假设你已经将CD挂载到了/mnt):
# cd /usr/src
# tar xzf /mnt/src.tar.gz
# cd /usr
# tar xzf /mnt/xenocara.tar.gz
# tar xzf /mnt/ports.tar.gz
|
FTP上下载的的源文件被分成了两部分以满足那些仅需要其中一部分的用户, 这两个文件是 sys.tar.gz,
包含了产生内核的文件, 和 src.tar.gz 包含了所有其它的 "用户岛" 工具。
通常, 不管怎样, 这两个文件你都需要安装。
假设下载的文件 src.tar.gz、sys.tar.gz和xenocara.tar.gz位于 /usr:
# cd /usr/src
# tar xzf ../sys.tar.gz
# tar xzf ../src.tar.gz
# cd /usr
# tar xzf xenocara.tar.gz
# tar xzf ports.tar.gz
|
并非任何用户全希望解包全部的组件, 但是因为系统必须保持同步, 你需要建立所有的组件的代码树。
你也可以仅使用cvs(1)来为你"校验"源代码仓库。这将在 下一小节
进行讨论。
接下来, /usr/src 将会称为一个仔细校验过的目录, 在这个目录内可以使用所有的
cvs(1) 命令。
CVS是方便地重新获取或更新的本地源代码的一种方法。
你首先需要确定你是想将本地版本跟进为当前版或更新成稳定版。
当前版包含了所有代码最新的变动(甚至一分钟前刚更新的源代码),
相反稳定版仅包含了常规发行版加上勘误表上公布的补丁, 版本仅进行了少量的修正。想更深入的了解各种"风格"的OpenBSD, 看这里。
一旦你决定跟进为哪种版本, 你必须确定使用哪个匿名CVS服务器, 下面提供了一个CVS服务器清单。
一旦你选择好了匿名CVS服务器, 你就可以开始使用它了。购买了CD的用户可以用上述方法从CD上的文件获得本地代码树。
如果你没有CD, 请使用下面的方法获取你的代码树,
这个方法将OpenBSD源代码树导入 /usr/src。
# cd /usr; cvs checkout -P src
上面的命令将会获取当前版的源代码树。 读者当中的很多人可能想获得稳定版的源代码树。获取稳定版的分支你必须在命令后面加上一个版本描述标签, 例如:
# cd /usr; cvs checkout -P -rOPENBSD_4_4 src
或者用 OPENBSD_4_3 表示想获得OpenBSD 4.3的稳定版代码树。
这里的 OPENBSD_4_4 标签是指包含了发行版源代码树及其应用补丁的源代码。
请先看下面关于 ssh 和 rsh 的说明!
- CVSROOT=anoncvs@anoncvs.de.openbsd.org:/cvs
Location: University of Erlangen-Nuremberg, Erlangen, Germany.
Maintained by Alexander von Gernler.
Protocols: ssh, ssh port 2022, pserver.
Updated every 2 hours.
SSH fingerprints:
(RSA) 1024 fc:94:b0:c1:e5:b0:98:7c:58:43:99:76:97:ee:9f:b7
(DSA) 1024 a9:00:3f:ba:50:81:16:d1:e9:b8:4f:3c:b2:10:e2:6c
- CVSROOT=anoncvs@anoncvs1.usa.openbsd.org:/cvs
Host also known as anoncvs.usa.openbsd.org, anoncvs4.usa.openbsd.org.
Location: Redwood City, CA, USA.
Maintained by Todd C. Miller.
Protocols: rsh, ssh, ssh port 2022, pserver.
Updated every 2 hours.
SSH fingerprints:
(RSA1) 1024 64:de:26:16:c2:ff:1b:c7:24:ed:a4:4a:d7:2f:69:3e
(RSA) 1024 49:67:9a:46:62:8a:3f:4e:b3:63:ca:d6:41:29:2a:2f
(DSA) 1024 a7:75:49:77:f3:47:d1:3c:5e:65:84:84:3b:03:f1:33
- CVSROOT=anoncvs@anoncvs3.usa.openbsd.org:/cvs
Location: National Center for Atmospheric Research, Boulder, CO, USA.
Maintained by Todd C. Miller.
Protocols: rsh, ssh, ssh port 2022, pserver.
Updated every 2 hours.
SSH fingerprints:
(RSA1) 2048 80:cd:f6:fc:4f:0e:cb:80:6a:d0:6a:5e:dd:9e:5d:0a
(RSA) 2048 49:6f:4a:be:02:63:0d:c0:54:b0:57:f0:48:7f:ce:16
(DSA) 1024 f9:ab:fc:60:a3:15:8f:9c:47:24:9e:92:15:78:0d:f3
- CVSROOT=anoncvs@rt.fm:/cvs
Location: Lake in the Hills, IL, USA.
Maintained by Joshua Stein.
Protocols: ssh.
Updated every 3 hours.
SSH fingerprints:
(RSA) 1024 54:74:ca:17:d0:07:c3:53:b7:7e:1d:9b:10:bf:04:37
(DSA) 1024 46:78:40:52:7a:18:f9:0e:68:61:b0:27:29:f9:d9:c4
- CVSROOT=anoncvs@obsd.cec.mtu.edu:/cvs
Location: Michigan Technological University, Houghton, Michigan, USA.
Maintained by Chris Linn.
Protocols: ssh.
Updated every 2 hours.
SSH fingerprints:
(RSA1) 2048 d7:91:a2:f4:d2:8d:81:7f:3c:44:91:8f:b5:b9:46:48
(RSA) 2048 de:f1:09:85:a0:db:60:97:d4:95:0d:07:80:4e:ee:68
(DSA) 1024 78:05:5c:c7:ce:7e:6f:c8:6d:b7:e2:7e:ba:06:1c:40
- CVSROOT=anoncvs@anga.funkfeuer.at:/cvs
Location: Vienna, Austria.
Maintained by Martin Reindl.
Protocols: ssh, ssh port 2022.
Updated every 2 hours from anoncvs1.usa.openbsd.org.
SSH fingerprints:
(RSA) 2048 e4:a7:3a:ab:e1:a7:c8:eb:5c:f4:ff:38:95:6f:81:f2
(DSA) 2048 66:03:a3:bc:46:85:f3:6c:4b:6b:e3:d4:f5:5f:a6:c4
- CVSROOT=anoncvs@anoncvs1.ca.openbsd.org:/cvs
Host also known as anoncvs.ca.openbsd.org, openbsd.sunsite.ualberta.ca.
Location: Edmonton, Canada.
Maintained by Bob Beck.
Protocols: ssh, ssh port 2022.
Updated every 2 hours.
- CVSROOT=anoncvs@anoncvs.comstyle.com:/cvs
Location: Toronto, Canada.
Maintained by Brad Smith.
Protocols: ssh, ssh port 2022.
Updated every 2 hours.
- CVSROOT=anoncvs@anoncvs.estpak.ee:/OpenBSD
Location: Elion, Tallinn, Estonia.
Maintained by Rivo Nurges.
Protocols: ssh.
Updated every 2 hours from cvsync.de.openbsd.org.
SSH fingerprints:
(RSA) 1024 e1:12:fb:6b:e5:c0:6a:b3:f8:ca:b1:4c:20:fb:5e:07
(DSA) 1024 bb:5c:44:f4:d9:12:3b:22:08:a9:12:c5:0c:e7:db:49
- CVSROOT=anoncvs@anoncvs.skyrock.com:/cvs/openbsd
Location: Paris, France.
Maintained by Frank Denis.
Protocols: ssh, ssh port 2022.
Updated every 2 hours from anoncvs3.usa.openbsd.org.
SSH fingerprints:
(RSA1) 2048 4d:60:d8:ab:bc:c6:29:64:b4:45:1b:98:2b:fe:40:7e
(RSA) 2048 01:f1:c4:25:c8:e3:0d:0e:7a:33:94:14:f4:9d:98:5f
(DSA) 2048 73:36:41:46:fd:0a:67:df:e6:c1:4a:6b:02:61:f4:61
- CVSROOT=anoncvs@mirror.osn.de:/cvs
Location: Nürnberg, Germany.
Maintained by Armin Wolfermann.
Protocols: ssh.
Updated every 4 hours from anoncvs1.usa.openbsd.org.
SSH fingerprints:
(RSA) 1024 f2:73:d2:f6:e3:01:ef:ca:3b:e7:6c:80:b6:bd:bb:84
(DSA) 1024 fb:33:05:62:96:20:cf:88:7e:10:cb:8d:91:72:57:32
- CVSROOT=anoncvs@anoncvs.silihost.hu:/cvs
Location: Budapest, Hungary.
Maintained by Robert Nagy.
Protocols: ssh.
Updated every 3 hours from anoncvs.de.openbsd.org.
- CVSROOT=anoncvs@anoncvs.jp.openbsd.org:/cvs
Host also known as kankoromochi.econ.nagasaki-u.ac.jp.
Location: Nagasaki University, Faculty of Economics, Nagasaki, Japan.
Maintained by Suzuki Itoshi.
Protocols: ssh, pserver.
Updated every 3 hours.
- CVSROOT=anoncvs@anoncvs.openbsd.lt:/cvs
Location: TVK, Cable TV and Internet Services, Taurage, Lithuania.
Maintained by Donatas Budvytis.
Protocols: ssh.
Updated every 3 hours from cvsup.no.openbsd.org.
- CVSROOT=anoncvs@anoncvs.nl.openbsd.org:/cvs
Host also known as anoncvs.calyx.nl.
Location: Amsterdam, The Netherlands.
Protocols: ssh.
Updated every 3 hours.
- CVSROOT=anoncvs@anoncvs.no.openbsd.org:/cvs
Host also known as cvs.inet.no.
Location: Oslo, Norway.
Maintained by Michael Schuldman.
Protocols: ssh, ssh port 2022.
Updated every 4 hours from rsync.de.openbsd.org.
- CVSROOT=anoncvs@openbsd.chem.uw.edu.pl:/cvs
Location: Warsaw, Poland.
Maintained by Piotr Klein.
Protocols: ssh.
Updated every 3 hours.
- CVSROOT=anoncvs@anoncvs.obsd.si:/cvs
Host also known as nina.kerberos.si.
Location: Ljubljana, Slovenia.
Maintained by Mitja Muzenic.
Protocols: ssh.
Updated every 2 hours from cvsync.de.openbsd.org.
- CVSROOT=anoncvs@anoncvs.netbsd.se:/cvs
Location: Stockholm, Sweden.
Maintained by Viktor Holmlund.
Protocols: ssh.
Updated every 3 hours from rsync.de.openbsd.org.
- CVSROOT=anoncvs@mirror.sg.depaul.edu:/cvs
Location: DePaul University, Chicago, IL, USA.
Maintained by Eric Pancer.
Protocols: ssh, ssh port 2022, pserver.
Updated every 2 hours.
SSH fingerprints:
(RSA1) 1024 5b:1c:cb:b7:5f:82:82:cc:af:13:21:a4:2c:c2:55:6b
(RSA) 1024 18:0f:97:2a:cf:6c:7f:d4:ca:2b:bc:c8:b9:56:2b:86
(DSA) 1024 65:cb:ce:7c:3e:29:5c:82:0b:9d:fa:b7:bb:e0:4b:47
- CVSROOT=anoncvs@mirror.planetunix.net:/cvs
Location: CalPOP, Los Angeles, CA, USA.
Maintained by Brian Brombacher.
Protocols: ssh, ssh port 2022, pserver.
Updated every 3 hours from rt.fm.
SSH fingerprints:
(RSA1) 2048 e4:22:93:81:84:e0:68:8c:0b:d5:1f:78:cd:6f:fa:c3
(RSA) 2048 8f:42:bd:b0:a2:94:df:6b:af:1e:96:03:ea:68:03:d9
(DSA) 1024 26:51:e8:b3:38:88:dc:a8:2a:98:59:86:ab:40:bb:a4
- CVSROOT=anoncvs@anoncvs.nyc.openbsd.org:/cvs
Location: New York Internet, New York, NY, USA.
Maintained by Michael Shalayeff.
Protocols: rsh, ssh, ssh port 2022, pserver.
Updated every 2 hours.
SSH fingerprints:
(RSA1) 1024 ff:97:fc:34:c6:09:7f:b2:bd:31:4e:d5:51:ce:f3:44
(RSA) 1024 05:ac:be:be:f8:f6:ab:63:5e:80:6c:be:d3:31:41:cd
(DSA) 1024 89:be:38:4d:2a:1b:1a:db:93:65:9d:36:7f:ee:d2:76
- CVSROOT=anoncvs@openbsd.mirror.frontiernet.net:/cvs
Location: Frontier Communications, Rochester, NY, USA.
Maintained by jared r r spiegel.
Protocols: ssh.
Updated every 4 hours from anoncvs.ca.openbsd.org.
注意: 如果你的服务器信息有误, 请联系
beck@openbsd.org
你可能希望运行
traceroute(8)
来寻找理你最近的服务器。
如果一台服务器有问题, 你可以咨询他的维护者。
重要说明:
这里有一些每个人应该知道的有关加密软件的一些问题:
- OpenBSD的源代码来自加拿大。
因为通过加拿大独立研究
并根据
加拿大出口控制清单的描述,
OpenBSD可以发放到石阶上任何地方。
- 然而, 如果你不在美国或加拿大, 你不应该从位于美国的匿名CVS服务器上下载OpenBSD的源代码。有问题的文件是...
- src/kerberosIV/*
- src/kerberosV/*
- src/lib/libdes/*
- src/lib/libc/crypt/crypt.c
- src/lib/libc/crypt/morecrypt.c
- src/sys/crypto
- src/sys/netinet
- src/usr.sbin/afs/src/rxkad/*
- XF4/xc-mit/lib/Xdmcp/Wraphelp.c
- XF4/xc-old/lib/Xdmcp/Wraphelp.c
- XF4/xc/lib/Xdmcp/Wraphelp.c
因为根据美国政府的商业法规,
加密软件仅允许在加拿大或美国分发。
注意: 如果你想从一个分支(例如稳定版)更新到当前版, 你需要使用cvs时添加 -A
标签, 除此以外这个标签很少用到。 一些以往的OpenBSD文档在很多例子中使用了这个标签, 但是除非确实需要, 我们不再推荐使用此标签。
一个例子:
$ cd /tmp
$ cvs -d anoncvs@anoncvs.ca.openbsd.org:/cvs get src/sys/arch/sparc
[将CVS仓库上的文件拷贝到本地]
$ cd src/sys/arch/sparc
$ cvs log locore.s
[显示文件的提交信息]
$ cvs diff -bc -r1.1 -r1.5 locore.s
[显示版本1.1和1.5之间的变化]
为了使用一台cvs ``pserver'' (不使用ssh或rsh, 采用TCP直接连接) 你必须登录:
$ cvs -d :pserver:anoncvs@anoncvs.ca.openbsd.org:/cvs login
(Logging in to anoncvs@anoncvs1.ca.openbsd.org)
CVS password: anoncvs
[This writes a line to ~/.cvspass (filename over-ridden by CVS_PASSFILE).]
[An example line from my ~/.cvspass after typing 'blah' for the above ]
[password is: ]
[:pserver:anoncvs@anoncvs5.usa.openbsd.org:/cvs Au'yc ]
[After logging in ONCE every other use of the above CVSROOT will work. ]
$ cvs -d :pserver:anoncvs@anoncvs.ca.openbsd.org:/cvs get ksrc-i386 ksrc-common
[Allows you to retrieve ONLY that necessary to rebuild an i386 kernel. ]
这里是用户怎样通过匿名cvs服务器有规律地更新源代码树:
- 首先, 开始通过 `get'获取初始源代码树:
(如果你跟进当前版):
# cd /usr
# cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -P src
(如果你跟进4.4的稳定版):
# cd /usr
# cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -rOPENBSD_4_4 -P src
- 以后无论何时, 要`更新'这个代码树:
(如果你跟进当前):
# cd /usr/src
# cvs -q up -Pd
(如果你跟进4.4稳定版):
# cd /usr/src
# cvs -q up -rOPENBSD_4_4 -Pd
每次你运行时它将同步你的 /usr/src 树。 它不会损坏任何你修改过的本地设置, 而是将变化整合到你的系统内。
- 说明:
如果你想从另一台服务器上更新你的源代码树(不是你最初获得源代码树的服务器), 或者你最初是从CD建立的本地代码树, 你必须为cvs增加 -d anoncvs@anoncvs.ca.openbsd.org:/cvs 选项。
# cd /usr/src
# cvs -d anoncvs@anoncvs.ca.openbsd.org:/cvs -q up -Pd
更新ports, 和src类似:
-
(如果你跟进当前版):
# cd /usr
# cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -P ports
(如果你跟进4.4的稳定版):
# cd /usr
# cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -rOPENBSD_4_4 -P ports
- 以后无论何时, 要"更新"这个代码树:
(如果你跟进当前版):
# cd /usr/ports
# cvs -q up -Pd
(如果你跟进4.4的稳定版):
# cd /usr/ports
# cvs -q up -rOPENBSD_4_4 -Pd
上面的例子中, -q 标签是可选项, 目的仅是最小化cvs输出。 如果你希望欣赏满屏的输出,可以保留这个选项。
应用一个本地补丁模式的变化(这里用cd.c) 包含一个错误报告:
# cd /usr
# cvs diff -u src/sys/scsi/cd.c > /tmp/patch
cvs(1)用户手册
(包含了CVS原始资料) 包含了更详尽的信息。
警告:
使用cvs时你应该仔细选择你的当前目录,无论是你指定的代码树根目录或是一个单独的空间(例如/tmp).一些命令例如"get"可以在当前目录下建立任意的子目录, 以后的升级会递归地充实这些子目录。
匿名cvs服务给经验不足的开发人员提供了一个学习CVS操作的机会并且在获得"委托"访问前完全涉及程序的开发 -- 因为显示有用的技能和高质量的成果后他们自然会获得开发者访问权限。同时, 程序员提供的补丁相对于CVS树会产生它们的"diff", 这将方便整合。
CVS支持三种客户端到服务器访问方式:
- ssh: 也就是Secure Shell, 它可用于访问匿名CVS服务器,
这是推荐的方式, 因为它是加密的。
- rsh: 也就是Remote Shell, 它可用于访问某些CVS服务器, 主要是针对那些无法采用ssh方法访问服务器的用户。
- pserver: pserver主要用于那些位于阻碍双方连接的防火墙之后的用户。
注意: 对那些希望使用rsh的用户来说, 你必须先将CVS_RSH环境变量指向rsh(1)程序:
默认情况下, OpenBSD的CVS客户端使用ssh ("secure shell":
OpenSSH) 与CVS服务器交换信息。
很多的CVS站点基于安全的原因不再提供对 rsh 或 pserver 的支持。
用户本地的问题, 如防火墙或不完善的协议模拟(例如slirp)也可能阻碍你使用rsh。 但是, 如果你希望使用rsh, 你必须将CVS_RSH环境变量指向rsh
(一般是 /usr/bin/rsh)。
如果你的本地策略阻止出站连接使用ssh的默认22端口,
你可以尝试使用端口2022。 注意, 不管怎样说, 并非所有的匿名cvs服务器支持对2022的访问。 还有就是, 多数anoncvs服务器不再支持没有密码的访问, 因为在最近的ssh版本中因为安全原因已经禁用了此功能。 另外, 不要总想着开启ssh的压缩功能: CVS 已经压缩了。
用户可以在自己的目录
$HOME/.ssh/config 内进行下列配置文件的指定以避免上面提到的限制和缺陷:
Host anoncvs.ca.openbsd.org
Compression no
Port 2022
CVS启动时有些杂乱; 要使它安静一些你可以这样:
$ export CVS_CLIENT_PORT=-1
那些想自己镜像CVS树的用户现在可以通过 anoncvs.usa.openbsd.org 或者 anoncvs3.usa.openbsd.org
(它们是不同的机器)来实现。 注意这是cvs树,
不是用来获取源代码的代码树。 这仅在你想快速完成cvs操作(diff, annotate, 等) 或者你有多台计算机你想只从cvs服务器仅下载一次新数据时(你的其它计算机可以从本地的cvs镜像上获取代码树)。
一个supfile文件的简单例子:
cvs host=anoncvs.usa.openbsd.org hostbase=/ base=/home delete
这会将cvs树镜像到 /home/cvs 目录内,同时sup数据文件镜像到 /home/sup。 OpenBSD完整的cvs树大约3.5GB左右,自然它还在不断增加中。
如果你想建立一个匿名的镜像站点并向公众提供服务, 请联络anoncvs
维护人员。
匿名镜像需要大约3.5GB的磁盘空间(但还在增加中!),
并且要为每个用户提供32MB的交换空间(这里假设用户进行的是大型的操作; 尽管一般操作占用的资源会少一些, 但是anoncvs仍会比ftp或sup消耗更多的资源). 这样的anoncvs服务器应该对附近区域的用户来说有极好的网络带宽。 这个文档对如何建立anoncvs服务器进行了描述。
最终注意事项
升级完你的代码树, 你应该在尝试构建前先阅读 /usr/src/Makefile 文件头部的注释内容, 同时, 如果可能你应该在 make build 前先构建一个新的内核, 在某些情况下可能必须先rebuild和安装config工具你才能构建你的新内核, 如果 config GENERIC 这个步骤失败就极有可能属于这种情况。
强调一个重要的注意事项:通过rebuild源代码从发行版升级到当前版的代码树是很困难的, 因为各种软件的依赖包经常不明确, 因此, 我们建议你先安装一个最新的snapshot版后再从源码进行构建。
www@openbsd.org
$OpenBSD: anoncvs.html,v 1.295 2009/02/20 18:17:06 beck Exp $