以Funtoo为基础的Linux桌面系统(1)

这个系列的最初起源是一大堆牢骚。当我觉得自己拯救自己的时候,我问了自己这样的问题——如果Ubuntu是错的,那么什么样的桌面系统是对的?也许我尚未找到答案,但至少我觉得以下几点是一个优秀的Linux桌面系统必须具备的特性

  • 源代码是开源软件的灵魂,优秀的包管理系统是强健的骨骼;这个系统必须无缝的升级并且尽可能的贴近源码。
  • 桌面系统必须是轻量级的;它可以快速的启动和关闭。
  • 使用什么样的应用程序应该由用户选择,而这些应用程序之间可以通过统一接口调用。

第一个要求将我引向了Gentoo。Gentoo Linux是以源代码为基础的发行版。它最重要的特色就是portage/emerge包管理系统。每一个Gentoo软件包全部都会在初次安装时从软件的源代码编译生成。每当软件推出新版本的时候,portage/emerge可以帮助用户重新编译并且安装新版本。同时,portage/emerge还可以根据用户的需要,安装同一个软件的多个不同版本。因为不需要二进制和打包的中间过程,这种升级就真正做到了“无缝”。因为系统组建之间之间无非就是动态链接和静态链接创建的简单耦合。所以,它也消除了以二进制文件为基础的包管理系统所创建的不必要的强耦合关系。这使得用户升级和调试单独软件包是获得了充分的自由。这种自由还体现在一种叫做Overlay的机制上。Overlay就是“覆盖”的意思。Gentoo通过这种机制让用户可以创建自己的软件包,并且将这些软件包按照一定的规则排列成树状结构来覆盖/定制官方默认的编译选项和软件特性。当然,用户也可以给自己的Overlay中添加新软件。很多用户在使用Gentoo的同时会创建自己的Overlay。我也将自己的对软件包的选择固化成了一个Overlay,你可以在这里找到它。Funtoo Linux是在Gentoo项目的基础上发展起来的新项目,它区别于Gentoo的最大特色在于以git为核心的软件包更新机制(虽然现在Gentoo也支持以git为基础的同步和升级)。除此以外,Funtoo还提供了比Gentoo更优秀的用户辅助工具——比如boot-update,所以我选择了Funtoo作为基础来建造自己的桌面系统。

对于第二个问题,我的答案是Openbox。为什么不是Gnome或者KDE这样的Desktop environment?因为Gnome项目已经“误入歧途”,至少这是我通过观察得到的结论。而KDE却也不能称作“轻量级”。那么只有在众多的Window Manager(窗口管理器)中选择一款了。我最初尝试了Fluxbox,它非常优秀,可是对于cjk用户并不友好,因为我的Firefox的窗口标题连不能显示中文或者日语这些双字节文字。于是理所当然的,我选择了Openbox。Openbox的开发相对活跃,并且拥有广泛的用户基础。很多发行版都提供了Openbox软件,更有一款非常引人注目的Crunchbang发行版将Openbox作为桌面系统解决方案的基础。这也正是我学习的对象。

最后一点是最贴近用户的问题。每个人对软件的偏好不一样,所以,桌面系统中使用什么样的软件应该由用户自己来决定。一个Web开发者的桌面系统和一个Android开发者的桌面系统应当有很大的区别。比如,前者可能需要curl,bluefish,python/PHP编辑器和多个不同的浏览器——采用wine或者虚拟机安装的IE,不同版本的Firefox和Chrome——等等;而后者,则需要编译Android软件的必要的库和工具,可以运行虚拟机的Java环境,eclipse集成开发环境等等。核心工具集以外的软件,在大多数情况下只能被称作“冗余”而别无他用。当Ubuntu一股脑塞给我OpenOffice套件和Evolution的时候,往往我在安装结束后做的第一件事情就是卸载掉这些冗余。另一个问题是应用程序之间的接口。比如,Windows的COM组件,还有Mac OS的Apple Script,它们都提供了一个完全或者不完全的统一接口来解决应用程序之间通信和“宏操作”的问题。Linux桌面也同样必须拥有这样的机制,否则可能连copy/paste操作也是问题。DBus就是解决这个问题的不二之选。

发表评论