分享

Kxn’s eXercise Notes ? RPM vs DEB的争论

 流浪的苦儿 2013-05-04

RPM vs DEB的争论

这个论题也算是一个老坑了,我总是看到很多人说 debian 系统如何如何好使,apt 多么多么强。而 RPM 系统里面包依赖关系多么乱啥的。因此得出 DEB 这个包管理系统要比 RPM 这个包管理系统要强的结论。不过在我看来,这些问题要么不是问题,要么跟包管理系统一点关系都没有。

先说 DEB 派的几个论据

1: apt 系统用起来很方便
对, apt 系统用起来确实很方便,但这是在 rh9 时代的事情。现代基于 RPM 的系统,基本都有相对还不错的管理器,比如 fc 用的 yum, suse 用的 yast 等,虽然这些玩意可能也有点小毛病,比如 yum 相对 apt 来说要慢一些,但是总体来说,并不是致命的缺陷。只要有容量比较大的源,一样可以很爽的用。目前看来, FC 正在往 deb 的大源方向发展,FC 的官方源里面东西也相当的多了。
2: debian 系统比 redhat 系列的好使
这个说老实话,没有特别觉出来,当然这个跟使用习惯有关。倒是我觉得 debian 太过顽固,居然能跟 mozilla 打起来,搞的 firefox 都得改名成 iceweasel,导致一些网页上面的认 UA 的 javascript 不好使。相比之下,ubuntu 比起来 debian 这样的革命者就好不少,至少不会因为意识形态的问题跟人打架。
3: RPM 包的依赖关系比较混乱
这个我其实觉得跟 RPM 本身没有什么关系,倒是跟做 RPM 的人的习惯有关系。不知道是什么历史原因导致的,RPM 发行版的打包者通常很喜欢把一个包拆得很碎,连一个 snmp 都要拆成三个包,而 deb 系统在这方面就没有这么激进,通常就是一个软件拆成 base 和 dev ,只有比较大的包才会考虑分一下。这样就造成 RPM 发行版的依赖关系要更加复杂,这些依赖关系都是人手写的,维护代价上升很可能就造成一些混乱。这个确实是 RPM 发行版存在的问题,不过只要你自己会 build rpm, 那么基本依赖关系还是可以解决的。

下面说我自己感觉 RPM 系统优于 DEB 系统的地方

1: 打包容易。RPM 系统只需要写一个 .spec 文件就可以打包了,而 DEB 的我看了半天说明也还是没有找到门道。还要建一堆目录啥的,这对专门的打包者可能不是个问题,对我就是想临时 build 一下的人来说,就有点浪费了。
2: 有 rpmfind.net 这个好网站。deb 给我的感觉似乎是想把世上所有的软件都给吸纳进源,确实 debian 的源容量相当之大,很多奇怪的软件也都在 deb 源里面,但是经常还是有些东西找不到的,这时候 rpmfind 网站就很好用,我经常的用法是在上面找到 SRPM 然后下来自己改改 .spec build 一个适合自己系统的出来。 而 deb 似乎如果源里面没有而你不掌握打包技能,那么基本你就只能当 ./configure 一族了。
3: 配置文件拆分不那么激进。跟拆软件包的策略正好相反,保守的 deb 在拆配置文件上面下的力气,要比 rpm 系列大很多,拿 httpd 来说, Redhat 系列直接就拆成一个主的和一堆散的放在 conf.d 下面的就好了。而 debian 则是拆成了很多小的放在 mods-available 目录里面,需要什么,就 ln-s 到 mods-enabled 里面。这样看起来挺好,但是配置文件这东西哪里是那么好拆的,有些逻辑不好处理,于是他又搞出来一个 xxx.load 和 xxx.conf 的东西。最后搞到我都不知道他这个配置文件到底包含了什么。配置一个我本来会配置的东西,还要研究半天他怎么拆的这个配置,搞的很麻烦。当然这个我承认是个人喜好问题。但是我认为作网站运维的时候,应该使配置文件简单化,只完成够用的功能,而不应该为了扩展方便弄成这么一堆花儿,回头出问题了排查都麻烦。
4: 商业软件对 RPM 系统的支持更好一些
很多商业软件只有 rpm 版本的,或者安装脚本就是按照 RPM 风格的系统配置文件做的。deb 系统下面虽然有 alien 这个工具可以转 rpm ,但是并不能转里面软件对系统路径的依赖,很多软件都是到固定的地方去读取系统配置或者调用系统程序的。

基于以上原因,我在我维护的所有 Linux 系统上面都是采用基于 RPM 的系统。而且我见到的所有用 Linux 的大型网络公司,基本都是在用基于 RPM 的发行版跑服务。我想很多情况下原因也就是在于,在运维人员看来,rpm 和 deb 都差不多,都可以用得很爽,而 RPM 发行版在商业软件支持上有小小优势,就用 RPM 发行版了。

21 Comments ?

RSS feed for comments on this post.

  1. 这篇文章真是牛鼻到家了!!!

    Comment by atppp — March 11, 2008 #

  2. 拜!

    Comment by polo — March 11, 2008 #

  3. orz.

    Comment by xjb — March 11, 2008 #

  4. 需要什么就enmod一个
    a2endmod/a2dismod
    lighty-enmod / lighty-dismod

    Comment by anonymous教众 — March 13, 2008 #

  5. redhat有一个地方做得很不好。就是init脚本在检查文件系统时,对所有fstab中的文件系统都检查的很严格,经常导致重启服务器停在init那里。机房没人服务器就只好挂那儿了。我现在重启redhat服务器都是先touch /fastboot,然后重启。这点很不爽。另外yum做得确实不如apt好用,而且配置文件没有apt简单。

    debian系列要好的多,只对根文件系统检查严格。

    Comment by hanwoody — March 30, 2008 #

  6. 所以说啊,习惯的力量是可怕的,是可以压抑住新生力量的

    yum的配置文件太垃圾了;
    rpm的混乱的依赖关系其实不是由于拆包,而是由于用RPM的发行版太多了。将来deb也得这样

    Comment by JulyClyde — April 3, 2008 #

  7. yum 配置文件里面那点内容和 apt 基本是一对一的吧,为啥说垃圾?要说垃圾我觉得都是垃圾了。。

    一般没有人会跨发行版用 RPM 吧?单就同一发行版之中,RPM 的依赖关系也是比 deb 复杂的。

    Comment by kxn — April 6, 2008 #

  8. 单行配置文件方便处理
    而ini格式的配置文件就不方便脚本处理了。所以说yum的比apt的差

    高手当然知道到哪去找合适的RPM包。但现实中出的事情很多都是由于新手滥用别的发行版的RPM造成的。这个其实不是RPM本身的问题,但确实rpm已经无法挽回的问题。

    Comment by JulyClyde — April 7, 2008 #

  9. yum的源太少了,

    debian国内源多阿

    Comment by xmms — April 9, 2008 #

  10. 支持 Debian

    Comment by xmms — April 9, 2008 #

  11. Debian比RH好
    apt比yum,yast牛

    ……

    Comment by xmms — April 9, 2008 #

  12. 配置文件被拆开也是在可以拆的情况下,我见到的就只有lighttpd,可是lighttpd的拆很方便,一个模块单独配置好,enable就行了。

    Comment by vpn1 — April 9, 2008 #

  13. Orz康神

    Comment by bonehead — April 9, 2008 #

  14. 路过,纯拜

    Comment by Tinro — April 9, 2008 #

  15. yum的源因为用的人多,显得就少…

    orz…

    Comment by yh — April 10, 2008 #

  16. to julyclyde:

    我觉得要是从你这个角度来说的话,yum 的配置反而优于 apt 了。。。单行配置文件扩展性差且不直观,ini 方式的扩展性好很多,而且这配置文件也不是给你的程序用来处理的,是给人用来编辑的,人编辑的时候那当然还是直观点好了。。。

    Comment by kxn — April 10, 2008 #

  17. 其实两者区别只有一点比较重要:大企业都是默认支持RPM的,呵呵。
    另外,的确很讨厌debian里边把一个配置文件都拆得零零落落的。

    Comment by freelancer — April 10, 2008 #

  18. 拆配置文件、单行独立语义的配置文件有利于机器自动处理。特别是像apache+mod这种形式的软件

    如果yum习惯于每个配置文件里只放一个repo的话,其实就和apt的单行没啥区别了

    Comment by JulyClyde — April 13, 2008 #

  19. 回 rpm 的优势:

    1: 看半天文件不如看半分钟说明
    deb 打包基本上在 源码目录下执行一次类似
    dh_make -e 您的邮件地址 -f ../源码tgz包
    就搞定了需要的文件和目录,

    再 dpkg-buildpackage -rfakeroot
    就可以生成 deb 包。

    2: rpmfind.net 可是 RedHat 不推荐用的呐。
    另, Ubuntu 有 getdeb.net
    还有 Lindows 提供的 CNR 点击(安装)运行

    3: 分拆利于机器自动处理
    方便编写自动化和 GUI 管理工具

    4: Ubuntu 赶上来了,
    许多商业软件都有 Ubuntu 的 deb 包了。

    并且,RedHat 确认正在转向 deb

    Comment by 飘过 — June 5, 2008 #

  20. 那我也来回一个吧

    1: 学习了,以前确实不知道,当然我比较怀疑这样做出来的包的好用程度,至少 sysinitv 的启动脚本得有个能起能停的吧。
    2: 总算有个能找包的地方了, redhat 不推荐用 rpmfind 的理由基本跟手机厂商不推荐自己刷机一个道理,如果你知道自己在干什么,那还是提供比较多可能性比较好。
    3: Redhat 的也不是没有分拆,我的观点是,debian 拆得太过分, apache2 的配置能当反例了,像 rh 那样很少需要改的功能在主配置里面写好,其他 conf.d 里面每个文件是一个,就挺好的。
    4: redhat 转向 deb 的这个消息的原文我怎么也找不到,找到的全是中文的,而且中文版本也只是说支持,根本不是转向 deb

    Comment by kxn — June 8, 2008 #

  21. 1 不明白这种打包方式和sysvinit有什么关系
    2 rpm包品种太多了。呵呵。如果redhat自己什么都提供就好了。可惜redhat是个太监操作系统,啥都缺
    3 debian不也是那样拆的吗?都是conf.d/形式的
    4 没有好的依赖管理工具才是知名缺点;rpm和deb倒是关系不大

    Comment by JulyClyde — June 11, 2008 #

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多