LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 7672|回复: 31

Debian、Gentoo的包管理机制比较及延伸。也谈如何选择适合的发行版(本站原创)

[复制链接]
发表于 2005-2-13 23:47:08 | 显示全部楼层 |阅读模式
如果你现在想安装一套Linux,又不想随着Linux发行版本的版本号,不停的格式化系统,重新安装,或者升级安装。那么,最适合你的只有LFS、Debian和Gentoo(PS:别的偶不知道,不要打偶。    ),本文不谈LFS,对LFS感兴趣的,可以直接去LinuxSir的LFS专版进行学习。

本文尝试对Debian、Gentoo的包管理机制进行比较,并由此得出了几个有趣的结论。本文对于Debian、Gentoo的包管理,主要谈缺陷和不足,并且尝试提出解决方法。最后,本人水平有限,失误、不足之处在所难免,还望大家批评指正。

正文开始
Debian是老牌的发行版本,有人甚至认为Debian就是GNU/Linux本身,但是,据Debian自己的了解。它只是碰巧通过Linux实现了而已。(Debian,似乎是一种思想?一种生活方式?)
Gentoo是新生的,成长迅速的发行版本。说他成长迅速,不仅在于它提供了主流和非主流的基于各种硬件的Linux的实现,更在于,它还同时提供*bsd、MacOSX、Sun Solaris(就在Sun开放Solaris之后不久)版本的portage。(最初认识Gentoo,是在QQ上与OpenQ的创始人PuzzleBird聊天,他把Gentoo形容成是下一代的Debian。于是偶相信了,开始了艰难的安装。 :beat  :beat  :beat 不过,还是感谢PuzzleBird,是他让我看到rpm之外的世界,之前偶都是用基于rpm版本的发行版的)

典型的Debian提供一种基于i386编译的二进制deb包,采用了一套完整有效的工具指令集来保证整个系统软件包的完整、清洁和有效。
Gentoo的传统上,虽然也提供二进制包,但是,大家意义上的Gentoo,更在于通过源码编译属于自己的系统。通过USE的各个级别(配置文件级别、命令行级别)的设置,Gentoo能够让你轻松得到完全属于自己的,独一无二的Linux系统。

比较:
由于软件包提供的格式不同(一种是二进制文件,一种是源码)。Debian与Gentoo相比,有着更快的系统安装效率。同样的网络情况下,安装Debian要比Gentoo节省更多的时间,通常只需要几个小时,你就可以得到一套完成的Debian系统(包含KDE等等完整的桌面环境)。但是,在我看来,Debian的缺点在于,Debian基于deb的依赖性审查过于严格。也许是因为直接提供的二进制包的缘故。Debian对于同一套软件的细微不同版,也认为是完全不同的。
见下:
  1. ibqt3-mt-dev对下面两个有依赖,可是下面两个已经有firefly补丁的版本了。
  2. 提示:
  3. libfreetype6-dev: Depends: libfreetype6 (= 2.1.7-2.3) but 2.1.7-2.3firefly is to be installed
  4. libxft-dev: Depends: libxft2 (= 2.1.2-6) but 2.1.2-6firefly is to be installed
  5. Depends: libfontconfig1-dev but it is not going to be installed
复制代码

l同样的一个软件包,只是由于编译时的小补丁的不同,就完全不能满足Debian要求的依赖关系。只能推倒,重建系统。
链接见这里:http://www.linuxsir.cn/bbs/showthread.php?t=176129

同样的情况,在Gentoo中完全可以通过同一套源码,配置不同USE来实现。也就是说,在Gentoo中,由于个人USE的设置的不同,上面的Debian的两个包,在Gentoo看来就是一个包,只是配置时候的打了不同的补丁。因此,没有所谓的因为依赖而不能安装的问题。
举例:假设该软件包有两个不同USE,一个是common,一个是firefly,那么对于Gentoo,只要你设定了是采用USE="common"编译,还是采用USE="common, firefly"编译,系统在编译软件包的时候,就会自动决定究竟是否打上firefly的patch。也就是说,在Gentoo中,允许同时存在来自同一源码的,编译时配置不同的二进制文件的存在,而Gentoo在处理依赖时候,除非是的确找不到依赖的文件。否则,Gentoo不会提示出依赖错误(因为确实没有错误)。而Debian在这一点上是过于严格了。

Gentoo的包管理的主要缺点在于采用源码编译,不能够满足快速安装系统的需要。同时,一旦系统的基准USE发生了变化(这经常发生,尤其是你还是Gentoo新手的时候,你很可能因为不知道哪个软件包采用那种USE才好,而在基准中加入了过多的USE),虽然可以采用emerge --new-use world进行对新USE的编译,但是,这时的Gentoo的依赖的包的编译顺序有时会有问题,而导致编译失败。(这个其实是一个依赖的问题,明明正常是1、2、3的顺序可以编译成功的,但是--new-use之后,emerge可能会错误的安排成了2、1、3的顺序,而导致编译失败)。

综上,Debian的问题在于依赖的过于严格。对于依赖的问题,可以采用的方法主要有。
1 强制安装。这是最下策,也是最麻烦的方法。(因为下次遇到同类的问题,还得强制安装,尤其是升级的时候)
2 修改依赖关系。虽然我不知道debian的依赖要在哪里改,但是这的确是一条路。不过,这个也不轻松,因为每次都需要手工修改依赖关系
3 欺骗Debian,直接将修改过的软件包,以debian原名的形式发布,这样可以解决依赖问题。但是,如果采用了debian的source.list中,如果开启了安全站点检验,这一步就无法通过。
4 系统推倒重建,安装Debian的官方版本。OK,如果你对中文显示要求不高,可以采用这个办法。不过,这样的话,就没有中文的粗体和斜体,同时,我觉得看起来也不怎么舒服。
5 就用非官方的版本,不轻易升级。本着够用就好的原则,期待别人解决问题。我,无语。(Hiweed用户适用。向Hiweed致敬)
6 构建一套大系统,包含了所有由于补丁的问题所造成的问题的补丁。也就是大量的非官方的补丁。例如构建一套超大的,可以解决所有依赖问题的中文Debian,不妨叫大Hiweed。费时,费力,难与官方发布同步。
7 为什么不直接将中文补丁提交到Debian官方,或者对应软件开发的官方,这样软件就是Native Chinese Support。岂不是很好?(强烈赞同这个观点,这个应该是最终的解决之道)
8 当然,也可以建议Debian修改它的依赖的检测方式。提供一些的灵活的,tiny的版本号,认为也是同样兼容的。

Gentoo的解决之道:
Gentoo虽然依赖的问题解决得很好,但是,Gentoo编译时间太长。虽然,你可以采用某些方法(比如,设定最简单的系统,设定复杂的USE,去除编译多余的Locale)来确保系统不编译多余的东西。也可以采用打开ccache的方法,建立数据库来加速c程序的编译。但是,Gentoo的安装时间长(通常桌面是几天,采用kde或gnome的情况),频繁升级的话,更是费时费力。
虽然我们不能解决升级时的编译问题。但是,我们至少可以解决安装的时间过长的问题。我们的希望来自教主的homeking的ibox,ibox采用livecd的方式,提供给大家一套完整的Gentoo中文解决方案。新版本的ibox将采用kde做为默认,同时提供迅速的安装到硬盘功能。
Gentoo的未来,在于随着计算机系统性能的不断提高,从源码编译软件的时间成本将会原来越低。同时,如果你有多台电脑,gentoo支持多台电脑采用并行的方式为同一台电脑编译软件。这也可以大大加快编译的时间。

PS:有人认为Gentoo编译的系统,要比Debian要快。我觉得这不是一个事实。因为大多数的Gentoo的用户不懂得如何去最优化自己的系统。因此,编译出来的系统,优化也是有限的。这就给了Debian很大的机会。另外,USE参数设置的过多,也使得自己的系统多了好多自己不需要的功能。这也是一个原因。
PS2:Debian还有一个缺点,就是虽然Debian安装之后很小。但是如果你需要编译程序的时候,你就会发现Debian还要安装各种各样的headers或source,这些,对于Gentoo则是不需要的,因为Gentoo本身就是从源码编译过来的。不缺少那些东西。

最后,谈一谈如何选择发行版。

对于采用Linux单纯作为服务器的人,采用Debian是你很好的选择,它可以快速完成服务器的架设,系统稳定,价格低廉;

对于采用Linux作为桌面的人,如果你很懒,又没有什么时间,采用Hiweed-Debian是你最好的选择,当然,也许你的桌面不能那么随心所欲,或者不能编译好多软件,但是这又有什么关系呢?懒人如你,想必也懒得去弄这些东西吧。

对于采用Linux作为桌面的人,如果你很懒,但是偏巧又有很多时间,那么采用ibox,安装Gentoo是你很好的选择。以后的日子,你只要记住两个命令
emerge sync
emerge -auDv world就可以开心的生活了(绝大部分时间)。

对于想考取Linux认证,做为自己职业的人。建议你去考取红帽或者Novell的认证。企业级的Linux,还是很有前途的。当然,你应该设法找到RedHat AS Server一类的系统来进行安装。毕竟,他们和社区Linux想比,更注重于企业方面的应用。

有人要问,那么linux普通的商业版本,他们适合谁呢?坦白的说,我觉得他们适合那些对于Linux想象windows一样用的人。那么如果你知道你的某个硬件,只在某个商业的发行版中可以很好的使用。那么就用它吧,这个才是它最善长的。硬件支持广阔的发行版。

本文完。
发表于 2005-2-13 23:59:23 | 显示全部楼层
个人感觉,
debian确实有时侯有尾大不掉的感觉:)
他考察稳定性也是从整套系统来考虑的,所以考虑的问题非常多,做的工作也很多,这样更新就慢了,
不过这样有个好处就是用户比较省心,什么都不需要担心,什么debian都给自己安排好了,
但是debian没有安排好的东西,自己想动手就有些困难,几乎是要重建系统,这个对debian来说
好象是不可能完成的,要这样和lfs差不多了
好象debian倒成了××提供商,只是没有商业行为,

我个人是这么做的,debian没有提供的东西就不用,有时侯很委屈自己,不过为了系统的稳定性,一般不乱
装其他的冲突的软件,毕竟整套系统都测试了的,要是换一个地方,不知道会出现什么问题,这个
不是积极的debian使用者的习惯,照理说我们应该去测试新软件和新补丁,但是这样会很麻烦:(,

经常会出一些问题,
在我还比较菜的情况下,我只要够用就可以了,
:P

总之debian安装软件快速,稳定性好,软件包数量多,
能很快的建立自己的使用环境,这样就足够了,


对于gentoo,个人认为还是不错的,
但是我不希望我需要一个软件的时候再去编译,比如我需要x的时候我编译一个xorg,但是我要
等2、3个小时才能用,这个等待的过程是多么的难熬呀:P,还是做什么爽快一点的好,
gentoo好像也可以装编译好了的包的,不过这个和debian比的话,不知道有没有优势,
另外一个很重要的方面,就是国内debian的镜像到处都有,而且速度都是很快的,我在教育网里面
随便找一个镜像速度都是500多k,如果是校内的镜像速度都是10000k,就算重新装系统从开始
到配置好能用的系统(包括浏览器,播放器等等),最多只要15分钟(以前的配置文件都还在的话)
但是如果gentoo的话,未必当天能用,我当时是从stage3开始的,网络速度要好,机器配置要好

我记得我当时是装了大半天,基本上完成了,包括图形界面等等,浏览器,输入法,这些,反正
能顺手的使用了,不过当时我是一边看文档,一边编译的,所以有些时间耽误了,编译比较久的
主要是内核,当时2.6.10的编译了5次都失败了:(,我太菜了,没有办法,后来只好用2.4.27的
代替了,这里浪费了好几个小时,后来编译xorg大概花了2-3个小时,基本上就是这些花了一些
时间,其他的都是通过distcc来编译的,如果你想用gentoo的话,最好找几台电脑一起来编译,
编译mozilla花的时间估计最长,我四台电脑一起编译,花了居然将近一个小时,(主机gentoo,
其他三台都是debian,debian装软件方便,新装一个带distcc的不要10分钟,)两台电脑编译
内核才需要两分钟呢:P,大家还是不要编译mozilla的好,开始用的是icewm,后来distcc编译
gnome-core,花了将近一个小时:)

gentoo有一个好处就是编译什么都很容易成功,(当时编译内核失败可能是我不太了解那台电脑
很多硬件配置不是很清楚,)但是其他的平台就不一定了,比如像openmosix
mozilla,我在debian上面还没有编译成功过,好像gentoo改了一些东西的,一次成功,但是
openmosix我在官方下了源码以后,打补丁编译了好几十次。在几台电脑上面来回编译了几天都不
行,但是在之前gentoo一次就编译成功了,

gentoo里面有很多好玩的东西,而且新软件很多,更新的很快,相比较debian就差一些,很多软件
都更新的很慢,而且有自己的原则,有很多包是不能进debian的软件库里面的,有时侯我也埋怨
debian好死板:D,不过这个主要是为了没有后顾之忧,怎么说呢,有时侯不太可能完美的
所以个人认为gentoo很适合玩家,你总是能够找到很多好玩的东西,像内核他就有很多种,针对
桌面用户,游戏用户,等等,debian适合用户使用,完成日常的工作,当然gentoo装好了也可以
gentoo就像年轻的小伙子,有激情,有冲劲,debian像一个中年人,做什么都不紧不慢的,我都
替他着急:P,但是如果你想安安心心的用你的操作系统,不怎么喜欢变化,还是debian好一些,
gentoo和debian升级都很方便,不过
我不太喜欢升级,一次装好了,就一直用着了,老是喜欢用新软件好像不是一个好习惯,新软件
总是喜欢出一些小故障,但是就算一个月才遇到一次,我也会很心烦:(

另外说到这里,在用debian的过程中,我心理上总是有一点别扭
debian是386及其以上通用的,我就想这个我的机器来用的话,是不是不能尽其所能,机器的性能
是不是能够完全的发挥出来?这个也是我前些时候尝试gentoo的原因,我想用奔腾的朋友是不是
心理更不平衡:P,不过后来gentoo繁重的体力劳动把我快整跨了,最后系统装完了,
玩了几天就放弃了,还是老老实实的用debian

另外还有一点就是如果你的空间特别小的话,装gentoo就有点不适合的了,一个portage树就要
占用400多兆的空间,再加上gentoo-source也要200多兆,这个就已经是600多兆了,另外编译
xorg的时候,xorg的源代码也有200多兆,等等,还有一些比较大的软件
而且更新portage树是一件很痛苦的事情,我当时的速度是500K,但是更新了一个小时,

相比较起来,debian更新一下的话,只要3秒左右:),另外1G的debian算大的了,不过1G的
gentoo基本上只能算一个完整的系统,另外debian现在还是离不开kernel-source,如果什么时候
能够不要kernel-source了,估计还能更小一点,我现在想抛弃所有source,只要binary就可以:P
回复 支持 反对

使用道具 举报

发表于 2005-2-14 00:11:37 | 显示全部楼层
PS2:Debian还有一个缺点,就是虽然Debian安装之后很小。但是如果你需要编译程序的时候,你就会发现Debian还要安装各种各样的headers或source,这些,对于Gentoo则是不需要的,因为Gentoo本身就是从源码编译过来的。不缺少那些东西。

所谓“各种各样的headers或source”不需要自己装

建立 Debian 的编译环境是自动的

要编译什么,就用  apt-get build-dep 什么
她会自己安装好编译所需要的一切的一切

一般情况下
来个
apt-get build-dep xmms kate gftp
就可以满足绝大部分情况下的编译环境要求了


同时 ,  Debian 里有 apt-build 工具可以用来从源码编译安装软件 , 就像 Gentoo 的 emerge



中文粗斜体更不是问题 , 官方的 Debian 支持中文斜体
如果使用自带粗体的中文字形,就直接可以显示中文粗斜体了

另外 , FireFly 的补丁快要进入官方了
回复 支持 反对

使用道具 举报

发表于 2005-2-14 00:13:40 | 显示全部楼层
PS: 我习惯于把要自己编译安装的东西做成 deb 包来安装 ^_^
回复 支持 反对

使用道具 举报

发表于 2005-2-14 00:16:03 | 显示全部楼层
Post by jhuangjiahua
PS: 我习惯于把要自己编译安装的东西做成 deb 包来安装 ^_^

这个主要是为了共享吧,或者是为了以后再次使用
:)

同时 , Debian 里有 apt-build 工具可以用来从源码编译安装软件 , 就像 Gentoo 的 emerge

apt-build从来没有用过:) 感觉太麻烦,
喜欢什么事情都尽快解决
好像用debian到现在,就用过apt-get
所以一直都没有长进
:P
回复 支持 反对

使用道具 举报

发表于 2005-2-14 01:06:06 | 显示全部楼层
太长,令我产生恐惧心理,看不完

freebsd融合了package和ports(sources,gentoo的portage就是从它来的)两种包管理方式。debian重package轻sources,gentoo偏sources轻package
从这方面看bsd很不错,但是有鉴于linux的流行对大型商业公司以及其他很多组织和个人产生的影响,很多软件、驱动只有linux版本的。bsd上想要使用,也就只好通过模拟linux。效率以及安装的复杂程度都远高于linux
蛮遗憾的

没有发行版能尽如我意,所以现在桌面还是windows为主
回复 支持 反对

使用道具 举报

发表于 2005-2-14 01:27:02 | 显示全部楼层
唔,两个伟大的发行版,一个source,一个binary。
回复 支持 反对

使用道具 举报

发表于 2005-2-14 12:07:44 | 显示全部楼层
我认为在机器上装两个linux的发行版是很有好处的。
回复 支持 反对

使用道具 举报

发表于 2005-2-14 12:13:57 | 显示全部楼层
这篇文章值得加精, 而且我还要移到咱们GENTOO版呢...谢谢老虎兄
回复 支持 反对

使用道具 举报

发表于 2005-2-14 12:22:04 | 显示全部楼层
Post by 小劲鸭
这篇文章值得加精, 而且我还要移到咱们GENTOO版呢...谢谢老虎兄

这篇是典型的基础性介绍文章,最合适在基础版发布。对gentoo版的高手们不大适用。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表