rpm和deb从本质上就代表了不同理念
仔细考虑rpm的依赖关系 其实发现redhat当初考虑rpm 只是考虑到了从光盘这个给定范围内安装指定包的途径 由...
扫描右侧二维码阅读全文
05
2008/12

rpm和deb从本质上就代表了不同理念

仔细考虑rpm的依赖关系
其实发现redhat当初考虑rpm
只是考虑到了从光盘这个给定范围内安装指定包的途径
由于源的范围很窄
所以他没有过多考虑卸载软件已经更新软件
他们当时需要的只是一个能够解决依赖关系
解决当安装A的时候要把B也安装进去问题的方法
从这个角度来看RPM工作的不错
其实你只是从redhat的光盘上安装软件
他看起来也不错.虽然有时候会安装你觉得完全依赖不到的东西
但是他们的解决方法就是.为了万无一失.凡是引用到的东西统统装进去.反正是从光盘上的.速度不会太差
但是遇到信息爆炸和软件数量激增的情况下
就很难去管理这么大一个库
而rpm的设计方式注定了无法别人参与维护这个源

而deb的管理.其实应该说是apt的管理
从一开始就源于debian的包或者源不可能只有一个组织维护
其贡献者会非常多
所以他的依赖比较松散,而且对卸载和更新的要求考虑的比较周到
而之后的yum,只能是把rpm的依赖关系搬移到网上
并没有本质上解决rpm的痼疾.
所以当rpm遇见个人发布的内容的时候
如果使用默认的rpm打包方式
会发现你打出的包由于依赖关系安装很麻烦.卸载更加是件几乎不可能的事情.
因为你的应用不是redhat的.不在他们的光盘中

redhat之所以放弃桌面版linux市场
其一是linux桌面版确实很难盈利
其二是在本身就是开源环境的条件下
软件的更新和加入如此频繁.
在网络速度已经很高的前提下就开始暴露出来的rpm打包软件难以维护的问题
到后面已经是积重难返了.
而退缩企业市场,企业市场出于稳定性和可靠性,
不可能安装来自那么多第三方源的软件
这样redhat维护和管理一个较小的软件源的可能性就大大增加了.

我们看到debian或者ubuntu的系统
都是一张CD,而这在他们看来是基础CD
可以通过这个CD扩展
而redhat和suse的概念就不同
要不是DVD,要不就是几张或者十几张CD
这些CD.就是他们的全部内容
你要安装这之外的软件.将会非常困难.

由此我觉得.redhat的rpm代表的是狭隘以及短视,封闭
而deb或者gentoo的包管理方式.更加开放和富有远见.

Last modification:November 26th, 2018 at 04:16 pm
If you think my article is useful to you, please feel free to appreciate

19 comments

  1. wwek

    我是搜索引擎跑了的。呵。

    对于大多数来说 编译安装软件真的很费时间。 大多数情况不需要去改源码。仅仅是使用软件。

    比如我要做一个 nginx mysql php的网站。 要采用最新的软件版本。 我还是的编译 安装真的很费时间。

    要是大家统一提供 rpm deb的包多好。

  2. Terry

    其实标题是没有问题的,两者确实是完全不同的风格,代表了不同的理念。

    不过装备了改进增强过的YellowDog Updater,也就是YUM之后rpm不再是hell。在新版本的Fedora和RHEL5/OEL5中体验一下再说吧,拿OEL来说至少通过免费的Public yum源跨版本升级和Debian也差不多了。

    但是yum+rpm的组合短期内肯定是无法达到apt+deb组合的境界,毕竟早就输在起跑线上了。至于Gentoo那就更不一样了,那是BSD ports了,不熟。其实Arch的pacman包管理也是很出色的,扯远了。

  3. well

    弱小的东西有时候更强大

  4. 一米阳光

    对于yum个人觉得已经很不错了,需然fedora没有ubuntu好用但也不能说明apt比yum好

  5. JulyClyde

    其实rpm本身不算很烂,烂的是用rpm的发行版太多了,相互不沟通,造成同一个软件在网上对应多个RPM包,再加上行业教育的缺失,市面上相互抄袭的书籍和教程大量渲染rpm而忽略yum,更加恶化了rpm的现状

  6. 非狐外传

    rpm的这个问题确实头痛,另外使用不方便的一点,就是我只想来个安装基本核心系统,也好抽换3张cd,真是比较麻烦。
    后来自己用,开发服务器,就用ubuntu了
    正式服务器我是想用archlinux或者freebsd了。

  7. lark

    urpmi 是在吸取了 apt 的优点之后开发的,和 apt 比较起来,有几个优点

    urpmi 更为智能, apt-cache search foo 很多时候噪音太大,查出来的东西过多,apt-get install 又不能智能选择或者提供选项
    因为使用了全索引,urpmf 可以查询一个文件名在哪个包里面,即使这软件包没安装。而 apt 命令做不到,对于从命令查软件包而言,urpmf 要好太多(apt 可以通过 wajig whichpkg 补足,但这个工具实际是用 packages.debian.org 做的在线搜索)

    urpmi 的缺点就是其索引太大,urpmi.update 如果遇到网络较慢的情况,实时做会非常痛苦,等半小时到一个小时是常有的事情。我一般会建一个本地 mirror。遇到 urpmi.update 索引检验失败会更让人伤脑筋。而 apt-get update 更新索引是很快的。

    urpmi 没有解决 rpm 的固有缺陷,我家里的服务器从 Mandrake 8.2 一直升级到 Mandrake 10.2,终于遇到某个 rpm 包无法更新也无法删除的问题,加之之前遇到很多需要手工解决的 rpm 数据库/依赖问题,最后换 debian 了。

    @sbilly,好久不见

  8. ghost

    redhat之所以放弃桌面版linux市场
    其一是linux桌面版确实很难盈利
    其二是在本身就是开源环境的条件下
    软件的更新和加入如此频繁.
    在网络速度已经很高的前提下就开始暴露出来的rpm打包软件难以维护的问题
    到后面已经是积重难返了.

    严重的不同意这个观点!为了一个打包问题放弃一个市场?只能是第一个原因!

  9. Johnny Woo

    还有一个.aptitude search

  10. Johnny Woo

    apt-cache search

  11. sbilly

    同样是基于 rpm 的 Mandriva 的 urpmi 就比基于 deb 的 apt- 之类的命令方便得多

    我要在系统里面安装一个包含 some_command 这个程序的软件包,但是我不知道这个程序被打包到哪个软件包里面了,urpmi some_command 直接可以安装, apt- 系列的命令呢??

    http://www.sinoutopia.org/wp/?p=1197

  12. Johnny Woo

    以公司为制作方的包管理
    都会希望把所发布版所包括的包都由自己发布
    所以强依赖关系对他们不成问题
    而且所造成的更新不便对他们也没有问题
    因为过一段时间才发布光盘版才能安装么
    rpm是没有一个可以共享发布的平台
    这种理念上的差异.造就了RPM的一些特性.
    所以并非rpm无法做到deb那样的情况
    而是不容易做成那样.因为当初的设计理念就不同
    如果要做到apt那样或者deb那样.那么最后其实就是一套一样的apt而已.

  13. rollenc拼博

    Links for 2008/12...

    The world's worst way to market Linux
    In Where? Who is marketing Linux? Why Worst?
    The answer is: Nanchang, China. ZF forced the Internet cafe to pay the setup fee for Red Flag Linux.
    rpm和deb从本质上就代表了不同理念 redhat的rpm...

  14. Martian Guo

    我觉得造成现在rpm如此混乱的情况是因为发行版缺少一个大的软件包管理源和数量众多的基于rpm包管理的发行版,像rh发行版,他的所有官方软件包就只有几张光盘里的内容,很多时候我们需要安装一个第三方的软件,只能是找源码或者到rpmfind.net 上去寻找第三方的rpm包,而正是因为这些第三方的rpm包导致了更加混乱的依赖关系,目前使用rpm作为包管理的发行版有很多,每个发行版打包都是基于自身特定的版本,而rpm默认的打包依赖关系检查是严格到一个具体的文件的具体版本号,而且一般情况下rpm包总是喜欢把一个软件拆分成很多个包,这样就造成 RPM 发行版的依赖关系要更加复杂(这些其实是完全可以避免的), 发行版之间的软包命名和一些文件的安装路径一般都有差异,这样导致安装第三方rpm包会出现各种怪问题,像debian 这种基于网络分发的发行版,似乎是想把世上所有的软件都吸纳进源里,事实上debian的源是也是最大的。而deb在处理依赖关系上一般是基于包跟包之间的版本匹配,也没有rpm那么严格的多,所以deb包可以很方便的升级维护,当然deb包也存在依赖关系。rpm的更新是基于特定发行版的,像RH系统,update 的话也仅仅是一些软件包的修正,而不会去更新软件包的主版本,实际上rh系统提供的up2date 也只是作为在这个发行版上的软件包的修正版本更新。yum,只能是把rpm的依赖关系搬移到网上,确实是这样,想象一下在一个没有统一源管理,而又强制检查包的依赖关系,甚至同一个发型版的不同版本之际都严格限制软件的版本号,这这种情况下想把发行版从1.0升级到2.0是一件比较繁琐的事情。我到是更喜欢像gentoo这种系统,没有一个特定的版本,我甚至忘记了我现在的gentoo是什么版本,所有的更新都是基于每个软件包的,我可以有选择的更新需要更新的包,其实debian 也是一样,可以混合不同版本(发行版本号)的软件包一起使用。对于rpm源管理,实际上维护spec打包脚本是非查容易做到的,很多时候产生的依赖问题并不是rpm包本身,而是打包的人的习惯问题,同样的源码,同样的配置编译,为什么用rpm包会有依赖关系而用deb就没有?

  15. Timo

    deb跟gentoo的还是有区别的。
    gentoo跟bsd的ports有的一比

  16. eagleguo998

    我觉得你这是偏见。必竟yum资源的发展要比debian晚很多,所以资源中的软件不如debian丰富是肯定的,但是就库中已经的软件的安装,升级,卸载……还是相当的容易方便的。不要用有色眼镜看待它人的方法。

  17. Johnny Woo

    >>但是就库中已经的软件的安装,升级,卸载……还是相当的容易方便的。
    我不同意这点
    你试试看从fedora core 1一直升级到fedora 10看看
    能不能不用处理任何的依赖关系就能一路只是修改源update上来.
    能够处理好依赖关系.只看这一点就够了.

  18. Johnny Woo

    我没用过后来的Mandriva了.
    不知道是不是会发生这种情况
    当我想删除foo了
    urpmi remove foo(我不知道具体语法)
    会不会然后发现了
    "o...shit...怎么bar也被删除了....我还有很多关于bar的内容呢...."

  19. sbilly

    我要安装一个命令 foo 而我不知道这个命令在 bar 这个包里面
    apt-search foo
    apt-get install bar

    而在 urpmi 里面,简单优雅的
    urpmi foo

    你说哪个简单??

Leave a Comment