You are on page 1of 109

卷首语

卷首语

“用起来”的开源教育

无论是哪一个产业,它的成熟都离不开市场和用户的成熟。对以 Linux 为代表的开源软件而言,


没有广大的用户支撑,这个产业也不会有很好的发展。而用户的成熟,显然与开源教育密不可分。
因为仅仅依靠一本书或一张 CD 接触开源的仅仅是个人爱好者,无法形成开源人才的系统和规模体系,
而政府和企业推出的开源培训或认证则是大量规范培养人才的好方法。

在我国,开源教育也发展了数年时间,我国政府和众多开源企业也一直在摸索一条适合我国开
源教育的道路,以企业为主导的“联盟”模式、政府联手的“1+1+1 工程”、以校园为基础的“浙
江模式”和综合推进的“广州经验”,这些探索为开源教育在我国的启蒙奠定了基础,提供了宝贵
的经验。然而,虽然模式众多,但开源人才与市场的需求仍然有着较大的差距。在最近于广州举行
的开源世界峰会上,红帽大中国区总裁胡伯林就表示开源人才匮乏,尤其是在考试认证上,我们比
印度落后很多。

2001 年,印度产业联盟(Confederation of India Industry)创立一个非盈利组织“Shiksha India”,


以便解决 65 万个村庄和 5 亿印度年轻人的在线教育(也叫“e-Learning”)问题。今年,印度总统为
Shiksha 的官方网站揭幕,真相终于大白,他们用的全是 Moodle、Drupal 和 MediaWiki 等开源软件平
台以及由瘦型计算机组建的电脑教室,通过使用这些开源软件培养年轻人对开源的兴趣,进而掌握
开源的技能。

Moodle、Drupal 和 MediaWiki 都是世界著名的开源教育软件,都是基于 LAMP 架构的开源应用,


而且,都是在社区推动下经过长时间逐渐发展、成熟起来的。Shiksha 敢于在全印度广大农村使用这
种“不起眼”的开源软件大搞全国性的开源教育,值得我们借鉴。

由此可见,开源教育的本质在于“用起来”,让学生去接触开源软件、了解开源软件、使用开
源软件,最后推广开源软件,这是一条从熟悉到认知,从掌握到拥有的一个过程。

www.linuxpk.com 投稿: opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》


卷首语

Java 是开源领域广泛使用的一种编程语言和架构,这几年 Java 培训一直很热门,除了 Sun 公司,


还有很多第三方培训机构在进行 Java 的培训。2006 年 11 月,Sun 将 Java 开源了,开源后的 Java 无
疑将得到更多人的使用,对于 Java 开源前后培训方面的变化,我曾经专门询问过 Sun 中国区首席教
育官张瓒,他表示:“Java 开源前的培训工作还是进行的不错,但那时有个特点就是培训的学生在
培训前对 Java 了解不多,我们的培训很多是从最基本的开始,加大了培训的难度。但 Java 开源后,
很多学生在培训前就使用过 Java,接触过 Java,对 Java 有了很直观的了解,对开源这个概念也有充
分的认识,在培训过程中能够很轻松的上手。同时,由于 Java 开源,学生对于好的实例都能看到其
源代码,这方面也能加强学生的自我学习。”

最后,张瓒感概到,培训的本质在于实践,只有充分的让学生动起手来,他们才能真正的学到
东西,但我们过去的很多开源教育正好忽略了实践的重要性。

而在一次中科红旗举办的首届“红旗杯”全国大学生开源软件技术竞赛上,我碰到了其培训经
理贺唯佳,他也表达了类似的看法:“我们在开源培训教育上做了很多的尝试,通过培养学生对开
源软件的兴趣,让他们投身到开源软件的应用当中来,这是最行之有效的一种手段,也是目前最适
合中国国情的开源教育。”

诚然,知识来源于实践,这个道理大家都明白。过去几年,我国的开源还处于起步阶段,一些
概念的推广、理念的普及是必须的,这在一定层面也扩大了开源的影响和人们对于开源的认知度,
这些工作是必不可少的。如果把过去开源理念的推广看作是“务虚”阶段,那我们现阶段的开源教
育必须走“务实”的道路,毕竟,如今的开源形式和几年前已经有着本质的区别,开源软件已经广
泛应用于各行各业,开源软件也得到了国际各大 IT 厂商的支持。在这么一个开源软件的应用时代,
“务虚”的开源教育显然将拖累整个产业的发展,人才的瓶颈将更大程度的约束开源软件的进步。
所以,“光说不练”、“纸上谈兵”的开源教育已经过时了,未来的开源教育将是“用起来”的开
源教育。

www.linuxpk.com 投稿: opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》


目录

目录

卷首语..................................................................................................................................................2
“用起来”的开源教育..............................................................................................................................2

产业聚焦..............................................................................................................................................8
《开源》第 4 期有奖评论获奖名单公布...................................................................................................8
联想奥运图案特别版 MID 产品运行 Linux..............................................................................................9
Ubuntu 呼吁各 Linux 发行版协调更新周期...........................................................................................10
Linux 销售借道微软.................................................................................................................................10
IBM 向中国捐赠 Sahana 开源减灾系统..................................................................................................11
胡柏林:中国 IT 人才考试落后于印度.....................................................................................................12
ZFS 可能将登陆 Linux.............................................................................................................................13
OLPC 前总裁与 Intel 谈判共推 Linux 系统...........................................................................................14
欧盟将调查微软开放源代码文件格式计划.............................................................................................15
SUN 完全开源 JavaFX 对抗微软 Silverlight..........................................................................................15
Adobe 宣布开放更多受限技术................................................................................................................16
云计算成软件厂商必争之地....................................................................................................................19
恣意翱翔在中国........................................................................................................................................21

博客文摘 ..........................................................................................................................................24
加快中国开源软件的发展........................................................................................................................24
“中国标准面临技术孤立”一说是谬论.................................................................................................29
自由软件:15 年伟大创新实践...............................................................................................................31

开源社区............................................................................................................................................33
项目动态....................................................................................................................................................33
地理空间信息技术自主创新与开源资源共进.........................................................................................41
开源空间信息软件体系概览....................................................................................................................43
开源再显空间信息魅力............................................................................................................................48
OSGeo 在中国...........................................................................................................................................56

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 合作邮箱:xiaoli@Linuxpk.com 《开源》


目录
知识学堂............................................................................................................................................60
GCC 精彩之旅(下)..............................................................................................................................60
Linux 配置、编译内核实用工具.............................................................................................................63
自由软件之“父”——Richard.M.Stallman.......................................................................................67

经验技巧............................................................................................................................................74
Linux 一句话精彩问答——系统配置篇(4)........................................................................................74
Linux 下玩转远程桌面.............................................................................................................................78
Linux 下 malloc/free 与 new/delete 的区别 ...........................................................................................85
在一个硬盘上安装两个 Linux 操作系统方法 .......................................................................................86
在 Linux 系统下使用 wine 运行迅雷 5 的方法 ......................................................................................87
apache cband 模板限制 IP 并发连接数和带宽.......................................................................................89

企业应用............................................................................................................................................91
LDAP 统一身份认证................................................................................................................................91
让 Linux 操作系统更加安全.......................................................................................................100

编读往来..........................................................................................................................................105

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 合作邮箱:xiaoli@Linuxpk.com 《开源》


产业聚集

产业聚焦

《开源》第 4 期有奖评论获奖名单公布

为了感谢开源爱好者对《开源》电子杂志的厚爱,在第 4 期杂志发布的同时,进行有奖评论活动,
结果公布于第 5 期杂志发布之时。

现将第 4 期《开源》电子杂志有奖评论名单公布如下,同时感谢 Intel、中科红旗的支持,请以下获奖


者通过站内短信(kennycx)或 Email(opensource@linuxpk.com)与我们取得联系。

Intel 电脑包:肥同小可、pedant、冰城大范、volans

红旗钥匙包:
abel6915、helloranee、hagjirui、gutentagswh、SHANSEN、n3090077
6、Megonlee、catandrat、myuqi88、fanxingrui

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 7


产业聚集

联想奥运图案特别版 MID 产品运行 Linux


上海举行的英特尔春季信息技术峰会上,英特尔的合作伙伴们
展示了 MID 移动互联网设备,总共有 20 多款。今天我们看到的是
联想 IdeaPad U8 和爱国者的 MID 产品。

根据介绍,联想 IdeaPad U8 移动互联设备采用了 4.8 英寸显示


屏,配置了将英特尔凌动处理器,频率为 800MHz。带有双摄像头,
分别是 200 万像素和
30 万像素,可用于拍照和视频。

联想 IdeaPad U8 移动互联网设备提供了 USB 接口,并


预装 linux 系统。集成蓝牙、GPS、触摸屏幕等功能。U8 的
重量在 300g 左右。

联想 IdeaPad U8 的背部绘制了奥运图案,联想方面透
露,IdeaPad U8 将在奥运会前上市。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 8


产业聚集

Ubuntu 呼吁各 Linux 发行版协调更新周期


今日,Mark Shuttleworth 在其博客上呼吁同步 Linux 发行版的发布。
Shuttleworth 说:“ 只有一件事能让我改变 Ubuntu 下个长期支持版的发
布日期:一个在大的/小的更新周期上与其它的大型发行版合作的机会。
如果三大发行版 Red Hat (RHEL),Novell (SLES)和 Debian 中的两位愿意
同意预先设定一个日期,联合 kernel、编译器、
toolchain、GNOME/KDE,X 和 OpenOffice,达成一个半年短期和 2-3 年
的长期更新周期,我将乐意调整 Ubuntu 的短期和长期发布计划以与之相
一致。我认为在用户、上游开发者、发行版中间形成一个联盟的好处是
巨大的。希望我的自由软件同步化的梦想能实现。”

Linux 销售借道微软

微软与 Linux 的关系,在竞争对手之外,加入了合作的新成分。

日前,微软与 Novell 公司一同,首次宣布将针对中国市场用户,加强双方的合作。“Windows 与


Linux 应该具有互操作性。我们可以在 Windows 上支持 SUSELinux,反之亦然。”微软中国公司董事长张
亚勤表示,双方的合作将能够为那些在混源 IT 环境下的用户提供互操作性并避免知识产权纠纷。而在此
之前,微软认为“中国市场上多数 Linux 缺乏具有系统规划的技术支持。”

据介绍,微软与 Novell 的合作始于两年前,Novell 总裁向他的一位加盟微软、并担任高层运营官的好


友提出一个问题:“为什么微软不能卖 linux?”貌似离奇的异想,经双方公司认真探讨后,确定了可能性,
并付诸实施。张亚勤透露,迄今为止,微软在此项合作中已投入超过 3 亿美元,资金主要用于产品的互
操作性研发层面。而从这样的合作中,双方表示,Novell 获得了市场占有率的提升,微软则在用户满意
度方面有更好的表现。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 9


产业聚集
“我们希望借此开创新的商业模式,希望微软与 Linux 能够和平共存、和谐发展。”张亚勤说。

此一新的模式现在首次被引入中国用户群。日前双方宣布的首批中国市场用户包括,中国人民保险公
司、DairyFarm 公司以及曙光三家用户。微软表示,将向上述三家用户提供包括技术支持服务的企业版
NovellSUSELinux。

IBM 向中国捐赠 Sahana 开源减灾系统


  IBM 向国家减灾中心、中民慈善捐助信息中心捐赠了 Sahana 减灾系统,用于帮助提高减灾救助的效
率。

  Sahana 减灾系统是一套开源软件,采用 GPL 授权,名字来自于斯里兰卡语的“减灾”。该系统主要


是灾难现场急救人员为主的管理系统,涉及失踪人员登记和管理,遇难人员登记和管理,避难所的管理,

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 10


产业聚集
志愿人员管理,援助需求管理, 基于地图信息的急救方案信息,物资库存管理,信息报告管理等。

  这套系统在 2005 年斯里兰卡海啸,2005 年巴基斯坦地震、2006 年菲律宾南莱特岛泥石流、2006 年


印度尼西亚 Yogjarkata 地震以及 2005 年美国飓风等重大灾害中发挥了重要的作用,有效提高了救灾和援
助的效率。

  而奇怪的是,在四川的志愿者反映,IBM 不肯给中文语言包。理由是怕出现多个衍生版本。

胡柏林:中国 IT 人才考试落后于印度
  5 月 22 日,广州国际信息产业周开源世界峰会今日召开,红帽大中国区总裁胡伯林参会并做了演讲,
演讲后胡伯林向记者表示,红帽已有增加雇员的计划。

  胡柏林表示,随着红帽业绩的增长,确有增加雇员的计划,红帽会注重从开源社区进行招聘。

  胡柏林还表示,在 IT 人才考试方面,中国落后印度很多,红帽将使用考试的形式进行招聘。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 11


产业聚集
  

在回答记者关于“目前中国开源人才是否难招聘”时,胡柏林表示,目前中国开源社区已吸引了很
多热衷的年轻人,今后红帽将注重以北京中关村为中心在开源社区招聘新的雇员。

胡伯林在演讲中表示,红帽目前雇员 2500 人,市值为 30 亿美元。胡柏林表示,红帽雇员相对较少的


原因是出于成本控制考虑,红帽将更注重“生态系统”的建设,更注重与其他公司建立的合作关系。

ZFS 可能将登陆 Linux

被视为终极文件系统的 ZFS 很长一段时间以来一直是 Linux


使用者梦寐以求的一项技术,但是由于 Sun 在 ZFS 上拥有 56 项专
利,只同意以 CDDL 开源方式移植,所以无法在使用 GPL 协议的
Linux 上直接实现。

不过,这种情况也许就要改变,近日,ZFS 的领导开发者

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 12


产业聚集
Jeff Bonwick 和 Linus 在家中见了面,喝了酒,Jeff Bonwick 最后对关注两人会晤的读者们表示“敬请期
待”。也许过不了多久 Linux 的使用者就不用再羡慕 FreeBSD 和 Mac OS X 了。

ZFS 是 Sun 公司 Jeff Bonwick 在领导开发的一种 128 位文件系统,最早宣布于 04 年 9 月,代


表"Zettabyte File System", 具有 18.4 × 10e18 倍于当前 64 位文件系统的储存能力,Bonwick 说要填满一个
128 位的文件系统,将耗尽地球上所有存储设备。除非拥有煮沸整个海洋的能量,不然不可能将其填满。

除了拥有近乎无限的储存能力,ZFS 还不同于传统文件系统需要驻留于单独设备或需要卷管理系统,
ZFS 建立在虚拟的存储池上。文件系统不再仅限于单个设备,从而可与池中的所有文件系统共享空间。
使用者不再需要预先确定文件系统的大小,因为文件系统会在分配给存储池的空间内自动增长。添加新
存储器后,也无需执行其他操作,池中的所有文件系统即可立即使用新增的空间。

另外,ZFS 是事务性文件系统,使用写复制(copy-on-write)语义,文件系统状态在磁盘上始终一致,
任何操作序列会全部被提交或全部被忽略。这意味着文件系统绝对不会因意外断电或系统崩溃而被损坏,
同时还避免了日志文件系统写两次的额外开销。

ZFS 还具有独特的校验、自我修复和快照等功能。

OLPC 前总裁与 Intel 谈判共推 Linux 系统


  据 CNET 网站 5 月 22 日报道,OLPC 组织推广廉价笔记本的努力已经被越来越多的公司接受。OLPC
前总裁沃尔特-本德(Walter Bender)日
前正在与英特尔等 4 家笔记本厂商谈判,
推广 Linux 系统。
  OLPC 组织在诞生之初其发展前景
并不明朗,然而该机构推出的 XO 廉价
笔记本近日却逐渐成为业界关注焦点。
  本德于上月从 OLPC 组织离职,并
成立开源软件公司蜜糖实验室(Sugar
Laboratories)。近日有消息称该公司正
在与 Pixel Qi 进行谈判,并且对于与英

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 13


产业聚集
特尔结为伙伴关系很有兴趣。
  本德没有透露其他几家正在谈判中的笔记本厂商的名字,不过他曾于上周在蜜糖实验室的网站上提
到华硕。
  OLPC 组织内部对于使用何种操作系统一直存在争议。上周,OLPC 创始人内格罗蓬特宣布 XO 笔记
本将开始采用 Windows Xp 操作系统,不过这种改变尚未开始。

欧盟将调查微软开放源代码文件格式计划
欧盟委员会(European Commission)近日公布,将对微软(Microsoft Corp., MSFT)的一项新计划展开调
查,看其是否能为消费者带来更多选择。该计划将允许微软用户利用微软竞争对手开发的文件格式保存
和编辑文件。
微软周三宣布将在该公司的 Office 程序套装当中支持开放文档格式(Open Document Format 简称:
ODF)。微软这一举措是对欧盟监管机构和其他各方所做出的让步,因为此前曾有多方抱怨称,微软拒绝
采纳 ODF 妨碍了在桌面软件方面的竞争。
欧盟委员会在一份公告中称,该委员会将调查微软所宣布的支持 ODF 的计划是否将带来更好的兼容
性以及是否允许消费者运用他们自行选择的软件产品来处理和交换文档。

SUN 完全开源 JavaFX 对抗微软 Silverlight


SUN 近日表示,作为 Adobe 的 Flash 和微软 Silverlight 的最终竞争对手,JavaFX 将完全开放源代码。
不过这些言论似乎与 SUN JavaFX 目前网页上的 FAQ 自相矛盾。
SUN 的 FAQ 常见问题解答页面显示:“正在开发中的 JavaFX 脚本语言得到了社区的协助,有部分
语法来自于开源社区,部分语言已经开源。但是,JavaFX 编译器,runtime 引擎,播放程序和工具目前不
会开放源代码”

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 14


产业聚集

Sun 发言人拒绝直接回应 FAQ 页面上出现的问题,但是声明 SUN 正在考虑修改这个页面,届时才会


透露出更多关于 JavaFX 开源
的详细信息。
“Sun 会在今年秋季公
布开源版的 JavaFX 战略,并
释放出第一版的 JavaFX 桌
面。”另外,包含 JavaFX 插
件的 NetBeans 已经开源,
Sun 甚至还开始了 OpenJFX
编译器项目。

Adobe 宣布开放更多受限技术
Adobe 在近日举办的 Open Screen Project 上宣布开放 Adobe 拥有的各自私有技术。
在此之前,Adobe 的 PDF 已是一种开放格式,针对 Flv 等格式的开放将对当前互联网的产生许多变数。
我们在 Linux 系统上,虽然可以享受到与其他平台差不多的 Flash 技术,但是这一直不完美。首先,在 64
位的系统上,Flash 播放一直存在问题。其 次,Flash 播放器的缺乏也让 Linux 环境的多媒体性打了折。
虽然 GNU 工程开始搞 Flash 的开源版本:Gnash,但是进展缓慢,效果也不尽人意。
而另一方面,作为一种开放的技术标准──PDF,在 Linux 下的应用却是十分丰富。浏览 PDF 文档自
然不在话下,而且多数应用程序直接支持输出 PDF,也有软件支持对 PDF 的二次编辑。
现在,这一现状似乎就要改变了。
Adobe 在 Open Screen Project 上,在无数 IT 巨头的支持下,宣布了以下四点:

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 15


产业聚集
1. 移除使用 SWF 和 FLV/F4V 格式的限制;
2. 公开 Adobe Flash Player 的设备移植层的 API;
3. 公开 Adobe Flash? Cast?和 AMF 协议;
4. 移除授权费:在设备上使用下一代 Adobe Flash Player 和 Adobe AIR 将无需支付费用。

对于一家生产软硬件的 IT 综合厂商来说,这无疑会让他们在开发和生产设备时节省相关费用,同时
也会拥有更大的自由度。
对于 Linux 及整个开源界说,前两项是他们最关注的。这意味着 SWF 和 FLV/F4V 已成为像 PDF 一样
的开放文档,开发者只要根据文档的规格,就可以开发出相应的播放器或相关应用。
可以预见的是,不久以后,Flash 的播放在 Linux 下会畅通无阻。

至于还会对整个业界产生什么其他效应,那只有拭目以待了!事实上,Adobe 这次的举动,不仅是为
了推广自己的 Flash 和 AIR,很大程度上是针对微软的 SilverLight 的。大家说呢?

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 16


产业聚集

云计算成软件厂商必争之地
随着 Sun 在刚刚举行的 2008 JavaOne 开发者大会上宣布推出“Hydrazine”计划,集结在“云计算”旗
帜之下的软件供应商又增加了一位重量级成员。基于“Hydrazine”计划,Sun 希望利用其核心技术打造一
个包含网络环境、数据中心和其他基础设施组件在内的完整解决方案,使得开发人员利用 Sun 平台创建
托管应用与服务,并由此获取经济利益。凭借此举,Sun 正式进军云计算领域,也由此展开了与 IBM、微
软、Google 等巨头的新一轮竞技。

作为一种基于互联网的超级计算模式,云计算的核心理念是构建一个虚拟计算与存储资源的集合,
并以此提供协同化的 IT 服务。随着 SOA 的普及和搜索、开放协作、社交网络等 Web 2.0 应用的高速成长,
云计算提出的创新共享基础架构方法开始得到了主流软件厂商的广泛认同。但虽然相关构想不断推出,
但直至 2007 年 11 月,IBM 发布包含具体产品的“蓝云”计划,“云计算”的关注热情才被真正点燃。

4 月 22 日,微软基于 Web 的 Live Mesh 平台的推出向业界表达了其争霸云计算江湖的雄心。微软


CTO Ray Ozzie 曾暗示,Live Mesh 将帮助微软成就从个人运算向网络运算的战略转折。在 Live Mesh 框架
中,数据中心被视作一个软件平台,可以提供远程控制、数据存储等多种服务,同样支持开发者在其上
开发新的网络应用。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 18


产业聚集

5 月,云计算在消费和企业领域的两个实践先驱——IBM 和 Google 宣布增强云计算合作,意图通过


强势联盟确保在这一领域的领先位置。双方计划扩大自 2007 年 10 月启动的云计算联合研究计划,Google
CEO 施密特表示,“企业云”的价值高于“消费云”是促成双方合作的动因,两家公司将共同拓展云在
商用领域的价值。

互联网方面,除了 Google 持续通过互联网向用户交付计算能力和服务外,Amazon.com 在 2007 年向


开发者开放了名为“弹性计算机云”的服务,为小型企业按需提供 Amazon 数据中心的处理能力。雅虎也
在 2007 年将一个小规模“云”开放给卡内基-梅隆大学的研究人员。2008 年 1 月,Salesforce.com 推出了
基于云计算架构的随需应变平台——DevForce,它可以帮助企业开发人员在虚拟环境中创建商业应用。

总之,2008 年是众多软件厂商“云计划”频出、相关产品密集发布的一年。这也意味着在这片未来
超级计算的乐土正酝酿着一场大争斗。随着各软件厂商云计算技术框架的不断完善,该领域的竞争将日
趋激烈,也会有更多参与者加入战团。面对云计算引领计算模式变革的能力,以及其实现超级计算资源
整合的结果,软件厂商们对这一领域的任何机会都不会轻言放弃。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 19


产业聚集
编者按:Ubuntu 8.04 的推出在开源界引起了强烈的反响,而作为创始人的 Mark Shuttleworth 再次成
为了风云人物。这篇文章是对 Mark 第二次来到中国的采访,在 Ubuntu 再次占据人们的眼球之际,让我
们再度重温下 Ubuntu 的软件哲学以及对中国的整体战略。

恣意翱翔在中国
陈杰

一个产生于太空中的美丽故事,一个来自于非洲古老土地的生涩词汇,一个感恩于人类的年轻富翁,
传递了一种“善待他人、与人分享”的沉甸甸的人文关怀。深邃的太空、神秘的非洲、年轻的富翁,几
个穿越时间空间的词汇构成了人类的 Linux——Ubuntu Linux。软件应该是免费的,世界各地的用户都应
能够用上以各自的语言为界面语言的软件,能力上的欠缺也不应该成为使用软件的障碍。此外,也应该

拥有按照个人需要任意定制和修改软件的自由,这是 Ubuntu Linux 所宣扬的软件哲学。在过去一年内,


Ubuntu Linux 凭借其优质的性能席卷了开源业界,在各大排行榜上高居榜首,其所传递的人文哲学精神也
随之深入人心,被世界各地的爱好者接受并扩散。今年 2 月,Ubuntu 的缔造者 Mark Shuttleworth 第一次
来到中国,将 Ubuntu 的福音带到了中国,并接受了本刊记者的专访。时隔 9 月,浩瀚的太空对其都只有
一次吸引力的 Mark Shuttleworth 却再次来到中国,是中国的什么如此惯性地吸引着这个年轻的梦想家?
是同样悠久灿烂的古文化?是日渐兴盛的开源浪潮?还是具有敏锐洞察力的 Mark 发现了中国的巨大商机,

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 20


产业聚集
来为其财富帝国添砖加瓦?带着种种疑问,记者再次采访了 Mark Shuttleworth。

中国吸引力

“两次访问中国是在我所访问的众多国家当中最有意义,感觉最为开心的两次访问。”Mark 毫不掩
饰其对中国的喜爱及流连。“我的两次访问都得到了中国政府的欢迎,我也看到了中国政府对计算机产
业,尤其对开源产业的高瞻远瞩及采取的一系列策略,所有的这一切成就了我两次愉悦的旅行。”
在谈到此行的目的之时,Mark 表示,Canonical 公司在亚太地区是有系统集成商的相关工作,需要在
亚太地区推广 Ubuntu,同时也希望在中国寻找主要的 PC 厂商,在 PC 上预装 Ubuntu。中国的很多 PC 厂
商是做出口业务的,并积极寻求国外的定单来到中国。我们希望在这个层面上能和一些 PC 厂商建立业务
上的合作关系,由我们提供一些国外的定单,PC 厂商做这些出口业务,并在此基础之上开展一系列的工
作。这次访问中国,会见了许多政府方面的官员,也得到了很多政府高层对开放源代码软件的支持,这
说明我们的想法是可行的,而且方向也是正确的。
Mark 同时表示,开发 Ubuntu 的费用非常低,IT 服务市场却非常大,我们在这样大的市场中只需要
一小块就可以实现盈利。我希望我们的未来是提供的免费的产品,通过服务形成可持续发展的商业模式。
我们的目的不是建设像微软、Oracle 那样的大公司,而是一个小公司,一个可持续发展的公司。
Ubuntu 软件本身是完全免费的,而主要通过服务的方式来盈利,这和很多开源厂商的做法是雷同的。
在给 Linux 现有格局带来一定冲击的同时,Ubuntu 也在探寻着自己的盈利模式,一个可持续发展的商业
模式,并且已经瞄准了中国巨大的 IT 市场,寻找着梦想与现实的结合点。

中国感知度

第二次来到中国的 Mark 对中国,对中国的开源产业都有了较全面的认识和自我的评价,“自由软件


和开放源代码软件在发展中国家,在发展中市场都是非常重要的,这尤其体现在教育和政府领域。现在,
商业软件和传统软件已经深入到了社会的各个层面,已经变的非常的强大,在这么一个情况下,自由软
件想要达到,甚至打败商业软件都是非常困难的。中国有非常好的政策和条例支持开放源代码软件的开
发和普及,但是只有政策和热情是远远不够的,还需要大量的资金投入,这种投资可以来自于个人,也
可以来自于政府。中国目前在具体的资金投入方面做得不是很好,如果中国政府和企业家意识到这一问
题,能够在自由软件上投入更多资金,我想中国将拥有更多的具有自主开发产权的自由软件。”相信随
着开源产业在我国的发展,政府和企业加强资金方面的投入,中国的开源产业也会随着 Mark 的预言掀开
崭新的一页。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 21


产业聚集
Ubuntu 在中国具有极高人气,Ubuntu 和 Mark Shuttleworth 在中国都拥有极高的关注度,尤其是在高
校,Mark 拥有众多的支持者,而 Ubuntu 也拥有极高的使用率。面对中国的高校学生,Mark 认为,
Ubuntu 优良的品质,能让高校学生掌握以后工作当中可能使用到的技能,而 Ubuntu 所宣扬的精神,也会
让高校学生形成正确的意识,善待身边的人,并乐于与人分享。Mark 希望在五年之内,中国学生能够从
大量下载自由软件,变成大量上传自由软件。因为只有这样,中国才能走到自由软件发展的前列。

中国本地化

鉴于 Ubuntu 在中国的号召力及在中国的迅速发展,赛迪集团于 8 月成立了赛迪 Ubuntu 实验室,用以


传递 Ubuntu 精神,普及 Ubuntu 知识,进行 Ubuntu 的本地化工作。对于赛迪 Ubuntu 实验室的成立,Mark
也表达了自己的看法,“参观这个实验室让我感到非常高兴,因为在此之前我在其他国家所看到的
Ubuntu 实验室,都是基于技术层面,但是这个实验室确实基于社会层面的,宣传 Ubuntu 的精神的。
Ubuntu 之所以有如此优良的品质,是因为 Ubuntu 有着一个十分有效、和善受欢迎的社区,Ubuntu 就像一
粒种子,将世界上所有热情的开源爱好者集中到了一起。赛迪集团不仅是一个媒体集团,旗下还有研究、
测试、评测和顾问等业务,相信 Ubuntu 实验室在赛迪的成立,将更好的宣传和普及 Ubuntu 在中国的应
用。”

采访手记:1 小时的采访时间根本不足以让 Mark 这个天生的梦想家向大家阐述其梦想的


历程,深邃的双眸、坚毅的眼神下不知还隐藏着多少个梦想,也不知离开浩瀚太空的 Mark
还会产生怎样的梦想。中国是一个尊重梦想的国度,开源运动的发展也为梦想提供了很好的
载体,相信随着我国开源运动的不断深入,梦想的传奇将不只属于来自南非的 Mark
Shuttleworth。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 22


博客文摘

博客文摘

加快中国开源软件的发展
中国开源软件推进联盟主席 陆首群

博客地址:http://www.lupaworld.com/16128/

开源软件发展概要

  著名的 IT 调查分析公司 Gartner 认为,许多开源技术是成熟的、稳定的,用户可以获得良好技术支持


的。到 2012 年,开源软件的技术因素将占全部商业软件的 80%,这时开源软件将在全球广泛应用。
Gartner 还认为,软件服务(SaaS)提供商将在操作系统、应用服务器和数据库层面上使用开源软件以降
低成本,这些应用将占 SaaS 提供商生态系统应用的 30%。

据“2008 开源软件商务会议”调研报告:未来 5 年开源软件的商业模式,即定购模式


(Subscrīption),将逐步取代传统软件的专业许可证销售模式,而成为一种主流模式。定购模式也与软
件服务(SaaS)提供商的商业模式是一致的。  

开源软件的兴起,日益改变世界软件产业的发展轨迹,也为中国软件产业的发展带来机遇。

  开源软件在互联网领域占优势地位;Linux 是国内外发展最快的一种操作系统,在服务器领域已成为
主流操作系统之一;在桌面领域可望在未来几年内出现一个发展拐点,并从此进入高速发展轨道;在移
动嵌入式领域(如手机、便携式 PC 或 Laptop、UMPC、MID 等),出现了惊人的增长。

  开源软件相对于传统软件其优势是安全、成本、灵活性,以及不完全依赖于软件提供商和其创新能
力强等五大因素。

  由于开源软件具有开放性的特点,以及在广泛进行国际交流合作的条件下,国内开源软件发展水平
迅速与国外先进水平接近;我们的差距主要表现在工程创新能力尚嫌不足,在掌握专有技术(Know
How)和工程经验方面还有一些欠缺。

  

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 23


博客文摘

国内开源软件发展的一些统计资料

  * 2007 年在中国市场,Linux 操作系统销售额比 2006 年增长 27%。

  * 2006 年开源数据库 MySQL(社区版)在中国的下载量为 250 万套,占全球下载量的 22.7%;中国


市场 MySQL(商业版)销售量为 800 套,占全球 0.7%,销售额为 800 万元。2007 年中国市场 MySQL
(商业版)销售量 1500 套,销售额为 1760 万元,年增长率 120%。

  * 开源浏览器 Firefox 近年来在全球市场占有率大幅上升,2007 年 Firefox2.0 为 19.98%,超过 IE7.0


的 18.76%(Firefox 共计 27.5%,Firefox3.0 即将推出,Firefox3.0 的安全性和内存占有率将有所改善,比
其他浏览器稳定);在中国 Firefox 市场占有率约为 3-5%(有很大的上升空间)。中日韩 OSS 论坛与
Mozilla 基金会合作,正在调研并着手解决 Firefox 上网访问的问题。

  * PHP(以及 Perl、Python、Ruby)编程语言,在 2005 年居全球倒数第四,2007 年有大幅提升,在


所统计的 175 个国家和地区中居中游位置。在今年 3 月 13 日“亚洲开源软件高峰论坛”上,COPU 主席
见证了 PHP(China)与 PHP(Japan)签订的合作协议,他们准备共同推动 PHP 在亚洲的普及工作。

  * Eclipse(开源开发环境或工具),对于 Eclipse JDT(Java 开发工具)的使用率,国内外大致都在 50-


60%左右。

  * 开源中间件(如 Apache、JBOSS、JonAs 等)在国内有一些应用,金碟开源中间件(Open Mask)


正在起步。

国内开源软件发展中的一些事例

  1.MID

  亚联开源软件技术公司(由中科红旗与日本 Miracle、韩国 Haansoft 合资成立的 Asianux)在 Intel 的


支持下,正式推出“面向移动互联网设备(MID)”的 Linux 操作系统(Midinux 2.0 平台),这是一个亮
点。

  由 Intel 提供参考硬件平台,由“亚联”开发 MID-嵌入式 Linux 操作系统,目前已发展联想、明基、


日立、爱国者四家 OEM 厂商(近期计划发展 16 家国内外 OEM 厂商)。Midinux2.0 提供了完善的软件开
发环境(SDK), 迄今已有通讯类、导航类、购物类、股票类、输入法、网络和多媒体类、办公软件类、
在线视频类等大量第三方的应用软件,移植到 Midinux 平台上来;在原有“桌面 Linux”驱动支持和 Intel

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 24


博客文摘
大量底层驱动支持的基础上,又增加了很多第三方企业的大量驱动支持,从而使 MID 的生态环境很快得
到不断完善。

  MID 产品是“下一代 PC”,低功耗,体积小巧,是可装在口袋中的上网终端,实现全新的应用体验,


问世以来很受欢迎;目前存在的问题是(1)国内外的无线网络尚待完善,(2)目前价格较贵(一台
MIT 软硬件总体价格约 500 美元,其中操作系统约 10 美元左右)。

  关于 MID 的国际合作,打开销路,吸引第三方开发,以及组建生态系统的经验,值得总结推广。

  2.龙梦 Linux PC

  在全球低价 PC(1000-2000 元/套)风起云涌之际,国内去年配龙芯 2E 的龙梦 Linux PC,生产 4000


套(桌面与笔记本各半);今年龙梦 Linux PC 接到 10 万套的大单,配龙芯 2 F,将生产定制界面的笔记
本与桌面计算机(8 寸屏),批量生产将在 10 万套以上。

  3.Linux 手机

  今年 2 月在北京召开的“Linux 开发者研讨会”上,国内外专家重点讨论了 Linux 手机和手机平台的


发展。随后,台湾地区对此进行了讨论(“开放手机平台论坛”),大家对“开放手机”的概念有高度
期许,希望新概念的出现将带来新的挑战,产生新的商机,大家也对“开放手机”和“开放平台”的具
体问题进行了深入的探讨。国内一些参加会议并正在开发智能手机的企业,也对此进行了深入研究,他
们认为开放手机和开放平台的概念很好,会上很多信息和观点很有价值,有人认为 Google 推出 Android
平台和 OHA 联盟是非常高明的做法和非常漂亮的商业运作,关键是 Google 要对这个软件平台保持后续
发展的控制权。有人提出了开源运动与企业开发如何做到无缝衔接,开源开发模式的 TCO 模型是否真正
省钱,如何将企业的工业开发流程和开源项目有机结合,什么样的开源项目是可以信赖的,以及有关开
源的应用策略,等等。

  4.开源社区

  开源社区是一种开放、透明的,分布式开发软件的社会组织形式,在开源社区中实行“集体开发、
合作创新、对等评估”的开发机制,被誉为当代最先进、最具创新能力、最有成效的一种开发机制和形
式。

  从近几年来国内涌现出来的 50 多个开源社区来分析,其中作出成效的约占 10%。有人认为,国内开


源社区缺少资金支持(如取得企业或基金会的资金支持),是社区活动缺乏活力的重要原因;国际一些
开源领袖主张国人直接参加国际开源社区的开发活动,认为不宜在本地自立门户。今年 2 月在北京召开
“Linux 开发者研讨会“之际,Linux 内核维护者、开发大师 Andrew Morton 谈到如何加入国际开源社区
进行开发工作时,谈了几个条件和步骤:

  1). 必须具有一个非常好的英语阅读和写作能力(注:几乎所有的开源社区是在西方社会诞生和活

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 25


博客文摘
动的,英语自然是在社区活动中相互交流的工作语言。其实 Andrew Morton 没有谈到,第一个条件应是必
须具有一定的专业水平和开发能力;而本条件应作为第二个条件提出)。

  2). 加入到社区后,要熟悉社区的环境(花大约 2-3 个月的时间)。当你下载最新的开源软件的版


本后,可能会发现一些缺陷或错误,这时要和社区内其他开发者进行交流,研究如何解决这个问题。

  3). 考虑你贡献什么。即你要做哪些原创性工作,发出哪些变更或补丁;然后在社区的“变更库”
里有你的名字和项目名称,人们可以搜索到你的名字和项目名称,可以看到你做了哪些工作。

  4). 等待审查。当你发出有关变更或补丁时,由社区高层进行测试、审查,你将等待审查结果。

  Andrew Morton 也曾谈到,有的公司的做法是扩展一群开发者,通过这种方式向社区申请加入并进行


开发工作。

  Red Hat、Novell、IBM、Intel 等公司均采取这样做法(成立 OTC 或 LTC),这种做法似乎更适合中


国的国情(以 R&D 小组的方式参与国际社区的开发)。事实上,这种做法在中国的一些社区中已开始起
步,关键在于进一步完善。

  5.国内开源市场

  国内开源市场,已从发展早期的政府、教育领域,逐步开拓了企业、银行、证券、保险、通信、邮
政、医疗、电力、石油、铁路、公安、航空等市场,商业零售市场也已起动(目前对消费者市场尚较少
介入)。

  采用 LAMP 开源架构(Open Source Stack)的应用解决方案,与由 IBM 主导的 J2EE 闭源架构


(Closed Source Stack)和由微软主导的.Net 闭源架构等应用解决方案,形成了三角鼎立、相互竞争的态
势。几年前,我们就提出了遵循用户需求,不同架构在相互竞争中也可相互合作、相互参插,形成一种
混源架构(Mixed Source Stack)的应用解决方案,这种设想也得到了 IBM、微软等公司的欢迎。

  6.互操作性

  在当代全球经济一体化的形势下,我们一直致力于推动制定和贯彻开放标准,以及实现异构信息系
统的互操作性(或兼容性)。

  在 ODF 被批准为国际标准,UOF 被批准为国家标准的情况下,对微软将自己的企业标准 OOXML 申


请为国际标准时,国内主流意见是反对的。

  当时国内开发了 ODF 与 UOF 之间的转换器(翻译器),国际上开发了 ODF 与 OOXML 的转换器,


国内有关单位与微软合作也开发了 UOF 与 OOXML 的转换器。

  随后,ISO 也批准 OOXML 为国际标准。ISO 成立了负责处理 OOXML 与 ODF 两个标准相互融合协


调的维护工作组,同时收集对 OOXML 编辑与技术缺陷的报告并研究相应的处置;微软也向 ISO 作出了

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 26


博客文摘
所有专利应在合理的非歧视条款下进行授权的承诺;ISO 将 OOXML 改名为 Open XML,定于 6 月初正式公
布。

  现在的问题是:在 ISO 主持下,微软的 Office 2007(.docs)所生成的电子文档没有通过 ISO 最近修改的


OOXML 兼容性(或符合性)的测试;ODF 或 Open XML 是文档底层的格式标准,解决文档存储的读写
问题,而对于办公套件(Office)的精确兼容,要解决在不同操作系统平台上应用程序的相互转换或移动
问题,这时需要解决格式兼容、内容兼容、版面兼容等全面兼容的问题,所以就是解决了格式兼容也未
必能解决版面兼容;所谓一些企业对中国作出了承诺:将促使 UOF 与 OOXML 或 ODF 在国际标准框架
内互相融合,看来只能是一句空话;像 Novell 与微软的“结盟”方式,事至今天,恐怕意义不大。当初
微软与 Novell“结盟”主要是共同开发一个转换器,以实现基于 Linux 的 Novell 版的办公套件可与基于
Windows 的微软的办公套件实行互操作,微软还将不追究 Novell 的 Linux 用户专利侵权问题,目前微软
似乎也向不“结盟”的其他 Linux 发行商同样开放了;至于说微软与 Novell 合作,为客户提供应用解决
方案,似乎结盟双方“同质业务”多,“互补业务”少,能否成气候,真难说!现在双方合作似乎在转
移方向:即所谓帮助中国的不被 Linux 发行商支持的 Linux 用户迁移到 SuSE Linux Enterprise 上来,以
获得 Novell 的支持和服务,这似乎是在宣传作“秀”。总之,要完成促进互操作性的课题还任重道远。

  微软已与一批开源企业“结盟”:Novell、Xen Source、Sugar
CRM、Xandros、Linspire、LG、Samsung、Zend、JBoss、TurboLinux(Japan),微软也想与中国的开源
企业合作,征询我的意见,我答复合作当然可以,关键看合作内容,对双方是否有利,也要考虑对开源
运动是否有利。

  互操作性与商业模式有关,其目的应是为了信息共享协同工作而不是为了控制市场。

  7.国际合作

  国际合作是推动开源运动向前发展的主要动力之一,中国开源运动的国际合作更具特色。

  中日韩、中法、中俄的开源论坛及开源项目的合作,具有官民结合的色彩;中美开源项目的合作以
民间为主,中国与欧盟在开源项目上也有合作。

中国开源软件推进联盟聘请 24 位国际开源领袖和资深专家为其顾问,吸收 22 家在国内有分支机构的


IT 跨国公司为联盟成员,自 2006 年起,每年召开“开源中国,开源世界”高峰论坛。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 27


博客文摘

“中国标准面临技术孤立”一说是谬论
中国工程院院士 倪光南

http://nign.vip.bokee.com/

倪光南说,开源软件已经是世界的潮流。三个问题,一个是开放标准,第二是开源软件,第三就是
讲政策。

开放标准还没有一个统一的定义。下面是其中之一:1、这个标准必须是公开可获得的。2、这个标
准必须是可自由地实施。标准中专利收费问题,开放标准怎么保证真正开放,原来所说的是不够的,因
为你不清楚你采用的标准是付出多大的代替。现在也有提出了“可预见低价许可”这是一个原则。另外
在软件和互联网领域,趋势就是将来在互联网和软件领域,基本上是免费的标准。这会越来越成为一个
趋势,至少在软件和互联网里面是这样的。互联网没有一个标准的收费,软件应该也会往这个趋势发展。
这是我们和国家的有关政策,比如中国、欧盟专利制度都不支持纯软件专利。

倪光南表示,开放标准的作用就是可以打破垄断的控制,因为中国是发展中国家,我们可以通过开
放标准,不需要付出高昂的专利费。IT 领域中国主导的一些开放标准:3G 通信的 TD-SCDMA 标准等等。
我们要掌握标准,不然所做的东西,价格都会是很低的。

倪光南还说:“我们认为中国可以做开放标准,就是因为中国的市场很大,中国的市场可以支撑标
准,现在很多人说中国推 TD 会造成‘技术孤立’,这是没有道理的。我们在 3G 方面,有很大用户,所
以我们推动标准是没有问题的。目前中国 UOF 可能成为中文文档格式的事实标准,同一文种文档只会有
一种格式,但不同文种的文档可有不同的格式,它们之间未来就需要翻译,转换是不可避免的。”

倪光南继续解释到,中国的市场,我们可以看到用户的数量很多都是世界第一,除了 PC 之外。这是
给推动开放标准很大支持。开源软件和开放标准两个之间很好地相融。

倪光南还结合各国相关政策,解释了如何与政策配合将开源软件推广的更好。倪光南表示,欧盟宣
布战略报告,就是推荐使用开源软件的报告,这对于很多国家来讲,是很好的例子。现在丹麦是走在前
面,去年年底,丹麦政府给 WTO 的 TBT 委员会一个报告,说明丹麦政府正在准备实施一项协议—“在
公共部门的软件中使用开放标准”。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 28


博客文摘
为了应对技术垄断,我国也向 WTO 提出议案——“标准化的知识产权问题”。大家要努力去争取,
推动开放标准在国际中的地位。中国的开源方面政策是从 1999 年开始支持开源软件的。国产厂商的开源
软件和发行版被视同国产软件。

中国的科技计划大力支持基于开源软件的各种基础软件。特别是最近《国家中长期科学和技术发展
规划纲要》,将基础软件纳入信息领域的“核心电子器件、高端通用芯片和基础软件”重大专项之中。
这也是为今后 15 年来,中国会支持开源软件的发展,开源软件在中国的发展开拓了新的道路。

中国应大力推广开放标准和开源软件,促进中国软件和信息服务业的发展,促进信息与工业化的融
合。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 29


博客文摘

自由软件:15 年伟大创新实践
袁萌

博客地址:http://blog.csdn.net/yuanmeng001

今天,2008 年的 5 月 1 日,我第一次使用 Ubuntu8.04 软件包写作和浏览,心情十分不一般。我的网


络和硬件环境完全和过去(昨天)一样,只是从 Ubuntu7.10 升级到 Ubuntu8.04 而已,但是,无论浏览网
页,还是进行写作,都明显感觉快多了。心里面,美滋滋的。

这一切,应该归功于誰昵?是“国产软件”吗?显然,不是。坦白地讲,Ubuntu8.04 软件包里面,
并没有什么“国产因素”。实际上,Ubuntu 软件包出自名为 Debian 的“Linux 发行版”,而 Debian 就是
大名鼎鼎的自由软件包。早在 1993 年 8 月 16 日,IanMurdock 首次提出软件“发行版”(纯粹由自由软件
组成)的概念。在现在看来,这是一个很了不起的大胆创新。在那时,自由软件都是随便传来传去,那
里有个什么“发行版”的说法?“发行版”(“Distribution”)必须是完全开放的(即符合所谓“GNU”精
神),而且要小心谨慎的维护,不得中断。这可不是一件小事情。人们经常发出疑问:这种“看似”公
益性的事业,能够持久下去吗?不是在做“白日梦”吧?于是,在这 15 年期间里面,不间断地有人提出
好心“建议”,即“Debian 商业化”。 Debian 发行版,起初就要考虑到升级的方便性。因为,自由软件
升级很快,要不然就死掉。所以,Debian 发明了一种“微包”技术,特别适合自由软件的没完没了“升
级”。一个软件包,分解为许多“微包”(考虑到它们彼此的内部关系),以便保证“微包”在升级时
的便利性。由此,Debian 发展出一批升级工具和管理“章程”,不间断地沿用至今。

Debian 发行版,具备很多特点,一是纯粹自由软件组成;二是便利于不断升级。但是,升级不快,
慢悠悠的,这是因为 Debian 领导班子决策速度太慢造成的。Debian 软件包的质量,堪称一流。2004 年年
初,MarkShuttleworth 针对 Debian 的这些缺点,发起 Ubuntu 计划,强调“定期发布”这一环节。Ubuntu
继承了 Debian 的优良传统,以“Ubuntu 哲学”(“善待他人”)为指导,发起“猛攻”,不到 4 年时间,
便夺得自由软件“发行版”世界第一的桂冠。我们可以说,Ubuntu 就是当代的 Debian 发行版。 人们总
是喜欢拿“老眼光”看新问题,Ubuntu 能不能持久搞下去?这要花多少钱啊?我们说,如果 Debian 能够
搞下去,Ubuntu 也能搞下去。

4 月 17 日,Debian 国际社区经过全球性的选举,产生了新一届领导人,SteveMcIntyre。他明确表示:

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 30


博客文摘
“Weare not looking for direct commercial fortune forDebian”(“我们并不期盼着一个直接的商业命运”)。这
句话,确实很厉害,击中了问题的要害。根据 Standish 集团的最新研究,自由软件是私有软件的“死对
头”,每年给全球私有软件(生态系统)造成 600 亿美元的经济损失,不亚于“盗版损失”。在这方面,
Ubuntu8.04 是“急先锋”。这就是说,我此刻所使用的办公软件包(Ubuntu8.04),全然不是现代商业软
件文明的产物,当然也不是“国产软件业”的产物。自由软件造福于全人类,当然,我们并不反对商业
软件也是造福人类的一种方式。Ubuntu 不会进入“纳斯达克”(上市),你能拿它怎么办?现今,
Ubuntu 已经“亮相”,表明了自己不仅是 Vista 的对手,而且也是一切私有“Linux 发行版”的竞争者,
(比如:红帽和 Novell,等等。私有“Linux 发行版”本身就是荒唐的东西。)

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 31


开源社区

开源社区

项目动态

开源编译器:GCC 4.2.4 发布

GNU 项目和 GCC 开发者很高兴的宣布 GCC 4.2.4 版本的发布。


这是一个错误修复版本,包含 GCC 4.2.2 中于早期 GCC 相关的回归错误的修复。
版本历史
GCC 4.2.4
May 19, 2008 (更改日志)
GCC 4.2.3
February 1, 2008 (更改日志)
GCC 4.2.2
October 7, 2007 (更改日志)

GCC 4.2.1
July 18, 2007 (更改日志)
GCC 4.2.0
May 13, 2007 (更改日志)参考和确认

GCC 曾经代表 GNU C 编译器,但是自从编译器支持一些除了 C 以外的语言,它现在代表 GNU 编译


器集合。
GCC 开发者们想要感谢众多捐助新功能、改进、bug 修复和其他更改和测试结果给 GCC 的人们。这
个惊人的志愿者团队就是 GCC 成功的原因。
查看关于 GCC 的附加信息,请访问 GCC 项目网站或者联系 GCC 开发者邮件列表。
要得到 GCC 请使用我们的镜像站点,GNU 镜像站点之一,或者我们的 SVN 服务器。
官方下载地址:ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.2.4/

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 32


开源社区

Firefox 3 正式版预计 6 月发布

Firefox 3 Final 很可能会在下个月发布。很多 Firefox fans 都已按耐不住,不断的到 Mozilla FTP 上寻


找这个重大的更新。“We're looking for final ship sometime in June”,Mozilla 工程副总裁 Mike Schroepfer
说。Mozilla 10 多年前从 AOL 脱离,开创 Firefox 编程项目。

我们正处在等待 add-ons 更新阶段”, Schroepfer 说:“我们期望发布多个 RC(预览版)以收集反馈


信息。”

可以预计,更多的 RC(release candidates)版将会发布。在 Firefox 2 中 Final 发布前,总共发布了 3


个 RC 版。Schroepfer 说:“我们现在状况很好,但是没有理由仓促而行。”

Schroepfer 青睐 Firefox 3 的哪 3 点呢?

第一:智能地址栏。可以通过输入地址自动从浏览历史记录中匹配,完成复杂网址的输入;

第二:性能和内存管理。Firefox 3 的性能是先前版本的 2-3 倍,是 IE7 的 10 多倍。“我们已经调整


了内存占用,即使开启很多窗口和标签,也不会占用过多内存。”

第三:antimalware 和 安全功能。我们告诉大家不要访问具有危害性的网站,合法的网站被接受。因
此我们在默认情况下拥有更好的保护。

让我们一起等待 Firefox 3 Final 的发布。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 33


开源社区

Fedora 9 (Sulphur) 发布摘要:引领潮流

美国东部时间 5 月 13 日,Fedora 社区正式发布了代号”硫磺”的发行版 Fedora 9 (Sulphur) 。

Fedora 9 代号”硫磺”,是因为硫磺在神话中可以用来驱逐狼人,而”狼人”恰好就是 Fedora 8 的


代号。

该版本有如下更新:

PackageKit : PackageKit 是一个跨发行版的包管


理系统,目前拥有完整的 yum 后端。该软件的目
标是统一所有发行版上的图形化包管理系统,所以
采用了一些最新的技术如 PolicyKit 和 D-Bus。

GNOME 2.22:GNOME 2.22 带来了诸多升级。


其中之一是由 Fedora 的开发者 AlexanderLarsson 完
成的 GVFS 和 GIO,它们被用来取代了陈旧的 GNOME VFS。 GVFS 提供了性能上提升,队列式多文件
传输,并协同 PolicyKit 提高了安全性。PolicyKit 同样由 Fedora 开发者 DavidZeuthen 开发并维护,并首
先于 Fedora 8 中引入。GNOME 2.22 还带来了样式新颖的世界时钟桌面小程序,可以同时显示不同时区
的时间和天气情况。另一个在该版本 GNOME 引入的变化是新设计的 GNOME 登陆管理器(GDM)。新功
能包括对登陆屏幕的电源管理支持,动态显示支持,以及对 PolicyKit 的整合。

KDE Desktop 4.0.3:KDE Desktop 4.0.3 将全部 KDE 核心组件升级到了 Qt4 接口上,从而引入了一
系列全新的框架:多媒体 API Phonon;硬件整合框架 Solid; 全新的桌面及面板 Plasma;整合式桌面搜
索;KWin 的混合特效和一个全新的视觉主题 Oxygen。在 Fedora 9 的生命周期里, KDE 将会持续得到
来自上游项目的补丁升级,最终 Fedora 9 将包括今年 7 月发布的 KDE 4.1。

NetworkManager :Fedora 开发者 Dan Williams 使 NetworkManager 变得比以前更加好用。 新功能


包括:多个设备的同时激活;方便与周围无限设备建立网络的 Ad-hoc 支持;支持通过 GSM/CDMA 手机
卡的 PPP 拨号以及 PolicyKit 的管理方式的支持。

Firefox 3 Beta 5: Firefox 3 Beta 5 带来了与当前桌面环境相一致的本地化视觉体验。其他改进包括整


合了历史和收藏夹功能的地址栏,改进的收藏夹管理器。同时,浏览器引擎 XULRunner 也与用户界面分
拆来,为其他有网页渲染需求的应用程序提供了一个独立于浏览器稳定接口。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 34


开源社区
SELinux : SELinux 现在可以将浏览器插件置于安全限定区域内执行,从而避免了由于不安全的浏览
器插件导致的安全问题。Fedora SELinux 开发者 DanielWalsh 在他的 blog post 对此有详细描述。

Java:OpenJDK6 这一由 Sun 在开放源代码协议下发行的 Sun Java SDK 将成为默认的 Java 开发环
境。极少的 OpenJDK 私有产权代码被来自 IcedTea 项目的代码取代。现在,更多的 Java 程序无需任何额
外设置就可以运行了。

Xorg 升级:X 的启动和关闭现在只需要大约一秒钟!同时还有更方便的显示配置,以及热拔插支持。


统一化辞典:现在,OpenOffice.org,Firefox,Thunderbird,GNOME 和 KDE 将共享同一个拼写检
查辞典,这项改进将大幅度减少资源及内存消耗。

蓝牙功能强化:用蓝牙发送、接受文件,以及通过 ODBX 访问周边蓝牙设备将更加简单。

Anaconda 安装器:Fedora 系统安装器,Anaconda,得到不少强化,其中包括:支持安装时调整


ext2,ext3 和 NTFS 分区大小;支持创建和安装加密文件系统; 对 ext4 文件系统的安装时支持(需要添
加 ext4 引导选项来启动该功能);支持 GRUB 在 EFI x86_64 设备上的原生安装;引入支持网络安装和系
统恢复功能的安装小镜像 netinst.iso 。

无缝升级:如果你已经安装了 Fedora 7 或 Fedora 8,现在可以通过图形化的 PreUpgrade 工具安全、


方便的升级到 Fedora 9。

永久性 USB Live 支持: 全新的 LivdCD 工具包支持将 LiveCD 镜像转化为自启动 U 盘 Live 系统,
并且不会丢失原先 U 盘上的数据。而且对 U 盘中 Live 系统的改变可以永久储存在预先定义的空间内。现
在,你可以将 Fedora 系统与文档随身携带,还可以对 Live 系统进行升级。同时,通过 liveusb-creator 也
可以在 Windows 系统下制作 Fedora Live U 盘了。

Jigdo 下载支持:Fedora 9 的镜像可以通过 jigdo 或者 jigsaw 下载。如果你所处地区有站点镜像或者


你自己还保存有先前版本的光盘镜像,使用该方法将大大节省下载光盘镜像所需流量。

FreeIPA: FreeIPA 提供了对 Fedora Directory Server,FreeRADIUS,MIT Kerberos,NTP 和 DNS 服


务的集中式的 Web 及命令行界面配置,它可以使网络管理员快速、方便的进行认证、确认、策略处理等
工作。

Upstart 进程管理:Fedora 9 使用 Upstart 进程管理取代了 System V 进程管理。这个变化帮助 Fedora


大幅度提升启动和关闭进程的速度。

系统级应用程序升级:包括 GCC 升级到 4.3,Perl 升级到 5.10,Kernel 升级到 2.6.25-rc5,以及用


TeXLive 取代了 Tex。

中文相关:默认中文字体包中增加了文泉驿正黑,默认包括了 scim-python,并用 scim-python-pinyin

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 35


开源社区
取代了原先的 scim-pinyin。默认的中文输入法启动按键为 Ctrl+Space。

NVIDIA 发布开源 2D 驱动 2.1.9

来自 NVIDIA 的开发者最近在 freedesktop.org 上发布了开源 2D 驱动”nv”的更新版本 2.1.9。而且透露


下一个私有闭源二进制驱动即将在一周后放出。

该版本相对于之前有如下变化:

增加了一个支持支持双头 DVI 显示的选项 AllowDualLinkModes。

增加了对更多 G80 系列 GPU 的支持。

尽管 NVIDIA 的私有二进制驱动比其竞争对手的 AMD 的要好不少,但是在开源驱动方面稍显落后


了。相比最近 AMD 和 VIA 相继公开驱动源代码的行动,NVIDIA 仅仅是放出一个不痛不痒的更新……

现自, 网上正在收集公众签名,希望能促使 NVIDIA 为开源的 “nv” 驱动多出些力,使 Linux 发


行版在基于 NVIDIA GPU 的系统上获得更好的 out-of-box 性能。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 36


开源社区
OpenOffice.org 3 Beta 版发布

将在 2008 年 9 月 2 日发布的大型自由软件:OpenOffice.org 3,如今已经发布了其 Beta 版。

在这个版本中,OpenOffice.org 进行了不少改进,同时大大增强了对 Mac OS X 的支持。

现在,如果是 Mac OS X 用户使用 OpenOffice.org 3 Beta,将能完全感受到一个原生的 Mac OS X 应用


程序。无论是安装还是使用,OpenOffice.org 3 Beta 都不再需要 X11 的支持。

跟其他 Mac OS X 应用程序一样,OpenOffice.org 3 Beta 非常美观,同时又不失强大。

此外,在这个版本中,OpenOffice.org 3 集成了 ODF 1.2,支持了 Microsoft Office 2007 导入过滤,新


的图表组件,新的图标和新的开始中心(Start Center)。它还增加了 VBA 宏的支持,真是无所不包,不
知道会不会把病毒也带来呢?

关于 Beta 版还有其他详细的说明,这里就不列举了,想进一步关注的朋友可以访问:

http://marketing.openoffice.org/3.0/featurelistbeta.html

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 37


开源社区
Slackware Linux 12.1 版本发布

在经过一段时间的测试之后,Slackware 12.1 于昨日正式发布。新版本对 RAID、LVM、cryptsetup


具有更佳的支持,并引入了支持 FTP、HTTP、NFS 的网络 installer,此外还包括 Xfce 4.4.2 和 KDE
3.5.9 两种桌面环境选择。

以下是 Slackware 12.1 的详细更改情况:

◆使用 Linux 内核 2.6.24.5;

◆系统二进制文件使用 glibc 2.7 链接;

◆使用 X.org 7.3.0+;

◆gcc-4.2.3 作为默认的 C、C++、Objective-C、Fortran-77/95、Ada 95 编译器;

◆支持 OpenSSL、OpenSSH、OpenVPN、GnuPG 等加密网络连接;

◆Apache (httpd) 2.2.8 Web 服务器包含动态共享对象、SSL、PHP 5.2.5 支持;

◆PCMCIA、CardBus、USB、IEE1394 (FireWire)、ACPI 支持;

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 38


开源社区
◆适合 Linux 2.6.x 的 udev 动态设备管理系统;

◆新的开发工具,包括 Perl 5.8.8、Python 2.5.2、Ruby 1.8.6-p114、Subversion


1.4.6、git-1.5.5、mercurial-1.0、Qt designer、KDevelop 等;

◆更新了 Slackware 包管理工具;

◆网络浏览器,包括 Konqueror 3.5.9、SeaMonkey 1.1.9、Firefox 2.0.0.14;

◆完整的 KDE 3.5.9 桌面环境:


pidgin-2.4.1、gimp-2.4.5、gkrellm-2.3.1、gxine-0.5.11、xchat-2.8.4、xsane-0.994、pan-0.132 等 GTK+ 程序;

◆额外的软件仓库支持

Slackware 12.1 可从下列地址获取:

ftp://slackware.osuosl.org/pub/slackware/slackware-12.1/

ftp://ftp.slackware.com/pub/slackware/slackware-12.1/

http://www.slackware.com/torrents/ (BT 下载)

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 39


开源社区

地理空间信息技术自主创新与开源资源共进
中国科学院地理所 周成虎 研究员

在知识经济与经济全球化的时代里,地理空间信息是现代社会的战略性信息资源,地理空间信息产
业已成为是现代知识经济的重要组成。在一般意义上,地理空间信息是指那些直接、间接与地理空间位
置的分布、时间的发展相关的自然、经济与人文等方面的物体、事实、事件、现象和过程的描述总和。
从专业角度讲,地理空间信息可以理解为标识地球表面上自然或构筑要素及境界地理位置和特性的信息,
包含了地理空间实体的空间特征信息和属性特征信息。他们可以通过各种方法获得,尤其是通过遥感、
制图和测量手段获得。随着地理信息系统建设的发展,社会各行各业对地理空间信息的旺盛需求,地理
空间信息的应用已经走向产业化,并形成了地理空间信息产业链。产业链的上游是“数据+技术”,也就
是遵从“技术—成果—产品—商品”的开发过程。地理空间信息的行业应用则处于中游,就是以业务需
求为牵引,实现数据与技术的集成。产业链的下游则是地理信息服务,包括营销服务、技术和软件的培
训和咨询服务,以及数据服务等等。处于中游的行业应用,在地理信息产业链中发挥着承上启下的重要
作用,在“数据+技术”的推动下,通过行业应用开发出来的“商品”需要在行业的需求中获得市场的拓
展,而地理信息服务则是“商品”在这个产业链中的延伸。因此,地理空间信息技术涵盖了地理空间信
息获取、处理与应用、现代服务等方方面面。

作为地理空间信息技术应用的重要平台,地理信息系统技术为解决与地理空间有关的应用提供了一
个统一的数据处理与应用平台。在世界范围内,一个以地理信息系统技术为核心、集成遥感、GPS 等技
术的体系,正在逐步形成一个新兴的产业,并积极推动着传统测绘、制图等产业向现代数字、知识经济
产业的发展。目前,全世界有关 GIS 的软件生产、技术服务、应用工程以及空间数据加工的总产值已经
达到 1000 亿美元左右,并且在以高达 20%的增长速度继续迅猛发展。据统计,我国目前已有专业从事
GIS 开发与咨询的公司超过 400 多家,年产值超过 20 亿人民币。其中,以国产 GIS 软件为基础的 GIS 企
业销售总量突破占 50%以上。在中小型 GIS 平台软件市场上,国产 GIS 软件的无论在销售数量还是在销
售金额上已经超过国外软件,成为国内市场最主要的一支力量。近两年国产中小型 GIS 平台软件商品销
售额均已经超过 3000 万元,处于稳定增长的态势。在应用市场方面,国产 GIS 软件占领了空间数据加工
生产的市场和桌面型专题图制作市场;在中小型土地利用、地籍管理领域和车辆导航领域,国产 GIS 软

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 40


开源社区
件已经基本占领了国内市场;在供、配电领域,国产软件已经占据一半以上的市场;在行政区域边界管
理与应用领域,国产软件占领了从中央到省市的全部市场;在电信、城市公用设施管理、广播电视、水
利、公安、公共交通和物流、运输等许多领域,国产软件也相当活跃,市场份额不断扩大,国产 GIS 软
件几乎已经渗透到所有的应用领域。因此同时,我们也面临巨大的挑战:国家级大型业务运行系统中,
自主技术的使用较少;核心技术和系统集成技术的掌握不足,难以进入国际竞争行列。

随着我国自主创新战略的推进和实施,地理空间信息技术创新已成为行业发展的战略举
措;调整战略布局,实现跨越发展,参与国际竞争,成为行业发展的关键战术。因此,充分
利用国际开源空间信息技术与资源,从底层入手,面向行业应用需求,则有可能实现我国地
理信息系统技术的跨越发展,突破核心关键技术的封锁,推进我国地理空间信息产业的新发
展。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 41


开源社区

开源空间信息软件体系概览
孙剑

所谓自由软件指允许任何人可以自由使用、复制、修改、分发的软件,但它不能保证免费获得的自
由。自由软件在分发/获得方面是双模式的,就是说,可以免费共享,也可以商业买卖。所谓开源软件指
软件的源代码(软件程序的原始文件)是对任何人都完全开放的,即任何人在有关许可协议方式的规范下,
具有获得、使用、复制、修改、分发源代码的自由,但为了保护初始源代码的完整性,有关许可协议规
定:原创者对源代码修改者的后续行为的自由有一定限制。自由软件和开源的软件具有广泛的共同点,
在一般情况下我们统称为“自由开源软件”;考虑到当今它们愈来愈广泛地参与务实的商业活动,我们
也可将共简称为“开源软件”。

国际地理空间开源基金会(以下简称为 OSGeo)中国中心于 2006 年 9 月 19 日在北京正式成立,这意


味着我们国人在开源空间信息软件发展方面走在了整个 IT 主流的最前面,参加会议的共创软件联盟副理
事长宫敏博士也称该基金会在中国中心设立分中心是在 IT 主流在高科技的专业领域的一个成功典范。

开源空间信息软件的发展虽然时间不长,仅仅二十年左右的时间,但仍然造就了如 GRASS、OSSIM
这样功能极为突出、性能异常优越,不亚于任何一款商业软件的标志性项目,更有如
WorldWind、MapGuide 等用户体验良好、方便用户使用的前端平台。截止到 2006 年 8 月 11 日,通过互联
网可以寻找到的开源空间信息软件项目已经达到 229 个(http://opensourcegis.org/),在最新的 freegis 项
目中已经可以寻找到的空间信息软件项目更是达到 306 个(http://www.freegis.org)。如此繁多的项目,
对于初学者,甚至对于空间信息领域的专家也很难以做到一览众山。因此本文将从宏观上,分别从开发
语言角度和专业应用角度来剖析目前国际最有影响力的若干个空间信息系统软件的特性,分析其内在脉
络以及联系,通过与部分商业软件架构的对比,希望可以的帮助读者从诸多开源空间信息软件中条理出
清晰的思路。

从开发语言角度看开源空间信息软件体系

从软件底层的开发语言角度上讲,开源空间信息软件可以被独立的分为以下三种技术体系门类,在
每种分类体系内部,开发人员往往是基于不同的项目交叉工作的,所以这种分法仅仅是方便了熟悉某种

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 42


开源社区
开发语言的程序员,对于用户和应用人员而言意义不大。

一、“C”派系的项目:

包括了 UMN
MapServer,GRASS,GDAL/OGR,OSSIM,Proj4,GEOS,PostGIS,QGIS,MapGuide OpenSource 以
及 OpenEV 等。“C”派系的项目还包括了使用 C 库的各类脚本语言的程序,包括 Python,Perl 以及 PHP
不同的语言。

二、“JAVA”派系的项目

主要是内核或前端平台由 JAVA 语言撰写的项目,包括了开发人员熟悉的


GeoTools,uDig,GeoServer,JavaTopologySuite,JUMP 以及 DeeGree 等。

三、“NET”派系的项目

NET 体系框架目前是微软公司最新的企业级体系,其驾御在 NET CLR 之上包括了 VB.NET,C+


+,C#等多种语言,众多的程序开发语言都是基于一套虚拟的设备完成工作和运转的,因此无论是用什么
语言撰写,只要符合 NET CLR 规范并基于其运行的程序我们都归为“NET”派系的项目范畴中。这其中
包括了 MonoGIS,,Appomattox,NetTopologySuite, GeoTools.NET 以及 SharpMap 等。

PostGIS/PostgreSQL 项目的标准原生接口 libpq(C/C++),PGSQL(C#语言撰写)和 JDBC(JAVA 语言


撰写)可以被各种派系的软件完成各类工作,因其主要的目的是完成软件之间的互操作。然而,因为
PostGIS/PostgreSQL 的内核是纯 C 语言撰写,同时依赖于多个基于 C 语言开发的 GIS 类库,所以将其归为
“C”派系也就、非常正常可信了。另外,比如 MapServer 软件可以被 JAVA 开发者广泛的使用,这是通过
使用 JNI 桥接技术实现的,目前通过 OGC 规范的 WMS 和 WFS 协议也可以完成类似的工作。

虽然以上三大派系可以覆盖绝大多数的项目,但从专业程序开发人员角度来看,另外仍然有许多工
程项目很难进入以上分类,这主要包括了各种各样的工具集以及 Web 服务,这类项目提供了 B/S 结构的
技术接口以访问空间 web 服务,类似制图服务等。

以上三个派系的项目中,有非常强的血缘关系,通过使用类似 JNI 等技术可以实现三种不同派系的项


目完成代码级或库级的重用或互操作,同时每个派系之间有很强的相似程度,例如 GEOS 是使用 C 开发
的遵循 OGC 规范的简单几何要素的操作算法集合,JTS 则是用 JAVA 语言,NTS 则是用 C#语言重写,三
者完成的工作基本都是一致的,因此作者将花费些话语重点描述“C”派系的项目,该派系的项目覆盖面
是最广也是最有代表性的。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 43


开源社区

“C”派系

C 派系是三大派系中的老大,最成熟也是拥有开发项目最多的。这与 C 语言本身的发展历史以及与
Unix 渊源分不开的,因为其语言的强大和优异性能已经吸引了大量活跃的开发社区和开发者个人。从下
面这幅图中我们可以大概的了解 C 派系中最有代表性的几个大型项目,其中灰色标志着该项目已经成为

图1

诸多其他项目的通用基础,比如空间数据格式的支持以及坐标投影转换功能,这点也是与空间信息与通
用软件项目的重要区别。

毫无疑问,灰色的三个项目是其他诸多项目的基础,也是作者需要特别需要说明的。

GDAL/OGR 类库目前是两个不同的组成模块,GDAL 提供了一整套读写不同栅格数据格式的功能的


抽象类库,而 OGR 则是一个读写诸多矢量数据格式功能的抽象类库。然而,因为历史的原因,两大类库
是用同样一个生成系统进行维护的,最重要的是 GDAL/OGR 的作者是同一人,该人目前也是 OSGeo 的
会长 Frank Warmerdam 先生,其在 OpenSource Geospatial 领域早已是大名鼎鼎。许多程序员都是拜读他的
代码理解空间信息软件精髓的。目前 GDAL 支持达 50 多种栅格数据格式,几乎覆盖了所有的商业应用软
件的格式,OGR 已经支持包括著名的 ESRI Shapefiles、ArcSDE 以及 MapInfo、Oracle 公司在内的诸多商
业公司的矢量格式。数据是一切软件的血液,空间信息产业更是如此,海量数据在空间信息软件行业体
现的最为明显,没有一套高效率的数据转换模型和类库很难完成异构数据的集成和融合,正是由了
GDAL/OGR,够建在其之上的各类空间信息软件项目才有了生命力。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 44


开源社区
Proj4 是一套开源的坐标投影转换类库,它可以完成在两套不同制图投影系统之间的转换,同样不同
的椭球体或大地基准面之间也可以成功的完成转换。Proj4 类库最早是由 Gerald Evenden 先生作为工具集
为美国地质调查局撰写的,目前依然是由 Frank Warmerdam 先生进行维护和管理,Evenden 依然活跃在邮
件列表中,尽管他已经不再写代码但仍然提供最新的数学投影模型。

GEOS 是“Geometry Engine, Open Source”的含义,其提供了 OGC 规范中简单几何要素对象操作的


C++语言的实现,详细的规范可以在 OGC 网站上找到(“Simple Features for SQL”),具体的实现方法里

图2

面都有所描述。 拓扑模型的计算方法简单但是一般来讲很难得以实现。GEOS/JTS/NTS 的算法则对


于所有的空间谓词都是非常强壮的,同时在空间操作方面也非常完善。

图中另有的 GRASS、OSSIM、MapGuide OpenSource、PostGIS 等项目有专文论述,本文不再增添笔


墨。

“JAVA”派系

在“JAVA”派系的世界中,许多独立的项目一开始都试图完成一整套体系结构的工具集合,例如
OpenMap,GeoTools 以及 deegree。

从专业应用角度看开源空间信息软件体系

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 45


开源社区
从专业应用角度来看开源空间信息软件体系,最好的方法就是对比已有的商业 GIS/RS 软件,通过对
比开源与商业软件模式,专业的应用人员可以很明确的了解到各个项目的特性,按照商业软件的惯性思
维考虑对开源软件的需求不失为一妙法。

通过以上两种角度对开源空间信息软件体系的概览,相信读者对于开源空间信息的软件体系结构能
够有个比较清晰的印象,诸多软件的特点以及在空间信息软件体系中的位置也应有了大概的了解,尽管
作者希望能够覆盖大部分项目的信息,但三百多个数量足够写一部非常厚的书,因此,具体每个项目的
详细介绍和应用范例,请参考具体的网址。

本文通过对诸多项目的介绍,最终的目的是希望读者清晰的了解哪些项目是自己的工程人员可以快
速掌握的,哪些项目是可以解决自己应用工程难题的,哪些项目是可以替代已有商业软件的。通过这种
对比和深入的思考,相信广大国内读者能对国际目前的开源空间信息技术有更加清晰的了解,并能亲身
参与其中,真正为开源空间信息软件事业作出自己应用的努力。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 46


开源社区

开源再显空间信息魅力
孙剑

地理空间信息开源界的顶级盛会 FOSS4G(Free and Open Soure software for Geospatial ,


http://www.foss4g2007.org/)今年 9 月底在加拿大落下帷幕,该会议由 OSGeo(Open Geospatial
Foundation)主办,得到了 Autodesk、Google、Leica 、ESRI、Safe 等业界著名公司的赞助,OGC 也大力
支持,超过 120 篇讲演和专题演示几乎涉及了所有开源 Geospatial 的项目,包括著名的
GRASS、OSSIM、PostGIS、Worldwind、GDAL/OGR、FDO 等均有专家做主题汇报。基于这些项目在地
理数据共享、互操作、无线通信、空间分析、嵌入式终端等方向上均有创新,许多想法和创意是非常值
得中国本土的 GIS 厂商学习和借鉴的。

国际地理空间开源基金会(OpenSouce Geospatial Foundation)2006 年初在美国芝加哥成立,基金会


的项目已从最初的 8 个项目,发展为满足 B/S 架构的前端地理信息渲染平台、各种地理空间中间件、涵盖
企业级地理空间计算平台等数十个门类的开源地理空间项目。是重要的开源地理空间信息技术的汇聚地。

目前开源世界已经日趋庞大,纳入 IT 的主流,国外 Linux, MySQL, Apache 等项目已经拥有很高的市


场份额,各大软件公司都有参与和介入,是当前信息产业的发展巨大推动力。在知识经济与经济全球化
的时代,资源环境与地理空间信息资源是是现代社会的战略性信息基础资源之一,地理空间信息产业已
成为现代知识经济的重要组成部分,开源地理空间信息技术的发展加速了地理空间信息技术的自主创新。
截止到 2007 年 11 月中旬,在地理空间信息开源界著名的 freegis 索引系统中可以以寻找到的开源地理空间
信息软件项目更是达到 325 个,项目繁多,条目烦琐,很多项目都是父子或叔父关系。

本文将积极吸纳 FOSS4G 2007 年会中最新开源项目的技术进展,首先横向上介绍开源地理空间信息


技术家族,进而从地理空间技术架构的角度,纵向上按照 GIS 客户端技术、开源桌面 GIS、开源组件
GIS、开源服务器端 GIS、开源空间数据库、等几个层级结合 FOSS4G 会议中比较有代表性的几个实际的
项目进行对比和分类,抽丝剥茧,调理出之中的关系;最后将部分项目与商业软件进行对比,以供广大
的技术爱好者和工程师参考。

开源地理空间信息技术家族

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 47


开源社区
图 1 是本文着重讲解的近 20 个项目,包括了
MapServer,GRASS,FDO、GDAL/OGR,OSSIM,Proj4,GEOS,PostGIS,QGIS,MapGuide
OpenSource 以及 MySQL 等均使用 C 或 C++语言撰写,由于基于 C 语言撰写的开源地理空间信息项目是
成熟也是拥有开发项目最多的。这与 C 语言本身的发展历史以及与 Unix 渊源分不开的,因为其语言的强
大和优异性能已经吸引了大量活跃的开发社区和开发者个人。

从下面这幅图中我们可以大概了解基于 C 语言撰写的最有代表性的几个大型项目的隶属关系,其中
灰色标志着该项目已经成为诸多其他项目的通用基础,比如空间数据格式的支持以及坐标投影转换功能,
这点也是与空间信息与通用软件项目的重要区别。

图 1 开源地理空间信息技术家族

开源桌面 GIS

GRASS 是最具有传奇色彩的大型 GIS 系统,最早美国军方建筑工程研究实验室构建余与维护,后来


贡献给开源社区,目前 GRASS 已经覆盖了大多数 GIS 系统的操作函数,超过 300 个究竟考验的算法,是
开源版的 ArcGIS。它是 UNIX 平台的第一个 GIS 软件,同其他 UNIX 软件一样,吸引了多家联邦机构、

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 48


开源社区
大学和公司的参与研发。1988 年时,GRASS 3.0 软件包的发行达 1000 余个。GRASS 软件曾经三次获得
美国联邦政府的有关奖项。目前广泛的在全球的政府,科研以及大学部门使用。最新的 6.3.1 版本的
GRASS 增加 Sqlit 数据库驱动,修改了包括 r.flow 等 40 个左右的算法包,修正了若干的 bug,对最新的
OGC WMS 规范也有了很良好的支持。

QGIS 也是一个用户界面友好的地理信息系统,它目前能够很好得支持 PostGIS 空间数据库,最新 0.9


版本的 QGIS 开始增加对 WMS 的支持,同时改进了矢量数据和属性数据的编辑,增加了属性信息的搜索。
最为重要的是其重构了 QGIS 的 API 库,方便用户可以进行二次开发,修改了矢量图层的透明和反锯齿,
增强了矢量数据编辑,这包括复制,剪切,黏贴和节点捕捉等。在去年的版本中 QGIS 可以很好的支持
GRASS 的算法接口,成为了 GRASS 的一个重要的前端表现工具,为 GRASS 的发扬起到了很好的推动作
用。

另外,由于 QGIS 基于 QT 跨平台类库开发,因此 QGIS 目前支持最为广泛的操作系统 Linux, Unix,


Mac OSX, and Windows,这一点是其他很多桌面地理信息系统软件所不可企及的。

今天 QGIS 全球已经有了 1209 个注册用户,超过 10 万行的源代码,已经广泛的被应用在政府、科研、


咨询等多个领域。已经成为一个通用的矢量和栅格数据格式的浏览器,可以编辑 SHP 和 PostGIS 数据图
层,可以作为一个前端工具操纵 GRASS 后台的模块和数据,可以基于 C++和 Python 进行二次开发。在即
将发布的 1.0 中,QGIS 将提供稳定的 API 接口提供给开发者,进一步增加其稳定性和用户体验,包括在
标注、布局以及制图,大数据量的处理以及可用性方面继续增强。

图 2 QGIS 的用户构成

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 49


开源社区
另外一个重要的桌面产品为 udig,在 2007 年改动不大,重点是更新了编辑和新建工具,为用户提供
了更加良好的用户体验,用户可以在数分钟内完成数据的处理工作。在其他方面也做了很多的细微的改
进和提高。

图 3 udig 软件界面

开源 GIS 客户端

OpenLayers(http://openlayers.org)是一套免费和开源的 Javascript 脚本库,提供给开发人员大量的工


具集,最早来自 MetaCarta 实验室,目前已经为多个开源项目服务。OpenLayers 可以非常容易的在任何
Web 页面中集成动态地图,同时支持地图分块和多类型数据加载。这套开放的脚本库支持 BSD 协议。

Worldkit(http://worldkit.org)是一套免费和开源的以 Flash 技术作为外壳的地图客户端,它可以非常

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 50


开源社区
方便的集成各种数据格式的地图数据。它不同于全部依赖脚本实现的 Openlayers 项目,它借助 Flash 跨浏
览器支持的能力,可以非常方便的在 Flash 的环境下完成地图的操作,同时 Flash 也可以很好的运行在移
动设备中。

Camptocamp 是苏黎世的一家基于开源技术的解决方案提供商,主要提供技术咨询和培训,它通过广
泛的调研发现在网络地理信息应用领域,在其最新的 CartoWeb4 中就积极吸纳了包括 DOJO,Python 等若
干开源技术,打造了最新产品的体系架构。

图 4 CW4 的体系架构

开源组件 GIS

MapWinGIS 在国内声音一直不多,但是其作为开源组件 GIS 项目的地位是不可撼动的。1998 年犹他


州州立大学 Daniel 博士在撰写其博士论文<基于贝叶斯评价网络的流域管理>论文的时发现当时 ESRI 公司
的商业 GIS 组件产品 MapObjects LT 在很多时候不能满足其工作需求,于是他基于微软的 COM 技术倡导
并研发了 MapWinGIS 组件,其期望该项目的研究成果可以成为开源地理空间软件界一个可以替代

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 51


开源社区
MapObjects 的产品,最终服务与科研人员。经过将近 7 年的发展,MapWinGIS 作为一个 ActiveX 控件可
以非常快捷的 VB,.NET 等编程语言和开发环境中完成基本地理信息系统功能的显示,查询,操作等基
本功能操作。

开源服务器端 GIS

MapGuide OpenSource(以下简称 MapGuide OS)是 Autodesk 公司在 MapGuide6.5 产品为蓝本的基础上,


参考最新 IT 技术的基础上重新研发的大型网络空间信息平台。Autodesk 公司已将包括 FDO 等技术的
MapGuide 源代码都贡献给了 OSGeo,在充分利用开源技术优势的同时,也促进了该项技术在全球范围内
的广泛使用。其商业版本—Autodesk MapGuide Enterprise 正是基于 MapGuide OpenSource 基础上开发的。
在充分利用开源社区创新能力的同时,该产品的愿景是成为基础设施市场上智能解决方案的领先平台,
可以基于此搭建适合在网络运行的地理空间门户网站或应用系统。

MapGuide OS 采用了标准的 C++撰写内核,在高效的内核外,项目的开发人员又增加了对


PHP,NET,Java 三种不同语言的开发包,以适应不同类型程序员的需求。这非常符合当前混元 IT 架构
的状况,MapGuide OS 可以在保证增加一个 API 的基础上,对三套不同的开发类库均适用。

2006 年年底 Bob Bray 先生被任命为 Autodesk 地理空间信息总架构师,同时他也担任 OSGeo 推动委


员会的主席。Bob Bray 先生多次宣称在今年的 MapGuide OS 的开发过程中,重点仍然放在产品的性能和
质量上,产品的功能将会更多的考虑市场对企业级功能需求,进而将对企业级的支持部分纳入到整个服
务器端的地理空间架构中来。同时他还多次讲到 Enterprise 和 OpenSource 版本的 MapGuide 将继续共享同
一套源代码库。

从刚刚正式发布 MapGuide 1.2 开始,其已经引入了 DM 公司的 Fusion 技术,该技术最早是一套服务


于网络地理空间信息的 SDK,包含了大量的工具和模板,其内核引擎和外部的工具集全部开源,几乎不
需要任何的程序开发,有良好的扩展性,功能接口相对独立,基于
HTML,CSS,Javascipt,JSON,XML 等工业标准规范搭建。从功能上来看,它可以弥补当前 MapGuide
OS 的诸多不足如灵活性不够,基于框架页面设计,很难以进行二次开发,非常困难修改页面布局等。今
年 10 月 15 日,基于 Fusion 技术的 Ajax 客户端已经更新完毕,在今年年底会增加对 OGC 规范支持的工具
包。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 52


开源社区

图 5 应用 Fusion 技术后的 MapGuide OS

开源空间数据库

相对于 Oracle,DB2,SQL Server 昂贵的价格和并不使用的功能而言,PostgreSQL 师从名门,开源界性


能最优秀的数据库软件当属 PostgreSQL 数据库,而构建在其上的空间对象扩展模块 PostGIS 则使得其成
为一个真正的大型空间数据库。PostGIS 是对象-关系型数据库系统 PostgreSQL 的一个扩展,PostGIS 提
供如下空间信息服务功能:空间对象,空间索引,空间操作函数和空间操作符。同时,PostGIS 遵循 OGC
的规范,是开源版的 Oracle Spatial、ArcSDE,目前绝大多数的开源地理信息软件平台都选择 PostGIS 作
为主要的空间数据库存储方案。

开源与商业数据库的比较了对空间存储和管理之外,基于 PostgreSQL 和 PostGIS 的 pgRouting 算法包,


则侧重于服务于路径分析功能,目前包括经典的 Dijstr,A*和 Shooting*算法,同时提供了对旅行商问题
的解决方案,以及行程距离的计算,针对城市中的单行线、红绿灯等问题都给于了强大的支持。

NASA 大气科学数据中心目前存档的各类影像和科研数据总量有大概 2 个 PB。当前,大气科学数据


中心正在使用一个 SGI 服务器上的 Informix Geodetic DataBlade 数据库存储这些影像和科研数据的空间元
数据,大气科学数据中心同时也提供了基于 Web 方式的查询功能。为了减少投资和购买,大气科学数据
中心采用 PostGIS 搭建了整个空间元数据查询系统,满足了系统的需求。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 53


开源社区

除了 Autodesk 之外,世界著名的 ESRI 公司也参与到开源地理空间技术中,其未来在 2008 年发布的


ArcGIS 9.3 中将增加对 PostgreSQL 8.2 版本的支持,这也会是商业地理信息系统软件与开源整合的又一实
例。

我们习惯在比较中分析问题,诸多的开源地理技术已经日趋成熟,很都的项目都已经完成了原型的
搭建,并拥有了一定优势,商业公司也看到了其创新性,并积极参与到开源的研发中。

最后,笔者将开源地理空间软件与商业的 SuperMap 系列软件进行大致对比中可以发现,目前开源软


件在功能上已经可以完成商业软件类似的功能。

图6

相对于安装方便,帮助文档齐全的国内用而言,开源软件对用户的要求非常高,用户往往需要要求
专家级的 GIS 基础概念,需要对多操作系统,多数据库,多少格式有所掌握,才能真正将开源地理空间
软件使用起来。短时间来看,目前国内使用开源地理空间软件的用户主要仍然是大学和科研院所。

对于行业用户而言,也许更关心是软件产品的可扩展性,良好的一致性以及稳定性等,从这点意义
上讲,目前地理空间技术发展迅猛,越来越多的行业和专家加入到研究和学习地理空间技术的行列中来,
相信开源地理空间技术会有更大更好的发展。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 54


开源社区

OSGeo 在中国

中国科学院地理所 陈荣国 孙剑

国际地理空间开源基金会(Open Source Geospatial Foundation,简称 OSGeo)成立于 2006 年 2 月。


OSGeo 基金会的使命是支持开源地理信息软件的开发以及推动其更广泛的使用,并对其支持的项目提供
组织、法律和财政上的支持,不断促进 OSGeo 基金会基于地理信息开放标准软件及其互操作技术的开发、
推广和普及。国际地理空间开源基金会同时也是一个独立的法人实体,基金会的成员可以贡献代码、资
金以及其他各类资源,他们的贡献将会非常安全的被用于维护公共利益。国际地理空间开源基金会同时
也是地理空间信息开源社区中一个积极的宣传和开拓进取的组织,其将提供一个通用的论坛并且分享一
个改进跨项目合作的一个基础平台。OSGeo 基金会已经在美国特拉华州注册为一个非赢利性组织,以确
保 OSGeo 基金会项目能不会因为个人志愿者参加开发而影响项目的持续发展。

OSGeo 基金会支持的软件项目包括 MapServer、GRASS、GDAL 等已迅速在国际开源地理信息领域


得到普及,包括 Autodesk、ERMapper 等著名公司都曾给予过资助。Autodesk 公司更是将其著名的网络地
理信息平台产品 MapGuide 重写后贡献给了 OSGeo 基金会,更有人预测 MapGuide Open Source 使业界的
同类产品相形逊色。OSGeo 基金会同时为开发人员提供了一个可以集成邮件管理、Wiki、讨论组、新闻
等多个模块的平台,方便世界各地的开发人员交流和沟通。另外,OSGeo 基金会也提供了空间数据共享
以及空间信息软件的教育、培训栏目,满足了政府、企事业单位、大学、科研单位等的需要。

近年来,与商用 GIS/RS 软件相比,开源空间信息软件(如 GRASS、GDAL、MapGuide 和 MapServer)


已具有相当竞争力。开源空间信息基金会(Open Source Geospatial Foundation, 简称 OSGeo)是一个全球性非
营利性组织,目标是支持全球性的合作,建立和推广高品质的空间信息开源软件。

OSGeo 中国中心是由国家遥感中心发起、Autodesk 中国有限公司协助,经 OSGeo 正式授权的非营利


性组织。中心依托在国家遥感中心,与 OSGeo 理事会紧密合作。OSGeo 中国中心的使命是支持开源地理
信息软件和遥感软件的开发以及推动其更广泛的应用,尤其是帮助中国地区的用户和开发者更好地使用
OSGeo 基金会提供的源代码、产品及服务。

OSGeo 中国中心设指导委员会、执行委员会和技术委员会等运行机构。各委员会的主要任务包括:

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 55


开源社区
(1)指导委员会

 作为 OSGeo 中国中心的官方代表,负责与 OSGeo 理事会、OSGeo 分支机构、中国政府部门和学


术团体等联络。

 负责制定 OSGeo 中国中心的规划和发展战略及招募 OSGeo 的参与者和支持者。

 负责 OSGeo 中国中心的财务管理,如预算申请、筹集资金、捐赠等。

(2)执行委员会

 创建和管理 OSGeo 中国中心官方网站( https://china.osgeo.org/),如每日更新,会议公告,研讨会和培训,


常问问题、通讯录和 Wiki。

 维护中国成员目录,为成员提供网络支持和就业机会。

 提升对开源空间信息系统解决方案的理解,并通过本地技术支持促进开源方案在教育、研究、工业、
政府和非盈利组织中的应用。

 鼓励本地开发者将成果贡献给 OSGeo 项目,或通过资金或实用性补助,鼓励本地开发者将其成果


开源。

图:左为 OSGeo 副主席 Michael P. Gerlek 先生,右为本文作者陈荣国研究员

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 56


开源社区

(3)技术委员会

 软件国际化与本土化。

 开发应用原型,为本地和本区域用户展示开源空间信息软件的强大功能。

 为适应本地和本区域的需求进行软件包装和客户化。

 用本地语言进行培训、支持并编写电子学习材料。

 支持开放的技术标准和对空间数据的开放使用。

OSGeo 中国中心的任务不限于上述几条,但其一切活动不应违背或破坏 OSGeo 的任务和目标。

大事记

1、2006 年 7 月上旬

中国科学院地理所陈荣国研究员与 Autodesk 中国有限公司负责人初次讨论国际地理空间开源基金会


(以下简称为 OSGeo)在中国发展可性行以及 OSGeo 中国中心的筹建工作。

2、2006 年 7 月中旬

Autodesk ISD 副总裁、OSGeo 副主席 Gary Lang 先生访华,并与中国科学院地理所陈荣国研究员、周


成虎研究员、国家遥感中心李加洪处长共同探讨 OSGeo 中国中心的筹建与发展。

3、2006 年 7 月下旬—2006 年 8 月中旬

中国科学院地理所陈荣国研究员当选为 OSGeo 副主席;

完成 http://china.osgeo.org, http://www.osgeo.org.cn 网站的初期内容。

4、2006 年 8 月下旬

陈荣国研究员组织 OSGeo 中国中心初始会员完成对 OSGeo 会议成立仪式、内容、讲演内容等各项事


宜的各项筹备。

5、2006 年 9 月 19 日

《地理空间开源基金会中国中心成立&开源空间信息软件战略研讨会》在北京外国专家大厦隆重召开,

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 57


开源社区
会议邀请到中国科学院遥感所童庆禧院士、OSGeo 副主席 Michael P. Gerlek 先生、中国科学院地理所刘纪
远所长、中国地理学会张国友秘书长、国家遥感中心李加洪处长、共创软件联盟副理事长宫敏博士等领
导、专家到场致辞,纷纷表达了对该基金会中国中心成立的美好祝愿。本次会议有《科学时报》《新华
网》等多家媒体给予关注,多家高校、科研、高科技公司负责人参加了会议。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 58


知识学堂

知识学堂

GCC 精彩之旅(下)
肖文鹏

上次介绍了 GCC 的编译过程、警告提示功能、库依赖、代码优化和程序调试六个方面的内容。这期


是最后的一部分内容。

加速

在将源代码变成可执行文件的过程中,需要经过许多中间步骤,包含预处理、编译、汇编和连接。
这些过程实际上是由不同的程序负责完成的。大多数情况下 GCC 可以为 Linux 程序员完成所有的后台工
作,自动调用相应程序进行处理。

这样做有一个很明显的缺点,就是 GCC 在处理每一个源文件时,最终都需要生成好几个临时文件才


能完成相应的工作,从而无形中导致处理速度变慢。例如,GCC 在处理一个源文件时,可能需要一个临
时文件来保存预处理的输出、一个临时文件来保存编译器的输出、一个临时文件来保存汇编器的输出,
而读写这些临时文件显然需要耗费一定的时间。当软件项目变得非常庞大的时候,花费在这上面的代价
可能会变得很沉重。

解决的办法是,使用 Linux 提供的一种更加高效的通信方式—管道。它可以用来同时连接两个程序,


其中一个程序的输出将被直接作为另一个程序的输入,这样就可以避免使用临时文件,但编译时却需要
消耗更多的内存。

在编译过程中使用管道是由 GCC 的-pipe 选项决定的。下面的这条命令就是借助 GCC 的管道功能来


提高编译速度的:

# gcc -pipe foo.c -o foo

在编译小型工程时使用管道,编译时间上的差异可能还不是很明显,但在源代码非常多的大型工程
中,差异将变得非常明显。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 59


知识学堂

文件扩展名

在使用 GCC 的过程中,用户对一些常用的扩展名一定要熟悉,并知道其含义。为了方便大家学习使


用 GCC,在此将这些扩展名罗列如下:

.c C 原始程序;

.C C++原始程序;

.cc C++原始程序;

.cxx C++原始程序;

.m Objective-C 原始程序;

.i 已经过预处理的 C 原始程序;

.ii 已经过预处理之 C++原始程序;

.s 组合语言原始程序;

.S 组合语言原始程序;

.h 预处理文件(标头文件);

.o 目标文件;

.a 存档文件。

GCC 常用选项

GCC 作为 Linux 下 C/C++重要的编译环境,功能强大,编译选项繁多。为了方便大家日后编译方便,


在此将常用的选项及说明罗列出来如下:

-c 通知 GCC 取消链接步骤,即编译源码并在最后生成目标文件;

-Dmacro 定义指定的宏,使它能够通过源码中的#ifdef 进行检验;

-E 不经过编译预处理程序的输出而输送至标准输出;

-g3 获得有关调试程序的详细信息,它不能与-o 选项联合使用;

-Idirectory 在包含文件搜索路径的起点处添加指定目录;

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 60


知识学堂

-llibrary 提示链接程序在创建最终可执行文件时包含指定的库;

-O、-O2、-O3 将优化状态打开,该选项不能与-g 选项联合使用;

-S 要求编译程序生成来自源代码的汇编程序输出;

-v 启动所有警报;

-Wall 在发生警报时取消编译操作,即将警报看作是错误;

-Werror 在发生警报时取消编译操作,即把报警当作是错误;

-w 禁止所有的报警。

小结

GCC 是在 Linux 下开发程序时必须掌握的工具之一。本文对 GCC 做了一个简要的介绍,主要讲述了


如何使用 GCC 编译程序、产生警告信息、调试程序和加快 GCC 的编译速度。对所有希望早日跨入 Linux
开发者行列的人来说,GCC 就是成为一名优秀的 Linux 程序员的起跑线。

  

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 61


知识学堂

Linux 配置、编译内核实用工具
配置与编译内核用到的工具很多,在这里只对几个关键工具进行介绍,更多的内容请参考相关手册。

Make

Make 是一种帮助大型软件工程的编译工作实现自动化的编程语言。正确地使用 Make 可以大大减少


因编译程序而花费的时间,因为它可以消除不必要的再编译。Make 的基本设计思想是如果目标文件是在
最近一次对源文件的修改之后编译的,它就是“新的”,不需要重新编译;如果最近一次对源文件的修
改之后没有及时更新目标文件,那么该目标文件就是“旧的”,需要重新编译。为了理解 Make 如何执行
一个任务,需要了解一些术语:

◆目标 需要执行的一个任务。多数情况下它就是用户要生成的文件的名字,但是它也可以仅是个任务的
名字。

◆依赖关系 两个目标之间相互依存的关系。如果修改目标 B 会造成目标 A 的修改,那么就说目标 A 依赖


于目标 B,B 是 A 的先决条件。

◆变量 一种存储临时信息的载体。Make 中使用的变量应该加上括号,例如$(TEMP)。

◆命令 执行任务时使用的指令,可以是一条、多条,甚至没有。

◆规则 一条完整的规则具有以下格式:

目标(target) : 先决条件(prerequisites)

规则(command)

......

其中只有目标必须要有,其它成分可以没有。一条完整的规则描述了编译一个目标的方法和依赖关
系,是 Makefile 中最重要的部分。

◆Makefile 文件 描述如何生成一个或多个目标的文件。它列出目标依赖的各个文件,并提供正确编译这
些目标所需要的规则。

接下来以 2.4.23 的 kbuild 为例,简要介绍一下内核的构建过程。首先,完整的内核构建过程由以下五


种 Makefile 封装。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 62


知识学堂
1.根目录 Makefile

它是最重要的 Makefile,定义所有与体系结构无关的变量和目标。它读取.config 文件,并根据其信息


最终生成 vmlinux 和 modules。Make 通过向下递归调用子目录中的 Makefile 来编译这两个目标。

2.配置文件.config

执行“make <config_opt>”会在根目录下生成该配置文件,其内容记录了具体的配置选择,也可以将
旧内核的配置文件放在这里。

3.arch/*/Makefile

这是与特定体系结构相关的 Makefile。它包含在根目录下的 Makefile 中,为 kbuild 提供体系结构的特


定信息。

4.子目录 Makefiles

它们存在于每个子目录下,大约有几百个。它们接受来自上层 Make 传递下来的信息,并根据这些信


息来构造一个需要编译的文件列表,并交由 Rules.make 处理。

5.Rules.make

几乎每个子目录 Makefile 都包含该 Makefile。根据子目录 Makefiles 构建的文件列表,Make 使用


Rules.make 定义的通用规则来编译所有来自列表的源文件。

kbuild 的执行过程是:Make 从根目录 Makefile 开始执行,从中获得与体系结构无关的变量和依赖关


系,并同时从 arch/*/Makefile 中获得体系特定的变量等信息,这些信息扩展了根目录 Makefile 提供的变量。
此时 kbuild 已经拥有构建内核需要的所有变量和目标。然后,Make 进入子目录,把部分变量传递给子目
录 Makefile。子目录 Makefile 根据配置信息决定编译哪些源文件,从而构建出一个需要编译的文件列表。
最后,Rules.make 根据其定义的编译规则决定这些文件的编译方式。

需要注意的是,由于 Make 的向下递归特性和无序性,其执行过程并不完全遵守顺序逐行执行的规则,


但无论 Make 的执行有多复杂,也只分为两个阶段。第一个阶段 Make 会读取所有变量和分析所有目标的
依赖关系,并最终建立一棵依赖关系树。同时,所有的立即型变量(通过“:=”赋值)在这个过程中被
扩展,就像 C 变量一样。而在这个阶段的最后,所有的延迟型变量才被扩展(通过“=”赋值)。这点
需要格外注意。第二个阶段 Make 会根据依赖关系树执行命令。

因此,一个目标和其先决条件的规则定义的顺序是无所谓的,很可能一个目标的先决条件的规则定
义在百行以后才出现。Make 会耐心读完所有的 Makefile 后分析得出依赖关系树。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 63


知识学堂

GCC

GCC 是 GNU 的免费编译程序,也是内核惟一指定使用的编译器。GCC 在执行一个完整的编译任务


时会经过以下步骤:

◆预处理 GCC 会调用 cpp 程序来分析各种宏指令,如#define、#if、#include 等。

◆编译 这一阶段根据输入文件产生汇编语言指令。由于通常情况下是立即调用汇编程序 as,所以输出一


般不保存在文件中,可以使用-S 选项强制输出源程序的汇编版本。

◆汇编 这一阶段将汇编语言源程序作为输入,生成.o 目标文件。

◆链接 这是最后一个阶段。该阶段中,各个.o 模块被链接在一起构成可执行文件。

as

用户可以明确地要求使用 as 来直接处理汇编文件。as 产生的目标文件可以分为文本段(.text)、数


据段(.data)和未初始化数据段(.bss)。

ld

与 as 相似,用户可以明确地要求使用 ld 链接程序将几个模块组合成一个单独的可执行文件。其链接
过程通常由一个叫 ld 链接脚本的文件来描述。该脚本使用 Linker Command Language 编写。使用“ld
--verose”命令可以看到这个默认使用的 ld 链接脚本。

ar

ar 是 GNU 的二进制文件处理程序,用于创建、修改及从归档文件中抽取文件。由它生成的.a 归档文


件实际上是一个包含许多可执行二进制代码子程序集合的库文件。

RPMBuild

使用“make rpm”可以把内核源代码制作成 RPM 包。在此之前,kbuild 会执行“make spec”生成


rpmbuild 程序用到的 spec 文件,详见“man rpmbuild”。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 64


知识学堂

中间件

根目录 scripts 下的各种脚本和 C 源文件都可以称作中间件。它们并不是内核组件的一部分,只是在


kbuild 执行过程中的辅助程序。以 split-include 为例,讲述配置文件的运作机理。

.config 由关键字/值对组成,其内容类似于:

CONFIG_MPENTIUMIII=y
# CONFIG_MPENTIUM4 is not set
CONFIG_REISERFS_FS=m
这些信息在执行“make <config_opt>”时自动生成。同时 include/linux/autoconf.h 依照.config 的内容生
成。它的格式类似于:

#define CONFIG_MPENTIUMIII 1
#undef CONFIG_MPENTIUM4
#undef CONFIG_REISERFS_FS
#define CONFIG_REISERFS_FS_MODULE 1

对比一下不难发现,include/linux/autoconf.h 明确地洞悉了.config 的意图:哪些组件不编译,哪些需


要编译进内核,而哪些又要作为模块来编译?split-include 根据 include/linux/autoconf.h 在 include/config/下
建立相关的目录和.h 文件。每个.h 文件只包括 include/linux/autoconf.h 中的某一行,比如在配置内核选项
时支持 NTFS 文件系统,并把它编译进内核,在.config 中就会生成“CONFIG_NTFS_FS=y”,相应地在
include/linux/autoconf.h 中会生成“#define CONFIG_NTFS_FS 1”一项。这样,所有与 NTFS 文件系统相关
的 C 源文件都会包含 include/config/ntfs/fs.h 头文件。

如果以前编译过内核,并且没有使用过“make mrproper”,.config、include/linux/autoconf.h 和 include/


linux/config/就不会被删除。这里涉及到新旧内核的配置问题。一个全新的内核代码是未经配置的。如果
只在原内核的功能基础上增加对 NTFS 的支持,那么从头开始配置无疑是浪费时间。可以继续使用原内核
的.config 文件,而所有的配置信息不会有任何更改,并且可以直接在原配置的基础上增加新功能。

在复杂的情况下,保留的旧内核配置信息还要与新的配置信息进行比较:哪些旧信息需要覆盖,哪
些需要保留?下面来看一下几种可能的情况:

旧值保存在 include/config/下的.h 文件中,新值保存在新生成的 include/linux/autoconf.h 文件中。split-


include 的代码不仅描述了如何处理这五种情况,还描述了 include/config/下文件和子目录的生成过程。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 65


知识学堂

自由软件之“父”——
Richard.M.Stallman
宋威

Richard Stallman 是自由软件运动的领袖,是 GNU 计划及自由软件基金会 FSF(Free Software


Foundation)的创立者。他为自由软件运动竖立了道德框架,被许多人誉为当今自由软件的斗士、伟大的
理想主义者,但同时也有人批评他过于固执、观点落伍。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 66


知识学堂

“叫我 RMS”

1953 年,Richard Stallman 出生于美国纽约曼哈顿地区。1969 年,16 岁的 Stallman 在 IBM 纽约科学


中心第一次接触到了电脑,并从此与之结下了不解之缘。1971 年,他进入哈佛大学学习。同年,一次偶
然的机会使得他受聘于麻省理工学院(MIT)人工智能实验室,专业从事软件开发工作,并且一直在那里
工作了 10 多年。

当时,人工智能实验室使用一个 ITS(不兼容分时系统)分时操作系统。开发人员用汇编语言为
Digital 的 PDP-10 计算机设计和编写程序,Stallman 的工作就是改进系统。当时,自由拷贝和源代码开放
是整个计算机业的软件开发和传播模式。那时软件是鼓励自由拷贝的,如果你看到别人使用一种你没见
过且有意思的软件,就可以向他索要程序,这样你就可以读它、修改它,或者拆卸部分用于新的程序。
可以说,正是这种自由,造就了很多成功的软件,如 Pascal、Lisp、Unix 等。

然而,进入 20 世纪 80 年代后,计算机的商业化和软件专有化席卷了整个产业。好多有才能的 MIT


程序员投入了市场的怀抱。这大大伤了 MIT 人工智能实验室的元气。一个相互协作、彼此交流的社区就

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 67


知识学堂
这样被禁止了。Richard Stallman 感到一个时代结束了。

“随着社区的终结,我面临着一个道德上的抉择。最简单的就是投身于专有软件世界之中,签署不
公开协议,并承诺不帮助同行、同事。我自己也很可能编写软件,并在不公开协议的前提下发布软件,
去同流合污,迫使更多的人背叛自己的原则。显然,走这条路可以挣大钱,而且使编写代码的工作增添
一份金钱上的快乐。但是我知道,等到自己职业生涯终结时,我再回首这些年为分离人类而砌造的‘墙
壁’,我会感受到我将自己的一生都用在使这个世界变得更加糟糕。”Stallman 如是说。

另一个选择很直截了当,但令人不愉快,那就是从此离开计算机领域。“这样我的技能不会被滥用,
但也将被浪费,我不会因为分化和限制计算机用户而感到有罪,但这些事情会继续发生。”Richard
Stallman 说:“因此,我开始寻找一条出路,使程序员可以做真正的好事。我问自己,我能写什么软件?
我能否让社区重焕生机?”

1983 年,Stallman 曾写下了如下一段自传:“1971 年我到了 MIT 的人工智能实验室。我的爱好包括


交友、各国民间舞蹈、飞行、烹饪、物理、录像、双关语、科幻小说,当然还有编程。而我正是靠最后
一样爱好来维生。一年前,我与相伴 10 年的‘老友’——PDP-10 分手了。虽然我们仍然‘相爱’,但这
个世界却让我们不得不分道扬镳。在这段时间里,我仍然住在麻省的剑桥。在我的记忆里,Richard
Stallman 是我的俗名,人们可以叫我 RMS。”

虽然这个世界让他与“老友不得不分开”,但 Stallman 仍然在继续奋斗,仍然在“麻省的剑桥”,


并大胆地宣布“Richard Stallman 是我的俗名”,从此开始了他长期的、不屈服于世俗的、勇敢的战斗。

GNU 计划和自由软件基金会诞生

1983 年,Richard Stallman 在 net.unix-wizards 新闻组上公开发起 GNU 计划,宣布它的目标是创建一


套完全自由的操作系统,并附带一份《GNU 宣言》。在该宣言中,Stallman 声称发起该计划的一个重要
理由是要“重现当年软件界合作互助的团结精神”。 GNU 是“GNU's Not Unix”的递归缩写,Stallman 宣
布 GNU 应当发音为 Guh-NOO,以避免与 new 这个单词混淆(注 Gnu 在英文中原意为非洲牛羚,发音与
new 相同)。

1984 年 1 月,Stallman 辞去了 MIT 的工作。他担心 MIT 会要求产品的所有权,会给产品强加入自己


的销售条件,最终又会成为专有软件。

对于他来说,首先需要的是一个操作系统,这是开始使用计算机的关键软件。有了自由操作系统,
就能再次组建一个相互合作的自由社区,而且任何人使用自由软件都不必剥夺他/她与朋友家人的共享权
利。 作为一名操作系统的开发人员,Stallman 无疑最胜任。“虽然我没有认为自己一定能成功,但我意

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 68


知识学堂
识到自己就是命中注定要做这项工作的。” 他选择做一个与 Unix 兼容的操作系统,这样容易被移植,
而且 Unix 用户可以方便地转移过来。

一开始,GNU 计划只有他一个人。当他发现自己原来在人工智能实验室的办公室还没有分给其他人
用时,就每天晚上溜进去工作。久而久之,白天他也跑去用实验室里的电脑。当时,人工智能实验室主
任 Patrick H. Winston 并不干涉。因为他始终不把 Stallman 的辞职当真,只要 Stallman 能创造些好东西给
大家用,实在没有必要打发走这位老同事。因此,他爽快地答应 Stallman 可以继续使用实验室的设备。
从此,Stallman 就成了特殊的一员。

GNU 计划采用了部分当时已经可自由使用的软件,例如 TeX 排版系统和 X-Window 视窗系统等。工


程启动后,Stallman 听到有一个自由的编译器套件。他去信询问能否用入 GNU。答复是嘲弄式的,说对
大学是自由的,但软件本身不行。于是,他决定为 GUN 编写的第一个软件就是能跨平台的编译器。由于
C 语言是使用最多的开发语言,而且是 Unix 的开发语言,所以,他决定首先写一个 C 的编译器,并命名
为 GCC。

1984 年 9 月,Richard Stallman 开始写 GUN Emacs。到 1985 年初,GUN Emacs 已经可以工作了,使
用它可以用 Unix 系统进行编辑。此时,人们开始想使用 Emacs,但如何传播它?当然,他将其放到了
MIT 的匿名服务器上。但那时互联网还未普及,人们很难通过 FTP 获得拷贝,而失业的 Stallman 也需要
收入。于是,他宣布任何人都可以用 150 美元的价格获得该程序。自由软件的分销商业模式就此诞生。
目前已有几百种 Emacs 的副程序,可用在 50 多种电脑上,从微电脑到 Cray 的超级电脑都可用 Emacs。

为防止不法厂商利用自由软件,使其专有化,Richard Stallman 还别出心裁与一群律师起草了广为使


用的 GNU 通用公共协议证书(GNU General Public License, GNU GPL),创造了 Copyleft 的授权办法。
所有的 GNU 程序遵循一种“Copyleft”原则,即可以拷贝、可以修改、可以出售,但有一条就是源代码所
有的改进和修改必须向每个用户公开,所有用户都可以获得改动后的源码。它保证了自由软件传播的延
续性。

由于 Emacs 的成功,Richard Stallman 设立了自由软件基金会(Free Software Foundation Inc.,简称


FSF)。FSF 致力于消除对计算机程序复制、分发、理解和修改方面的限制。凡是捐助 FSF 和 GNU 计划
的厂商,也可享有减税的优待。单单 1989 年,FSF 就收到了 267782 美元的捐助,基金会也因出售 GNU
程序手册和电脑磁带而赚了 330377 美元。

此时,Stallman 也不再天天溜回人工智能实验室“借”用电脑,因为许多厂家已为 FSF 提供一大堆的


高性能工作站等硬件设备,包括 HP、Thinking Machine、SONY、贝尔实验室等。也有一些厂商捐赠现金,
并把技术人员送到 FSF 来向 Stallman 学习,而且支付 FSF 成员的薪水。

FSF 就用这些钱来养起 14 位基金会成员:9 位程序设计师和 3 位负责撰写技术资料。虽然 Richard

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 69


知识学堂
Stallman 自己不支薪,但他不能期望他的同仁也和他一样看得开,饿着肚子为理想奋斗。FSF 的程序设计
师一年也只有 25000 美元的薪水,这也只是在一般厂商工作薪水的一半或三分之一。Stallman 之所以以低
薪待人,原因就是可多请几位志同道合的合作者,为理想而工作。

Linux 应该称为“GNU/Linux”

GNU 激励了许许多多年轻的软件开发者,一些商业公司也开始介入开发和技术支持。其中最著名的
就是之后被 Red Hat 兼并的 Cygnus Solutions,他们编写了除操作系统内核 Hurd 以外的大量自由软件。

尽管 GNU 的计划是建立一个完整的自由软件世界,但是作为其根基的操作系统(Hurd)的开发进展
却相对缓慢。Linux 的出现恰逢其时,它使得 GNU 有了一个坚实的根基。

Richard Stallman 经常阐述:“GUN 代表自由的思想,但不是免费的午餐。”而同是自由软件的积极


倡导者,Linus Torvalds 从不对自由软件应该是什么妄加评论,他毫不犹豫地把 Linux 奉献给了自由软件,
奉献给了 GNU 计划。

1991 年,Linus Torvalds 编写了系统内核,称之为 Linux。Linux 作为一个操作系统,用于编译、项目


管理、运行的各种工具和各种函数库也源于 GNU 项目。Linux 把所有软件和硬件连接起来。

GNU 和 Linux 密不可分,因此,Richard Stallman 一直说,Linux 并不能代表整个操作系统。Linux 只


是内核,整个系统还包含数以百计的软件工具和实用程序,它们大多是由 GNU 的开发者们完成的。他认
为,Linux 操作系统称为 GNU/Linux 比较合适。

为弘扬自由软件精神四处布道

有人说,Richard Stallman 是地球上编写代码最多的程序员。他编写了大量优秀的程序,如 Emacs


、GCC 和 GDB (程序调试器)。目前,尽管他对 GNU 的设想还没有完全实现,但是这个软件系统已经有
1000 多个应用程序,而且 GNU 自己的内核 Hurd 也已经发布了 Beta 版本。此外,GNU 在工作站和微机市
场也颇有成就,许多 Unix/工作站和微机厂家,都把 GNU 纳入他们操作系统。

Stallman 的工作得到了认可,他曾获得多项大奖和荣誉:

◆1990 年度麦克阿瑟奖(MacArthur Fellowship);

◆1991 年度美国计算机协会(Association for Computing Machinery)颁发的 Grace Hopper Award,以表彰


他所开发的的 Emacs 文字编辑器;

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 70


知识学堂
◆1996 年获颁瑞典皇家技术学院荣誉博士;

◆1998 年度电子前线基金会(Electronic Frontier Foundation)先锋奖(Pioneer Award);

◆1999 年 Yuri Rubinski 纪念奖;

◆2001 年武田研究奖;

◆2002 年成为美国国家工程院院士。

但是,Richard Stallman 真正的力量还是他的思想。在他的理论下,用户彼此拷贝软件不但不是“盗


版”,而是体现了人类互助的美德。他说:“想想看,如果有人同你说,只要保证软件不拷贝给其他人用的
话我就把这些宝贝拷贝给你,其实这样的人才是魔鬼;而引诱人当魔鬼的,则是卖高价软件的人。”

他在《为什么软件不应有‘所有者’?》一文中指出,软件的编写者将软件“据为己有”看上去天
经地义。但必须看到,一个软件并不是单纯的工具,一旦软件的编写者将其传播出去,就不简单地是在
提供“工具”,而是在传播“思想”。在这一点上,现有的版权体系采用了所谓保护“表达”,不保护
“思想”的两分法,为软件保护问题设置了无法解释的障碍,造成了软件的精神分裂。

Richard Stallman 认为,自由软件并非免费软件。为了募集资金,他建议销售软件光盘时制定一个适


当的价格。另外,虽说是自由软件,也不一定必须设定一个较低的价格。而且,在 Copyleft 时代,软件
公司可以靠服务和训练赚钱。如果你的公司没有人会用源代码,就得请位程序员,帮助修改由 FSF 得来
的 Copyleft 程序。你不必怕出钱所改的程序会流传到另一家公司,因为那家公司也许会为这软件改头换

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 71


知识学堂
面,或者修改或者添加些新功能。在任意拷贝的情况下,大家都会因此而受惠。

Stallman 希望,有一天软件业者不是靠目前的“Copyright”版权法,迫使客户花费巨额资金购买软件,
而是依仗提供服务(如技术支援、训练)来获取应得的报酬。简而言之,未来软件业的基本准则就是“资源
免费,服务收费”。

Stallman 总是风尘仆仆,行囊相随,四处布道。Stallman 从来都只用自由软件(当然他没用过


Windows)。他没有自己的汽车、电视和房产。这位单身汉居住在一间租来的房子里,他没有领过一天工
资,因为他的工作就是使软件获得自由。

然而在商业社会的今天,人们更愿意追逐财富,而不是贫寒的 Stallman 的崇高思想。Richard


Stallman 毫不妥协的个性和思想使其在自由软件内部也越来越成为争议人物。但不容置疑的是,正是他的
思想成为自由软件运行的力量源泉。无论如何,Richard Stallman 仍然被认为是自由软件运动的核心人物,
他在计算机领域的重要地位不容动摇。就连他的反对者也说:“如果不存在 Richard Stallman,人类也应
该把他创造出来。”

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 72


经验技巧

经验技巧
《Linux 一句话精彩问答》是 Linux 初学者很好的入门文档,想必很多朋友当时都是边看该文档,边
敲打键盘,玩着 Linux 过来的。该文档由本刊副总编陈绪主编,迄今已经收录近千个精彩问答。从第二期
期开始将在桌面应用(即经验技巧)栏目进行连载,希望能帮助到更多刚接触到 Linux 的朋友们。

Linux 一句话精彩问答——系统配置篇(4)

陈绪

鉴于目前中国 linux 的发展水平,90%以上的问题均可以用一句话作答,此为本文初衷。

1061 超强删除格式化工具

比 pqmagic 更安全的、进行删除格式化的小工具:sfdisk.exe for msdos

下载地址:http://www.wushuang.net/soft/sfdisk.zip

1062 如何让 xmms 播放列表里显示正确的中文

-*-*-*-*-*-iso8859-1,-misc-simsun-medium-r-normal--12-*-*-*-*-*-gbk-0,*-r-

把这个东西完全拷贝到你的字体里面

操作方法:右键单击 xmms 播放工具的任何地方,会看到一个"选项",然后选择"功能设定",选


择"fonts",然后把上面的字体完整的拷贝到"播放清单"和"user x font"中

1063 redhat linux 中播放 mp3 文件

自带的 xmms 不能播放 MP3(无声),要安装一个 rpm 包:rpm -ivh xmms-mp3-1.2.7-13.p.i386.rpm。打开


xmms,ctl-p,在 font 栏中先在上半部的小框内打勾,再选择 “fixed(misc) gbk-0 13”号字体即可显示中文

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 73


经验技巧
歌曲名。在音频输出插件中选择 "开放音频系统驱动程序 1.2.7 [lioOSS.so],即可正常播放 MP3 文件

1064 安装中文字体

先下载 http://freshair.netchina.com.cn/~George/sm.sh 文件,然后在微软网站下载


SimSun18030.ttc(http://www.microsoft.com/china/windows2000/downloads/18030.asp),它是个 msi 文件,在
mswindows 中安装用的,装好后在 windows 目录下的 fonts 目录里面就可以找到它。把
simsun.ttc,SimSun18030.ttc,tahoma.ttf,tahomabd.ttf 拷贝到/usr/local/temp,然后下载的 sm.sh 文件也放
到这个目录里,最后打开终端

cd /usr/local/temp

sh sm.sh

1065 移动光标

echo -e '\033[20;10f' 把光标移动到 20 行 10 列

另外,如果还出现乱码,可以改为 iocharset=utf8

1066 在 x 下使用五笔和拼音,区位输入法

从 http://www.fcitx.org/上下载 fcitx 的 rpm 包安装即可

1067 ls 重定向到多个文件

ls | tee 1.txt 2.txt 3.txt .....

1068 硬盘 iso 安装后怎么添加和删除 rpm 包

redhat-config-packages --isodir=< PATH >

< PATH >为 iso 文件所在的目录

1069 字符下控制音量

使用 aumix。保存 oss 的音量大小的步骤为:

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 74


经验技巧
1、用 aumix 将音量调整为你们满意的音量;

2、用 root 用户进入/usr/lib/oss 下(oss 的默认安装目录);

3、执行./savemixer ./mixer.map;

4、ok,以后 oss 开启之后就是你在第一步调整的音量了。

1170 echo 典型应用

echo "abcdefg" | perl -lne '{$a = reverse($_); print $a;}' 把一个字符串翻转

echo bottle|rev 把一个字符串翻转

1071 删除几天以前的所有东西(包括目录名和目录中的文件)

1 find . -ctime +3 -exec rm -rf {} \;

2 find ./ -mtime +3 -print|xargs rm -f –r

1072 用户的 crontab 在哪里

/var/spool/cron/下以用户名命名的文件中

1073 以不同的用户身份运行程序

su - username -c "/path/to/command"

有时候需要运行特殊身份的程序, 就可以让 su 来做

1074 不改变 inode 清空一个文件

> filename

1075 为什么 OpenOffice 中不能显示中文

更改字体设置

tools->options->font replacement

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 75


经验技巧
Andale Sans UI -> simsun

1076 如何备份 Linux 系统

Symantec Ghost 7.5 以后的版本支持 Ext3 native 复制

1077 linux 上的 partition magic

Linux 下一个有用的分区工具:parted,可以实时修改分区大小, 删除和建立分区.

1078 /proc/sys/sem 中每项代表的意思

/proc/sys/sem 内容如下

250 32000 32 128

这 4 个参数依次为 SEMMSL(每个用户拥有信号量最大数量),SEMMNS(系统信号量最大数量),SEMOPM(每
次 semop 系统调用操作数),SEMMNI(系统信号量集最大数量)

1079 Grub 引导菜单里 bigmem smp up 都是什么意思

smp: (symmetric multiple processor)对称多处理器模式

bigmem: 支持 1G 以上内存的优化内核

up:(Uni processor) 单处理器的模式

1080 oracle 的安装程序为什么显示乱码

现在 oracle 的安装程序对中文的支持有问题,建议使用英文界面来安装,在执行 runinstaller 之前,执行:


export LANG=C;export LC_ALL=C

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 76


经验技巧

Linux 下玩转远程桌面
陈振波

提到远程桌面,大家都容易想到 Windows XP 或 Windows 2003 操作系统的远程桌面功能。其实,


Linux 下实现远程桌面的功能更方便。用过 Linux 的读者都知道,通过 telnet 或 SSH 可以远程控制 Linux
主机,不过那都是基于命令行的,不太直观。由于 Linux 本身就支持多个终端,如果能像 Windows 一样
通过远程桌面控制 Linux 主机,不用自己安装 Linux,直接在 Windows 操作系统下就可以使用图形界面远
程操作 Linux 操作系统。

在 Linux 下实现远程桌面是一件比较简单的事情,因为 Linux 的图形界面 X-Windows 设计的时候就是


基于 C/S 模式的。本文介绍使用 X-Win32,通过 XDMCP+XDM 远程连接 Linux 主机上的 XFree86
Server,从而在图形环境下远程管理 Linux 主机。

X-Window 简述

X-Window 是由 Server(服务器)、Client(客户端)和通信通道三个相关的部分组合起来的。

1.Server

Server 实际上是控制显示器和输入设备(键盘和鼠标)的程序。Server 可以建立视窗,在视窗中画图


形和输入文字,响应 Client 程序的需求(Requests),但不会自己动作,只有在 Client 程序提出需求后才完
成动作。每一套显示设备只对应一个惟一的 Server,而且 Server 一般由系统的供应商提供,通常无法被用
户修改。对于操作系统而言,Server 只是一个普通的用户程序而已,因此很容易换个新的版本,甚至是第
三方提供的原始程序。

2.Client

Client 是使用系统视窗功能的一些应用程序。X 下的应用程序称作 Client,它是 Server 的客户,要求


Server 响应它的需求,完成特定的动作。Client 无法直接影响视窗或显示,只能送一个请求给 Server,由
Server 来完成请求。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 77


经验技巧
Client 功能大致可分为两部分:向 Server 提出需求,为用户执行程序做准备。Client 程序和 X 通常是
独立的。通常应用程序(特别是大型的标准绘图软件、统计软件等)对许多输出设备具有输出的能力,
而在 X 中的显示只是 Client 程序许多输出格式中的一种,所以,Client 程序中和 X 相关的部分在整个程序
中只占非常小的一部分。

用户可以通过不同的途径使用 Client 程序:通过系统提供的程序来使用;使用来自于第三方的软件;


或者用户自己为了某种特殊应用编写自己的 Client 程序。

3.通信通道

有了 Server 和 Client,他们之间就要通过通信通道传输一些信息。凭借这个通道,Client 传送需求给


Server,而 Server 回传状态(Status)及其它一些信息给 Client。 Client 通过函数库来使用通信通道。在系
统或网络上,支持通信形态需求的是内建于系统的基本的 X-Window 函数库(Library)。只要 Client 程序
利用了函数库,就有能力使用所有可用的通信方法。

这里的 Server 跟 Client 两个概念很容易混淆。如果从一台 Windows 机器上使用 X-Win32,通过


XDMCP 登录到另一台 Linux 服务器上,就说 X-Win32 是客户端(Client),而 Linux 机器是服务器(Server),
这就完全搞错了。理解了 X-Window 的工作原理,认识这个区别就会很明显。X-Server 不是指登录的那台
机器,而是指一个程序,它负责在某台机器上接受客户的要求,在屏幕上显示客户请求的图形,并且把
消息(键盘、鼠标和窗口消息等)通知客户程序。

Linux 下配置 XDM

Linux 下要实现远程图形桌面,还必须搞清楚 XDMCP、XDM 和 XFS 几个概念。

XDMCP(X Display Manager Control Protocol)是一种网络协议,由它来建立图形客户端程序与 X-


Window 服务器的连接与通信。XDM(X Display Manager)用来启动 X-Window 服务器,并管理图形客户
端程序的登录、会话和启动窗口管理器(KDE 或 GNOME)等。KDE 和 GNOME 也提供了自己的 XDM
实现,分别叫 KDM 和 GDM。XFS(X Font Server)可以由一台服务器来统一提供字体,这样远程图形客
户端程序就不需要单独安装字体了。

同时,在 Linux 主机上必须安装有 X-Window,特别注意要把 XDM 和 XFS 两个组件也安装上。如果


安装了 KDM 或 GDM,也可以不安装 XDM。但本文所描述的是 XDM 的配置过程,KDM 或 GDM 配置过
程略就有不同。

安装好软件包,就可以开始配置 XDM。进入/etc/X11/xdm 目录,修改 xdm-config(XDM 主要配置文

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 78


经验技巧
件)、Xaccess(访问控制文件)、Xservers(本地显示或远程显示配置文件)三个文件。

首先修改 xdm-config 文件,找到最后几行:

! SECURITY: do not listen for XDMCP or Chooser requests

! Comment out this line if you want to manage X terminals with xdm

DisplayManager.requestPort: 0

用!号把最后一行注释掉,否则 XDM 就不会监听 XDMCP 的连接。

!DisplayManager.requestPort: 0,

然后修改 Xaccess 文件,这是控制客户端访问的配置文件,找到下面这一行:

# * #any host can get a login window

把注释符号#去掉,否则 X-Window 不允许远程机器连接。

最后修改 Xservers 文件,找到最后一行:

:0 local /usr/X11R6/bin/X

用#符号把该行注释掉,否则运行 XDM 时在本地机器上显示图形界面。

当这些配置工作完成后,就可以运行 XDM,直接在命令行中输入 xdm 命令就可以了。但是,这样并


不能确定 XDM 是否正确启动。

通过运行命令“netstat -anp”,可以查看 177 端口(XDM 的默认端口)是否被 XDM 绑定了,如果出


现类似下面的信息就表明 XDM 成功运行了:

udp 0 0 :::177 :::* 32009/xdm

否则可以通过运行“xdm -debug 1”来确定什么原因导致 XDM 不能监听 177 端口。如果是因为 XFS 没


有运行,则可以通过“service xfs start”命令来启动 XFS;如果文件/usr/X11R6/lib/X11/fonts/misc/fonts.alias
不允许 XDM 读也会出现问题,则可以通过 chmod 命令使该文件任何用户都可以读。其它问题可根据
Debug 的提示,修正后再启动 XDM,直到它绑定了 177 端口。

另外,如果 Linux 主机设置了防火墙,必须设置允许远程机器连接 XDM 监听的端口,否则连接不成


功。如果不想每次使用远程桌面的时候都要先运行 XDM,则可以设置启动文件,让系统启动的时候自动
启动 XDM。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 79


经验技巧

Windows 下 X-Win32 连接设置

Windows 下有好几款软件可以通过 XDMP 连接 Linux 主机,其中 X-Win32 是比较著名的一款,可以


到 http://www.starnet.com/下载这个软件。该软件是共享的,如果没有注册的话,每次只能使用 30 分钟,
但没有使用次数的限制。30 分钟限制到了以后,重新启动该软件就又可以使用。

X-Win32 的安装过程很简单,没有特别要注意的地方。安装完软件,首先在开始选单中(如图 1 所示)


选择 X-Config。

图1

在随后弹出的如图 2 所示的 X-config 对话框窗口中,单击“Wizard”按钮,建立自己的 Session。

图2

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 80


经验技巧
在图 3 所示的对话框中,选择连接 Linux 主机使用的协议 XDMCP。

图3

在图 4 所示的 XDMCP 的对话框中,选择 Linux 主机采用的连接方式。

图4

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 81


经验技巧
下面一步就是在图 5 所示的对话框中,输入 Linux 主机的 IP 地址。

图5

最后一步是在图 6 所示的对话框中,输入 Session 的名称“myLinux”,然后单击“完成”。

图6

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 82


经验技巧

Session 设置完成之后,通过开始选单运行 X-Win32。稍等片刻,在系统托盘栏里就会看到一个像 X


一样的图标,用鼠标右键单击该图标,按照图 7 所示在弹出选单中选择一个 Session,连接到相应的 Linux
主机。

图7

如果连接 Linux 主机成功的话,将会弹出一个窗口,其中包含图 8 所示的 XDM 登陆框。

图8

当输入正确的用户名和密码后,稍等一会,屏幕上就会出现跟 Linux 主机上的图形界面一摸一样的窗


口,这样就可以在这个窗口中对 Linux 进行各种操作了。

到此为止,整个安装配置过程就大功告成了。最后有一点值得注意,如果 Linux 主机原来并没有安


装 X-Window,自己手动安装是一个比较烦琐的过程,容易漏掉一些包,可以通过 Linux 的安装光盘把相
应的组件添加上去。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 83


经验技巧

Linux 下 malloc/free 与 new/delete 的区别


由于 malloc/free 是库函数,不是运算符,他们不能执行构造函数和析构函数,只是负责分配内存。

1、malloc 与 free 是 C++/C 语言的标准库函数,new/delete 是 C++的运算符。它们都可用于申请动态


内存和释放内存。

2、对于非内部数据类型的对象而言,光用 maloc/free 无法满足动态对象的要求。对象在创建的同时


要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于 malloc/free 是库函数而不是运算符,
不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于 malloc/free。

3、因此 C++语言需要一个能完成动态内存分配和初始化工作的运算符 new,以一个能完成清理与释


放内存工作的运算符 delete。注意 new/delete 不是库函数。

4、C++程序经常要调用 C 函数,而 C 程序只能用 malloc/free 管理动态内存

new 是个操作符,和什么”+”,”-”,”=”…有一样的地位.malloc 是个分配内存的函数,供你调用的.

new 是保留字,不需要头文件支持.malloc 需要头文件库函数支持.

new 建立的是一个对象,malloc 分配的是一块内存.

new 建立的对象你可以把它当成一个普通的对象,用成员函数访问,不要直接访问它的地址空间。

malloc 分配的是一块内存区域,就用指针访问好了,而且还可以在里面移动指针。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 84


经验技巧

在一个硬盘上安装两个 Linux 操作系统方法

一个硬盘已安装 Fedora 8 Linux 系统,并安装 grub 引导管理程序,现要在这个硬盘的空闲分区中安装


Fedora 9,操作如下:

1.将 Fedora-9-i386-DVD.iso 文件放到一个 Windows Fat32 分区((hd0,4))的根目录,将这个 iso 文件


中的 isolinux 目录解压到更目录(hd0,4);

2.进入 Fedora 8 Linux 系统,在文件/boot/grub/grub.conf 中追加如下内容:

title install linux FC9


root (hd0,4)
kernel /isolinux/vmlinuz
initrd /isolinux/initrd.img
3.重新启动机器,选择[install linux FC9]就能开启 Fedora9 安装程序,当要求选择介质安装源时,
选择硬盘。

说明:

1.(hd0,4)是 grub 对硬盘分区的编号,hd 代表硬盘,不管是 IDE 还是 SCSI 都用 hd 表示,0 表示第一块


硬盘,4 表示第五个分区;

2.若 Fedora9 安装过程中,选择了更新 grub,则 grub 的启动选择菜单将以 Fedora9 中的为准。最好更


新 grub,因为 Fedora9 的 grub 启动配置参数与 Fedora8 不同。进入 Fedora9 系统后,将 Fedora8 的启动配
置参数从原 grub.conf 更新到文件 Fedora9 中的 grub.conf 文件。

3.一个硬盘安装第二个 Linux 系统,有一个新的优点就是能共用交换分区。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 85


经验技巧

在 Linux 系统下使用 wine 运行迅雷 5 的方法

一、下载 ies4linux

去 http://www.tatanka.com.br/ies4linux/page/Installation 下载 ies4linux 的文件包(目前版本为 2.99),然


后解压缩。注意:这个网站被大陆和谐了,需要跳墙。至于怎么跳,诸位就各显神通了:-)

一些发行版的软件源里也会有 ies4linux 的包,比如 Ubuntu、Arch。这时就只要 apt-get 或者 pacman


一下就行了。实在没有就 baidu、google,肯定能下载到。

二、安装 IE6

运行软件包里的安装脚本:

./ies4linux

或者使用不带 GUI 的命令行版(推荐,GUI 的安装期间容易崩溃):

./ies4linux --no-gui

程序会自动去 M$的网站下载 IE6 的安装包,以及 Flash 插件,并且完成安装。

三、拷贝所需的 dll 文件

将 Windows 里的 msvcp60.dll(如果用的是 2.0 版的 ies4linux,还需要 mfc42.dll)拷贝到


~/.ies4linux/ie6/drive_c/windows/system32 下。两个 dll 文件也可以在网上搜到。

四、安装迅雷 5

在控制台下执行 ie6,出现 IE6 的窗口。在地址栏输入 www.xunlei.com,进入迅雷官方网站。右上角


部分会有迅雷 5 的下载链接,直接点击,选择“Open”。

下载完成后,会执行迅雷 5 的安装程序,一路“下一步”即可。安装的最后阶段会报错,直接忽略,
文件拷贝进度条走到底就行了,这时可以强制关闭安装程序。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 86


经验技巧
去下载 atl71.dll 的压缩包,里面有 ANSI 和 UNICODE 版。将 ANSI 版的解压缩出来,覆盖迅雷 5 里
的那个同名文件,一般位于 ~/.ies4linux/ie6/drive_c/Program Files/Thunder Network/Thunder/Program 下。

五、运行迅雷 5

方法 1.执行下面指令:

export WINEPREFIX="$HOME/.ies4linux/ie6"

wine "~/.ies4linux/ie6/drive_c/Program Files/Thunder Network/Thunder/Thunder.exe"

方法 2.控制台下执行 ie6,打开 IE 浏览器,然后使用菜单栏里的"Open..."选项,文件类型菜单里选


择"All files"后找到 Thunder.exe 打开,IE 就会帮你执行迅雷 5。此方法的缺点是必须同时打开一个 IE6 浏
览器。

六、注意事项

1、最可能出现的问题就是乱码,如果你没有对 wine 进行任何配置的话。wine 的中文支持已经超出


了本文的范围,可以另行找资料解决。

2、我的 wine 版本为 0.9.60,不做任何下载的情况下 Thunder5.exe 的 CPU 占用率为 20%,大流量下载


时可能会飙升到 100%。

3、这里使用的是官方原版迅雷 5。Ayu 改版之类的迅雷未做测试,估计也是可以使用的。但是注意,


一定要用 IE 执行安装文件,或者用方法 1 里的方式运行安装程序。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 87


经验技巧

apache cband 模板限制 IP 并发连接数和带宽

斐迅科技 顾宏军

这两天维护的一个社区网站,老是被人骚扰:发起大量连接,占用系统资源与带宽,而又不释放连
接,搞得真正要访问的用户速度很慢,于是给 apache 加上了同 IP 并发数限制与带宽限制;在 apache1.x
下,需要 mod_limitipconn 和 mod_bandwidth 俩模块配合才能实现,而在 apache2 下,只需要 libapache2-
mod-cband 就完成以上两个模块的功能,cband 模块主页:http://cband.linux.pl/

“mod_cband is an Apache 2 module provided to solve the problem of limiting users' and virtualhosts'
bandwidth usage. The current versions can set virtualhosts' and users' bandwidth quotas, maximal download speed
(like in mod_bandwidth), requests-per-second speed and the maximal number of simultanous IP connections (like
in mod_limitipconn)”

这里介绍的安装方法适用于 Debian 及 Ubuntu 系列系统,Fedora 系统可参考设置

采用 sudo apt-get install libapache2-mod-cband 即可完成安装;

在 debian 系统中,/etc/apache2 下是其配置的相关文件,可用模块存放在/etc/apache2/mods-available/


中,而启用模块只需要把/etc/apache2/mods-available/中的模块链接到/etc/apache2/mods-enabled 即可。

要想 cband 生效,需要进行如下工作:

sudo ln -s /etc/apache2/mods-available/cband.load /etc/apache2/mods-enabled/cband.load

sudo ln -s /etc/apache2/mods-available/cband.conf /etc/apache2/mods-enabled/cband.conf

如果要限制默个虚拟站点,那么修改/etc/apache2/sites-enabled 中的站点配置文件,如果要对所有站点
进行限制,那么修改 cband.conf 文件:

/etc/apache2/sites-enabled 中的配置文件,内容类似以下: NameVirtualHost > ServerName


www.test.com ServerAdmin test@test.com DocumentRoot /var/www CBandSpeed 10024 600 300
CBandRemoteSpeed 256kb/s 6 6

说明:

CBandSpeed 10024 600 300 #CBandSpeed 限制 www. test.com 的虚拟主机的总访问速度为 10024kbps,

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 88


经验技巧
最大每秒 600 个请求和最大每秒 30 0 个连接。

CBandRemoteSpeed 256kb/s 6 6 #CBandRemoteSpeed 限制 www. test.com 的虚拟主机的任何个人的访


问速度为每秒 256kb, 最大每秒 6 个请求和最大每秒 6 个连接.

其他说明:

1、在 apache2.conf 中添加 CBandScoreFlushPeriod 1 和 CBandRandomPulse On 可改善 cband 模块性能

2、安装好之后,可通过 http://www.test.com/cband-status 适时查看各个 IP 的连接情况,进行系统健康

3、由于 Ubuntu 7.04 的 bug(apache2.0 升级为 apache2.2 引起),系统提供的 libapache2-mod-cband 模


块无法使用,需要自行编译,步骤如下:cd /tmp;apt-get source libapache2-mod-cband;cd mod-
cband-0.9.7.4;dpkg-buildpackage -b -rfakeroot -us -uc;dpkg -i ../libapache2-mod-cband——0.9.7.4——*.deb;//
如果在 build 时无法进行,一般是系统缺乏编译所需的软件包,根据错误提示,安装相应的软件包既可,
常见的依赖包包括,gcc debhelper 等。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 89


企业应用

企业应用

LDAP 统一身份认证
潘宇

目前企业中存在的问题

几乎所有的系统以及网络服务都需要身份认证,在企业内部同样存在许多需要认证的服务,例如
Samba,FTP,HTTP,CVS 甚至是 SSH 以及 Linux 系统的 Login。管理员不得不为公司中每一个员工维护
很多套账户密码,这无疑增加了管理员的负担,也提高了企业的管理成本,并且给员工带来了许多不便。
由于公司内部需要认证的服务很多,员工需要记住很多的密码,即使给这些服务设置成相同的密码
设置,也存在很大的安全隐患。笔者曾经工作过的一个公司就是如此,每一个新员工的到来管理员都要
初始化很多的密码,而这些密码都被设置成了“000000”,由于各种软件的认证机制之间没有使用一个统
一的标准,员工无法一次性修改所有服务的密码,这导致很多即使是入职很久的员工都还在使用这个
“众所周知”的密码。
另外一个比较严重的问题就是在公司增加内部服务的时候,例如领导要在公司内部提供邮件服务或
是把现有的 proftpd 换成更高效的 vsftpd,管理员要为所有的员工初始化新的账户信息,对于一个有上百
员工的企业来说这将是一个灾难。

LDAP 有效地解决了这个问题

试想,如果可以为各种软件提供一个标准的认证机制,所有软件就可以不再用自己独有的用户管理
方法,而是通过这种统一的认证机制做用户认证,这样就解决了目前很多企业遇到的问题。LDAP 正式这
样一种标准的协议,由于 LDAP 的历史可以追溯到 1988 年,很多 90 年以及 2000 年以后诞生的软件基本
上都支持这个协议,近来年随着企业对 LDAP 需求的不断增加,绝大多数有认证机制的软件都会首先提
供对 LDAP 的支持。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 90


企业应用

LDAP 简介

抛开刚才提到的认证机制,我们先来了解一下 LDAP 协议本身。LDAP 是 Lightweight Directory


Access Protocol 的缩写,它的前身是更为古老的 DAP 协议。大体上讲 LDAP 协议定义了和后台数据库通
信的方法以及客户端软件和 LDAP 协议之间的通信标准,如图 3.1(更详细的说明可以参见相关的 RFC 文
档)
图 3.1 描述了客户端软件、LDAP 服务器以及后台数据存储之间的关系

在图 3.1 中,LDAP client 指的是我们提到的各种需要身份认证的软件,例如 Apache,Proftpd,Samba


等。LDAP server 指的是实现 LDAP 协议的软件,例如 OpenLDAP。Data storage 指的是 OpenLDAP 的数据
存储,如关系型数据库(MySQL)或是查询效率更高的嵌入式数据库(Berkeley DB),甚至是平面文本
数据库(一个 TXT 的文本文件)。可见,OpenLDAP 软件只是 LDAP 协议的一种实现形式,并不包括后
台数据的存储。但在很多时候管理员经常把 LDAP server 和 Data storage 放在同一台服务器上,这样就产
生了我们通常所说的“LDAP 数据库”。
图 3.2 一个跨国公司员工信息的树状结构

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 91


企业应用

虽然后台数据库(back-end)可以是多种多样,但 LDAP 协议还规定了数据的存储方式。LDAP 数据库


是树状结构的(如图 3.2)和 DNS 类似。以这种方式存储数据最大的一个好处就是查询速度快,LDAP 数
据库专门对读操作进行了优化,OpenLDAP 配合 Berkeley DB 可使其读操作的效率比 Oracle 快上一个数量
级。LDAP 数据库的树状结构的另一个好处是便于分布式的管理,有关这方面的内容我会在最后的一个案
例中给大家介绍。

统一身份认证的实现思路

统一身份认证主要就是改变原有的认证策略,使需要认证的软件都通过 LDAP 来进行认证。如图 4.1


图 4.1 修改后的认证策略

在统一身份认证之后,用户的所有信息都存储在 LDAP server 中。终端用户在需要使用公司内部服务


的时候都需要先通过 LDAP 服务器的认证。每个员工只需要记住一个密码,在需要修改用户信息的时候
可以通过管理员提供的 WEB 界面直接修改 LDAP server 中的信息。
目前大部分主流软件都对 LDAP 有了很好的支持,但由于各种软件对 LDAP 的支持程度不同,在做
实施的时候也要区别对待。软件对 LDAP 的支持可以大概分为两大类:

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 92


企业应用
一类是完全支持,也就是在软件的配置文件中加入和 LDAP 有关的选项就可以完成。这种方式的好
处是不需要借助其他的工具或软件,由软件的开发团队直接完成对 LDAP 的支持。可能的缺陷也来自于
此,由于各个软件开发团队的水平和开发者经验的不同,虽然同样是支持了 LDAP,但稍微复杂一些的高
级功能就不能提供了,有的时候甚至出运行现错误导致整个软件出现问题。笔者曾遇到过一个基于 WEB
的 CVS 浏览软件,安装文档中说明了支持 LDAP,但实际使用当中遇到了很多问题导致整个软件 crash 掉。
相反,一些比较主流的软件,例如 Apache2.x 对 LDAP 的支持已经近乎完美。
另一类软件由于很多原因并不直接支持 LDAP,而是通过 PAM 做身份认证,由于 PAM 本身是支持
LDAP 的,这样也同样可以实现使用 LDAP 做身份认证。这种方式对 LDAP 的支持同样有其优势,软件开
发人员不需要修改代码来支持 LDAP 协议,减少了软件本身产生安全漏洞的可能。缺点是在一些不希望
使用 PAM 的系统中这样的软件就无法通过 LDAP 进行用户认证,而且虽然 PAM 对 LDAP 的支持已经很
完善,但一些高级,复杂的功能就无法实现。正由于这些原因,这类软件为数不多,比较典型的就是
Vsftpd 和 CVS。

为什么要使用 LDAP 做身份认证

介绍到这里可能很多朋友会问为什么一定要用 LDAP?用传统的关系型数据库不可以吗?可以看到
LDAP 服务器就是起到了一个认证 server 的作用,从技术本身上讲这个认证 server 具体使用的是何种数据
库并不重要,如果使用一个关系型数据库也可以达到统一身份认证的目的,但 LDAP 自身的优势使得很
多公司最终选择它。以下我列举了一些选择 LDAP 的重要原因:
 LDAP 是一个开放的标准协议,不同于 SQL,LDAP 的客户端是跨平台的,并且对几乎所有
的程序语言都有标准的 API 接口。即使是改变了 LDAP 数据库产品的提供厂商,开发人员也
不用担心需要修改程序才能适应新的数据库产品。这个优势是使用 SQL 语言进行查询的关系
型数据库难以企及的。
 由于 LDAP 数据库的数据存储是树结构的,整棵树的任何一个分支都可以单独放在一个服务
器中进行分布式管理,这样不仅有利于做服务器的负载均衡,还方便了跨地域的服务器部署。
这个优势在查询负载大或是企业在不同地域都设有分公司的时候体现的尤为明显。
 LDAP 支持强认证方式,可以达到很高的安全级别。在国际化方面,LDAP 使用了 UTF8 编码
来存储各种语言的字符。
 更灵活添加数据类型,LDAP 是根据 schema 的内容来定义各种属性之间的从属关系以及匹配
模式。例如,在关系型数据库中如果要为用户增加一个属性,就要在用户表中增加一个字段,
在拥有庞大数量用户的情况下是十分困难的,需要改变表结构。但 LDAP 只需要在 schema 中
加入新的属性,不会由于用户的属性增多而影响查询性能。
 LDAP 数据库是对读操作进行优化的一种数据库,在读写比例大于 7 比 1 的情况下 LDAP 会

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 93


企业应用
体现出极高的性能。这个特性正适合了身份认证的需要。
目前,很多公司都在把 LDAP 和自己的产品与技术结合在一起,增加 LDAP 在各个领域中的有效性,
这一切都来源于 LDAP 是一个开放的协议,很容易和其他标准协议共存。

LDAP 软件的选择和配置

众多的 LDAP 产品

目前,几乎所有的大的 IT 厂商都有自己的商用 LDAP 产品,下面我总结出了一些主流的 LDAP 产品:

厂商 LDAP 软件名称
IBM SecureWay
Sun Sun One Directory Server (以前曾叫做 iPlanet)
Microsoft Exchange AND Active Directory
Netscape Netscape Directory Server
Novell eDirectory (很多时候被叫做 NDS)
OpenLDAP OpenLDAP
Oracle Internet Directory
Red Hat Red Hat Directory Server

每个厂商的 LDAP 产品都有其特点,很多时候大家还是更愿意选择开源软件 OpenLDAP。OpenLDAP


与其他的商用软件相比有很多优势,商用的软件版本更新很慢,对 bug 的反应速度要比开源软件差的多,
OpenLDAP 还包含了很多有创造性的新的功能,能满足大多数使用者的要求。笔者曾使用过上述大部分
LDAP 产品,OpenLDAP 是其中最轻便且消耗系统资源最少的一个 LDAP 产品。最重要的是 OpenLDAP
是开源软件,近来年国内很多公司开发的 LDAP 产品都是基于 OpenLDAP 开发的。

OpenLDAP 的安装和配置

OpenLDAP 的源代码可以到官方网站 www.openldap.org 上去下载,安装过程非常简单,需要注意


如下几个地方:
 在执行 configure 之前要确定安装了 Berkeley DB,虽然 OpenLDAP 可以使用很多数据库做
back-end,但 Berkeley DB 仍然是 OpenLDAP 开发团队强烈推荐的。
 如果需要更安全的方式访问 OpenLDAP,在配置执行 configure 之前要确定已经安装了 cyrus-
sasl。
 有些人在安装 OpenLDAP 的时候忽略了最后的 make test,经验告诉我们,很多的错误都会在
执行 make test 的过程中暴露出来的,OpenLDAP 的开发团队很注意维护软件的 Test Case,整
个的测试非常全面,很多在日常使用中很少用到的功能都会被测试到,很好的保证了软件在

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 94


企业应用
投入生产以后的稳定性。
默认情况下 OpenLDAP 的配置文件在/usr/local/etc/openldap/slapd.conf,配置文件中记录着 OpenLDAP
的管理员密码。默认情况下密码是用明文表示的,可以用 slappasswd 命令产生密文替换掉配置文件中的
明文。以图 3.2 为例,配置文件的相关项应改写为:
suffix "dc=ldap_abc, dc=org"
rootdn "cn=manager, dc=ldap_abc, dc=org"
directory /usr/local/var/openldap-data
其中的 directory 项为数据文件在服务器上的位置,出于稳定性和性能方面的考虑,数据文件最好放
在独立的分区或磁盘阵列上。
配置文件的 ACL 部分也十分重要,很多读取或修改操作不能正常完成都是由于 ACL 的写法错误造成
的,下面是默认情况下 ACL 部分的配置:
access to attrs=userPassword
by self write
by * auth
access to *
by * read

各种软件的配置方法
虽然各种软件支持 LDAP 的方法有两类,但本质上都是一样的,只是一些软件希望自己开发 LDAP
的支持,另一些软件想用 PAM 已经开发好的 LDAP 支持。任何一个软件要通过 LDAP 做用户认证至少要
在软件的配置文件中提供两个认证所需要的信息,一个是 LDAP 服务器的 IP 地址,另一个是需要认证的
用户在 LDAP 数据库中的位置。前面提到过 LDAP 数据库是和 DNS 类似的树状结构,每个用户作为叶子
节点被放置在这棵树上,而这些用户的父节点就是认证所要提供的“用户在 LDAP 数据库中的位置”。
如图 3.2 所示,如果要给亚洲地区市场部的所有员工提供 FTP 登录账号,需要提供的“用户在 LDAP 数据
库中的位置”就是“ou=Sales, l=Asia, o=ldap_abc.org”。下面以 Apache 和 Vsftpd 为例介绍一下软件的配置。

Apache2

Apache 和 LDAP 整合可以用来限制用户以 HTTP 方式访问文件的权限,Apache 使用 LDAP 做用户认


证有很多现实意义,首先可以限制用户对公司内部 HTTP 敏感内容的访问,另外,很多版本管理软件
(例如 Subversion)都提供了 LDAP 支持,这样在用户需要通过 WEB 方式访问文件的时候可以通过
Apache 的设置来限制用户对文件的访问权限。Apache 是从 2.0.41 以后才开始支持 LDAP 的,所以,如果
希望使用 LDAP 做身份认证就要安装 Apache2.0.41 以上的版本,企业版本的 Red Hat AS3/4,包括个人版
本的 Fedora,默认安装的 Apache2 就已经把 LDAP 相关的模块编译进去了,我们只要正确修改 Apache 的

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 95


企业应用
配置文件就可以了。
下面的这个例子是对保护目录/var/www/html/internal 设置了一定权限。
<Directory /var/www/html/internal>
AuthName "Welcome to Linux"
AuthLDAPEnabled on
AuthLDAPURL ldap://192.168.1.2/ou=Sales,l=Asia,o=ldap_abc.org?uid
require valid-user
</Directory>
AuthName:此项是可选项,用户在访问受保护目录的时候浏览器会弹出一个提示窗口要求输入用户
名/密码,AuthName 设置的内容会出现在这个弹出窗口的标题栏。(此项内容支持中文)
AuthLDAPEnabled:此项也是可选项,默认值是 on,这个功能很有用。当已经把目
录/var/www/html/internal 设置成了需要认证的,但又想把/var/www/html/internal/pub 目录设置成公开的,
就可以把此项设置成 off。
AuthLDAPURL:此项为必填项,192.168.1.2 即为 LDAP 服务器的 IP 地址,
ou=Sales,l=Asia,o=ldap_abc.org 为用户在 LDAP 数据库中的位置,uid 表示使用每个用户的 uid 属性的值作
为认证过程中使用的用户名。
最后的 require valid-user 表示只有认证成功的用户才能访问指定的资源。

Vsftpd

Vsftpd 是要通过 PAM 来支持 LDAP 的,vsftpd 的设置比较简单,如下修改配置文件


(/etc/vsftpd/vsftpd.conf)即可:
local_enable=YES
pam_service_name=vsftpd
之后再修改文件/etc/pam.d/vsftpd 如下:
auth required /lib/security/$ISA/pam_env.so
auth sufficient /lib/security/$ISA/pam_unix.so likeauth nullok
auth sufficient /lib/security/$ISA/pam_ldap.so use_first_pass
account sufficient /lib/security/$ISA/pam_ldap.so
account required /lib/security/$ISA/pam_unix.so
account sufficient /lib/security/$ISA/pam_succeed_if.so uid < 100 quiet
account required /lib/security/$ISA/pam_permit.so
session required /lib/security/$ISA/pam_limits.so
session required /lib/security/$ISA/pam_unix.so
另外还要修改/etc/ldap.conf 文件以使 PAM 支持 LDAP,只要在配置文件中加上以下两行即可:

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 96


企业应用
host 192.168.1.2
base ou=Sales,l=Asia,o=ldap_abc.org

LDAP 树结构的设计

下面用一个实际的案例来简单介绍一下树结构的设计。
某上百人的 IT 企业,总公司设在北京,且在上海、广州设有分部,公司的市场部,开发部,管理部
以及人力资源部在三个城市都有分部,公司要求所有员工每天更新自己在这一天内的工作成果,并为每
个员工设有企业内部的 FTP 共享空间,程序开发人员要使用 CVS 提交代码,公司内部的有多台 Linux 服
务器,每台都只允许有权限的人员登录。
员工使用到上述服务的时候都要做身份认证,在这样的情况下,你可能会选择买上几台昂贵的数据
库服务器,装上大型的商业数据库来解决这个问题。但也可以选择更廉价且高效的办法,使用开源软件
的解决方案并不一定会逊色。
首先要考虑的是数据的拓扑,根据企业的需要做数据库设计是关键。公司在北京,上海,广州都设
有分公司,如果数据库服务器只放在一个城市,在网络流量大的时段一定会影响认证速度,降低员工的
工作效率。鉴于此,数据库设计可以有两种:
一种是把主 LDAP 服务器放在北京,同时在上海和广州也同时放有 LDAP 服务器,类似于 DNS 的区
域授权,总公司把上海和广州的员工的管理下放,各地的员工都通过本地的 LDAP 服务器做认证,既提
高了效率,又保证了服务器的安全性,任何一个地方的服务器出现问题都不会影响到其他两个城市的认
证服务。要注意,这种数据库的设计并不是把公司的所有员工割裂成没有联系的三部分。
如图 8.1 所示,三台服务器上的 LDAP 分支是在同一棵树上通过类似于“引用”的特殊属性连接在一
起,三个城市都有自己的管理员来维护各自的分支。三台服务器连接在一起有很多好处,在需要搜索或
查询公司所有员工信息的时候就会十分方便。如果某个城市的员工较多或负载过重还可以在这个城市增
加 LDAP 服务器,增加的服务器就如同本地服务器的镜像,可以起到负载均衡的作用。注意,在这个设
计方案里每个 LDAP 服务器都是可读可写的,下面介绍的这个方案会有所不同。
另一种方案和第一个方案相比更好理解,在北京放一台主 LDAP 服务器,同时在北京,广州,上海三
个城市分别放置一台辅 LDAP 服务器。主 LDAP 服务器只负责写入数据,辅 LDAP 服务器是只读的,任
何对数据库的修改都要先写入主 LDAP 服务器之后再同步到三个辅 LDAP 服务器,这样的拓扑结构也比
较适合认证服务器的需要,因为写操作相对于读操作是很少的,这种设计的优势在于更加灵活的增加或
减少服务器的数量,这样就能根据员工的多少或各分公司的负载情况灵活增加或减少服务器,任何一台
辅 LDAP 服务器的瘫痪都不会影响到整个认证系统。在国外的一些案例当中辅 LDAP 服务器会多达几十
甚至上百台。但这种设计也有缺陷,如果主 LDAP 出现问题,那么所有的写入操作就会受到影响,目前

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 97


企业应用
OpenLDAP 还不支持多个主 LDAP 服务器的情况,因为设置多个主 LDAP 服务器有可能会造成整个数据
的不一致,只有少数商用的 LDAP 支持多主 LDAP 的功能。
图 8.1 树结构的设计

统一身份认证的未来道路

在国外 LDAP 应用于身份认证已经十分成熟,最近几年国内才开始逐渐流行起来。关于企业内部身


份认证的应用,未来还有很多事要做。
前面提到的认证方式还存在一个不足,例如用户在使用 FTP 服务以后,如果再使用 Samba 服务就要
再次输入用户名和密码,单点登录将解决这个问题,目前微软的 Active Directory 通过管理域用户已经
完美的实现了单点登录,Linux 可以通过 OpenLDAP 和 Samba 实现大部分 Active Directory 能够实现的功
能。相信在不久的将来,用 LDAP 做身份认证的技术还会渗透到更多领域,网络计算机、门禁系统甚至是
智能 IC 卡的应用。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 98


企业应用

让 Linux 操作系统更加安全
张虹

众所周知,就安全性而言,Linux 相对于 Windows 具有更多的优势。但是,不管选择哪一种 Linux 发


行版本,在安装完成以后都应该进行一些必要的配置,来增强它的安全性。下面就通过几个步骤来安装
一个安全的 Linux 操作系统。

安装和配置一个防火墙

一个配置适当的防火墙不仅是系统有效应对外部攻击的第一道防线,也是最重要的一道防线。

在新系统第一次连接上 Internet 之前,防火墙就应该被安装并且配置好。把防火墙配置成拒绝接收所有数


据包,然后再打开允许接收的数据包,将有利于系统的安全。防火墙的具体设置方法请参见 iptables 使用
方法。

升级所有已经安装的软件包

一个标准的 Linux 发行版通常会带有超过 1000 个以上的软件包。时刻保持所安装的所有软件处于最


新状态是非常重要的。很显然,这是一个耗费时间的工作,幸运的是现在已经有很多工具可以自动完成
这一工作。其中两个最常用的工具是 APT(Advanced Package Tool)和 Yum(Yellowdog
Updater,Modified)。

有些发行版可能会提供自己的升级工具,可以充分利用它们来实现软件的更新。比如,缺省情况下
Red Hat 和 Fedora 使用的是 up2date;Debian 使用的则是 APT。

如果想安装一个自己的软件升级工具,那么笔者推荐使用 APT。在任何一个搜索引擎中输入所使用
发行版的名字和 APT,都可以快速找到 APT 的 RPM 安装包和所需要的软件仓库位置。

一旦安装好 APT,并且设置好软件仓库以后(一般在/etc/apt/sources.list 或与之类似的文件中设置),


就可以使用以下两个命令来进行软件的更新。以 root 用户运行:

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 99


企业应用

#apt-get update

#apt-get upgrade

第一个命令将从指定的软件仓库下载最新的软件包信息,第二个命令将使用这些信息下载和安装系
统中已经存在的软件的更新版本(如果有可用更新的话)。管理员应该定期执行命令以确保系统总是处
于最新状态。

此外,从 Internet 下载单个文件或软件包的时候,总是使用 MD5SUM 来进行检查。MD5SUM 可以对


从网上下载的软件进行检查,以确保下载的不是被植入木马的版本。

最后,使用者还应该订阅发行版的安全邮件列表。这些邮件列表可以在出现更新软件包,或者对某
些软件漏洞进行修正时及时通知使用者。

禁止所有不需要的服务

一个新安装的 Linux 系统在默认配置情况下,启动时会同时启动很多服务和后台程序。比如有的发行


版会启动 HTTP(Web 服务器)、POP3/IMAP(电子邮件)监控程序、数据库服务器等。而对于大多数用
户来说,这些服务实际上是不需要的,并且这些服务会成为攻击者潜在的攻击目标。所以,为了安全起
见,应该查看这些服务列表,然后禁止所有不需要的服务。

在 Red Hat 系统中,用于配置服务器的命令行工具名为 chkconfig。要列出所有已经安装的服务,可


以执行以下命令:

#chkconfig -list

这时将会显示类似以下形式的内容:

iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off

sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

... ... ... ... ... ... ... ...

squid 0:off 1:off 2:off 3:off 4:off 5:off 6:off

xinetd based services:

rsync: off

... ...

sgi_fam: on

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 100


企业应用

在上面的列表中,0 至 6 的数字表示系统的运行级别。

例如,为了让 squid 服务可以在 2、3、4、5 运行级别下运行,应该执行以下命令:

#chkconfig --level 2345 squid on

如果要在 3 和 5 运行级别上关闭 sshd 服务,则应该执行以下命令:

#chkconfig --level 35 sshd off

使用 chkconfig 命令设置的服务会在下次启动时生效,而不会对当前运行的服务有任何影响。如果要
对当前的服务进行设置,在 Red Hat 中可以使用以下命令:

# service service_name start


# service service_name stop
# service service_name restart
# service service_name status
上述命令中的 service_name 和 chkconfig --list 命令中所列的名字一致。

在禁止了所有不需要的服务后,可以运行 netstat --l 来查看是否已经达到效果。对于仍然需要运行的


服务而言,一定要确保有正确配置的防火墙。

更改不需要的 SUID/SGID

SUID(Set User ID)或 SGID(Set Group ID)程序可以让普通用户以超过自己权限的形式执行它。


一个常见的例子是 passwd,它的访问权限如下:

-r-s--x--x 1 root root 18992 Jun 6 2003 /usr/bin/passwd

可以看到,这里的 owner 执行权限被设置成“s”而不是“x”,这就是一个 SUID 程序。比如,当一个


普通用户执行 passwd 时,它就会以文件所有者(本例中是 root 用户)的权限来运行程序。

很多 SUID/SGID 可执行程序是必须的,比如上面提到的 passwd。但是,很多是不需要的。


SUID/SGID 程序会被一些恶意的本地用户利用,获取本不应有的权限。运行以下命令可以找到所有具有
这一属性的程序:

#find / \( -perm -4000 -o -perm -2000 \)

使用者必须查看这一列表,尽量减少那些所有者是 root 或是在 root 组中却拥有 SUID/SGID 属性的文


件,删除或对其属性进行更改。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 101


企业应用

要删除具有 SUID/SGID 属性的文件要先运行:

#rpm -q --whatprovides /usr/sbin/kppp

然后可以使用以下命令来删除它:

#rpm -e package-name

SUID/SGID 属性位则可以使用 chmod 命令来删除,比如,chmod -s /usr/sbin/kppp。

关注日志

虽然使用者会尽最大努力保证自己系统的安全,但是,现实情况是不管如何努力,都无法使系统处
于绝对安全的状态。下面是其它一些需要注意的事情,它可以让使用者知道是否或什么时候系统被攻破。

一个非常常用、且很容易被低估的入侵检测程序是 Tripwire(http://www.tripwire.org)。该程序会定
期地检测系统文件,来确定它们是否被更改。如果有任何不应该发生的更改出现,Tripwire 就会为用户生
成一个报表。要让 Tripwire 正常工作,需要花费一定的时间来对其进行配置,但它的确值得花时间。

了解系统情况的一个非常重要的途径是查看日志文件。Linux 中的系统日志由 syslogd 监控程序处理,


其配置文件是/etc/syslog.conf。在配置文件中,可以指明什么工具或程序需要记录信息(比如
cron、daemon 或电子邮件等),什么级别的信息需要写入日志(比如 debug、info 或警告等),以及如何
处理这些信息(添加到日志文件或发送到打印机等)。

系统日志也可以远程进行,也就是说把日志文件放置在网络的另外一个系统上。这样做的好处是如
果系统被攻破,那么入侵者将无法删除在其它系统上留下的痕迹,从而可以比较容易地对其进行跟踪。

但是,对于普通用户而言,每天处理大量的来自各日志文件的信息绝非易事,所以转而使用
Logwatch(http://www.logwatch.org)工具。该工具可以定期对系统的日志文件进行分析,然后根据分析
结果创建一个分析报告,通过电子邮件发给 root 用户。因为这些报告一般都比较短,所以适合用户每天
阅读。根据配置,它会对一些信息加亮显示(比如非法登录尝试或端口扫描等)。其配置文件一般位
于/etc/log.d/conf/logwatch.conf,配置文件中的注释可以让用户方便地对其进行设置。

除 Logwatch 以外,还有很多入侵检测系统可供选择,比如 Snort(http://www.snort.org),可以在搜


索引擎中很方便地找到这些工具。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 102


企业应用

安全仍需努力

系统安全并不是一劳永逸的事情,事实上在做每一件事情的时候都要考虑到系统的安全性。管理员
需要保证系统时刻处于最新状态、确保使用了合适的密码、设置了合适的访问级别、每天阅读日志、检
查 Tripwire 报告、阅读所使用发行版的邮件列表等。

本文介绍了一些每个用户都要做的、基本的、重要的步骤。当然,除了本文所述之外,用户还有很
多事情可做。下面给出几个忠告。

1.永远不要使用 Telnet、FTP 或任何其它纯文本的远程会话来传送用户名和密码,只能使用


SSH、SFTP 或与之类似的程序来传送这些内容。

2.确保使用严格的防火墙策略,缺省情况下关闭所有连接,只打开需要的连接,并且要有严格的限
制。比如,需要从工作的地方 SSH 到系统中,那么只允许其基于 IP 通过。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 103


编读往来

编读往来

为了感谢开源爱好者对《开源》电子杂志的厚爱,在第 4 期杂志发布的同时,
进行有奖评论活动。

对于大家反应比较集中的问题,如目录链接的问题,我们在本期已经进行了改
进。对于错别字的问题,现在编辑部人手不是很充足,reivew 的机制还不健全,
我们正在试图改进,特别感谢 Volans 加入我们,并承担了这一期 reivew 的工作,
也希望更多的朋友加入我们。电子杂志 Web 版的建议很好,我们已经采纳,目
前将第一期、第二期推出了 Web 版,我们也会加紧进度,争取以后 Web 版的发
布赶上 PDF 版。很感谢大家的建议、意见、祝福、期望,正是您们的参与,使
得我们有持续下去的动力,感谢大家!

现将获奖的评论摘录如下:

abel6915

杂志里看到篇如何帮助开源软件项目,能否每期介绍一个比较好的,前沿的开源软件项目的具体信
息,最好是学校里的学生或是没有大企业资助的项目,确实需要服务器或是资金之类帮助的,通过杂志
作为桥梁,我们也好找到他们进行帮助或是参与进去。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 104


编读往来

肥同小可

看了杂志,提几个小建议:

1、如果目录可以生成链接,点击相应的文章标题就可以到相关页面就好了,这样会比较方便,不知
道 openoffice 是否可以实现这个功能。

2、页面对应方面有点小问题,比如“RPM 深入应用”目录中是 86 页,但实际是在 88 页。

3、内容越来越好了,看得出来文章整理的很用心,看完对 MID 有了很多了解,赞一个,近 120 页的


内容,真是不错,可以以后每期定一个主题。

4、可以增加一些与社区会员互动版块,如“我们的故事”、“Linux 人物”啥的。

期望杂志越办越好,感谢杂志贡献者们的付出!

Fanxingrui

转眼间几天没发言,就这么多人回帖了,大伙提了很多好的建议,我也想到几个:

1、建议成立《开源》杂志兼职通讯员队伍,可以通过网络招聘的方式,在全国各地都设有通讯员,
并颁发证件,为杂志提供更多新闻素材,并且注重独家,相信这样的一种模式会让杂志更加丰富多彩的。

2、《开源》杂志应丰富资源,走联合之路。《开源》杂志完全可以和报社、网站等媒体联合起来,
丰富自己的资源,同时可以和他们合办一些栏目,即丰富了自己,也通过这些媒体做了宣传。

3、《开源》杂志可以考虑开设“有话大家说”栏目,每月提出一个热点事件,针对行业内的热门关
注事件,读者可以用电话、短信、电邮、论坛等方式最快地传来的种种看法与观点,只求丰富,不求统
一。篇幅不大,但生动新鲜,异彩纷呈,这样会颇有读头。

Helloranee

朋友推荐我来这里的,我对开源这些概念不是很懂,外行,但是,我觉得,一个杂志,尤其免费杂志,
开始做,就需要坚持,还有需要用户量,要做出量来,才会有收益,没有量,无人关注,没人任务它有
商业价值,也就失去了继续做的资金和精力;我提几个建议:

1、搞联合发布,每期杂志除了 pk 上发布外,还在尽可能多的,其他网站上发布,如博客等,电驴
的等,特别是些 digg 类的网站上;

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 105


编读往来
2、除了 pdf 格式和刚刚推出的 web 版,最好再提供个直邮版,相当于把 web 版的首页作为个 mail 正
文直投给所有 pk 用户,因为有些用户是不怎么活跃的,mail 能让他想起 Pk。

3、奖品除了已经开始的只有提供建议的人才有抽奖机会,改变为,不但要有建议,还要网友投票:
建议得到认同多的人得,呵呵——大家都投我啊,我想要个包;

4、杂志中,新闻类的内容尽量少,因为 web 版可发布更多更及时的新闻,杂志中的新闻是该有些深


度,或评论的,无太重的时效性;

5、开通捐款渠道,使得读者可以对杂志进行捐赠,初期用以购买些小礼品,这样可以除了赞助商的
礼品外,还有更多礼品,只是这些赞助而购买的礼品,用以奖励和鼓励作者写出更多更好的免费文字投
稿 pk。

Gutentagswh

几年前开源项目轰轰烈烈,现在有点偃旗息鼓的感觉,linux 的种类太多,导致很多人都望而生畏,
不知道该学哪种为好。开源电子杂志给我们提供了当前开源项目的最新发展,我觉得开源电子杂志应该
更多地普及基础知识,适当辅以提高内容。

Hagjirui

第四期比前几期在外观上有明显改善,几乎每页都有插图,第一期给人的感觉就是大量的文字,缺
少点色彩,现在好了。

还发现第一期的目录上有链接,点文章主题就直接可以到那篇文章,后面几期包括第四期,都不能
再链接了。

SHANSEN

“开源”为主题的杂志,以前只见过 Linuxer(已停刊了),及 Full circle,《开源》吸引我的地


方是比其它的“开源”资料多了很多关于开源的新闻和背景资料,而不是单纯地学习”开源“的专业技
能,毕竟更多的人还只是初学者。为了能让更多的人了解”开源“,我个人建议:《开源》在以后增加

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 106


编读往来
杂志附赠光盘(最好不是 ISO 镜像),最好能包含一些教学视频、教程、软件、硬件驱动等等。拥有
《开源》,生活更美好。

volans

奖品送给需要的人吧,我这问个事儿,就是杂志在 release 前有 review 的机制么?好多错别字啊,


我们应该精益求精得办杂志。如果需要更多人 review,我加入。

淡水湖边

虽说是计算机毕业的,但工作后用的是最基本的一些办公软件,现在经过朋友介绍知道了这个网站,
知道了《开源》这本杂志,看了后真是有重温的感觉,同时也让我了解了最新的计算机动态,真好啊,
谢谢!

pedant

感想

4 期一路看来,编辑是非常用心在做的。如果能够将爱好当成一项事业来做,那一定是一件很幸福的
事。可惜,有多少人现在从事的工作是自己的爱好呢……

体会

(1)始终对 MID 的笔记本定位持怀疑态度,即使有相应的浏览器、Office 软件,这么小的屏幕真的


能够胜任吗?人们的视觉感受舒服吗?我觉得还是定位 PDA 比较贴切一些;

(2)盖茨的“无人愿意去提高软件性能”言论,我不认同。事实上,开源让软件更易定制,以符合
某一类人的使用习惯,从而个人的主观能动性得到极大刺激,更会愿意去改进软件。换个角度讲,评判
性能是否得到改进不是只有一个标准,好比难免有人(比如我)会认为 vista 是 xp 的一个倒退一样。

(3)为 Gnome 与 KDE 的进一步合作感到振奋。本来就受到 windows 的打压,如果还要内斗将会更加


边缘化,求同存异,搁置争议……怎么说着说着就有点胡主席的味道?:-)

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 107


编读往来
(4)“标准本身的成熟与开放程度似乎已变得不重要了,而公关起了更大的作用”,言之有理!盖
茨曾为此专门打电话给美国国防部门高官来压某些州政府,越是如此越是让人对微软仅有的一点好感逐
渐丧失。

(5)关于 GPLv3,首先看 GPL 诞生意义是什么?不就是为了保证软件的自由使用自由分享么?如果


你辛苦弄出来的东西被别人通过各种眼花缭乱的手段弄去卖钱,而你又无可奈何,这绝对是对开发者致
命的打击。因此,我是绝对用户 GPLv3,不能因为短视而断送人类这一伟大创举的前程!

建议

将《开源》杂志由 PDF 下载方式变为 web 发布方式。这样的好处有:

(1)PDF 文件体积较大,要看还要下载,网速慢的地方比较痛苦,并且不是每个人电脑都有 PDF 阅


读软件的;

(2)web 可通过布局、链接等方式改善阅读体验(无论单期还是多期切换);

(3)可以在 WEB 上设置动态广告,比如阿里妈妈、google adsense 等来挣些许收入抵消制作成本;

(4)便于网友在论坛、IM 里相互推荐、传播,毕竟发一个链接地址和传一个近 5M 的文件还是有明


显的区别的。

Megonlee

我是刚接触 Linux,目前使用的是 Ubuntu,在一封偶然的邮件中我来到了 Linux 宝库,一下子下载了


四期的附件,当然现在都看完了,期待第 5 期的到来。

首先看了这杂志,第一感觉是能名了解开源界的最新重要新闻。因为杂志本身是面向多种类型读者
的,所以内容上也是多方面。从我的角度来讲,我是了解开源新闻,学些基本的知识,像服务器这块我
就扫过去,因为还没有相关的知识。总之,第 4 期的最深印象的新闻是 MID 和 GPL V3。

Catandrat

我是一个新手,刚接触 ubuntu 有半年时间吧,但总体感觉 ubuntu 用起来比 windows 麻烦得多,但充满了


挑战性,乐趣无穷啊,不知道大家有没有这样的感觉,无意中看到开源这本杂志,感觉真是不错,既有

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 108


编读往来
详细的技术说明还有最新的 linux 资讯,这个论坛里还有这么多同道中的高手,一直想找个地方向那些
个高手学学,终于来到了,还有《开源》的支持,那简直就是太好了!

myuqi88

版面设计精美,图文并茂,文章内容翔实专业性强对我们一些菜鸟有很大的帮助,同时许多简便实
用的案例更是让人看了受益匪浅,真的很实用很方便的好资料!不过还希望能在增加一些新的基础的和
实用性更强的内容以帮助我们更好的学习和掌握!

冰城大范

我是《开源》电子杂志的一名新读者,经朋友介绍认识了这个杂志,近段时间我把四期杂志都读了,
可以说各有千秋,经过一段时间的考虑,我为 《开源》的发展提以下几点建议,希望我的建议能够得到
大家的认可:

1、增加《个人创意》栏目,因为创意在开源行业中起着越来越大的作用,《个人创意》会给读者好
的灵感和相互探讨的一个平台,这个栏目可以找一些行业高手或是新生代将自己的好想法、好作品展示
出来,供大家欣赏。(可以两个月办一次,这要看读者的反映情况而定)。

2、建议《开源》杂志勇于接受读者诤言,良药苦口利于病,忠言逆耳利于行,满足读者需求,《开
源》杂志才会更精彩,一月一次在《开源》杂志、《开源》网站刊登评刊启事,让读者评头品足,畅所
欲言。(这个活动要持续办下去)。

3、《开源》杂志可以增加“回眸历史”小栏目,让读者回顾一下开源产业的发展历程,建议每期回
顾一个阶段,这样能给今天的读者了解更多过去,知识面就会显得更广了。

www.linuxpk.com 投稿:opensource@linuxpk.com 合作:xiaoli@Linuxpk.com 《开源》 109

You might also like