yum安装 源码安装 哪个好

张映 发表于 2013-02-03

分类目录: linux

标签:, , ,

根做运维的朋友聊天,谈到了,yum安装和源码安装哪个好的问题。真没想到,关于这个问题,分歧还挺大的。有的人认为,不用源码安装就不是好的运维,不是好的系统管理员。这帽子扣的有点大了。在此我想说一说我的看法,经常看我博客的,也许知道,前期我写关于服务器的文章,基本上都是源码安装的,后来基本上是用yum安装的,除非yum源里面没有,我才会源码安装。在我看来,yum安装和源码安装,基本上没区别,最终还是生成系统所需求的文件,有什么区别呢?

一,yum安装和源码安装,方式的不同

1,yum安装是将yum源中的rpm包下载到本地,安装这个rpm包。这个rpm包是别人编译安装好的二进制包。这种方式与其说是安装不如说是,更新来的更确切一点。

2,源码安装,下载是源码包,要进行编译和安装,编译过程,可以进行参数设定。

二,yum安装和源码安装,优缺点分析

1,yum安装的优缺点

yum安装的优点,做运维的都很清楚,安装东西,方便快捷,特别是不用考虑包依赖。

yum安装的缺点,安装过程,人为无法干预,不能按需,安装。源里面有什么就安装什么,安装的版本也比较低。

2,源码安装的优缺点

源码安装的优点,编译安装过程,可以设定参数,按照需求,进行安装,并且安装的版本,可以自己选择,灵活性比较大。

源码安装的缺点,由于安装包过新或者是其他问题,导致依赖的包没有,或者版本过低。这个时候就要解决包的依赖问题,linux系统中有的包,一个依赖一个,可能装一个小东西,就要解决一堆包的依赖问题,花很多时间解决包的依赖问题,得不尝失。源码安装的多了,不敢升级系统,升级系统,可能会导致以前手动装的东西,不能用。

很多做运维的,都认为,源码安装比yum安装的性能要好,根据参数选择安装,肯定比yum装了一大堆要好。这样认为的运维,我只能说,他不懂配置。根本不了解自已装的东西。在我看来,同一版yum安装和源码安装完全是一样的。

以apache以例吧,这个东西,非常常见的,用做web最广泛的工具之一,源码安装,./configure时候,可以添加很多参数,来实现订制。yum安装也可以,yum安装装了很多,apache的模块,有的模块根本用不到,无故浪费系统资源和影响性能。但是我们可以配置httpd.conf啊,不需求的模块,我们可以不LoadModule啊,通过修改配置文件,完全可以实现根源码安装一样的效果。不排除少数软件,安装后,不能配置情况,也就是说安装的时候是多少东西,就是多少东西,没有配置文件可以配置。

我觉得,对于刚接触linux的人来说,源码安装很有必要,这样你可以知道自己在做什么,安装过程中,肯定会遇到很多很多的问题,遇到问题,解决问题。这样才会成长。不要一直都用yum装,如果yum安装出了一点问题,就傻眼了,不知道怎么解决,这样很杯具。



转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/linux/1498.html

4 条评论

  1. Penn.Gregory 留言

    作为一个运维.我个人还是倾向于yum安装的.毕竟yum安装的包都是经过不少人测试再使用后才放上去的. 而自己编译的一旦碰到系统升级等情况的时候会带来很多不必要的麻烦. 当然,如果运维团队实力足够,那么当然可以自己编译好rpm包,创建自己的yum源.这样不但在批量部署上有好处,也可以省去安装各种编译工具,甚至可以共享给大家用,根据大家的测试来发现问题,这才是真正的开源精神,不是吗?

  2. wwek 留言

    同意博主的观点!
    只要能yum的,而且yum出来的二进制包不是太低,我就yum.
    yum也可以用用人家的三方库,软件也是很新的.

    刚开始也是编译安装,现在越来越喜欢二进制的了.干嘛那么折腾

  3. ailurus 留言

    还是需要根据需求来选择,我们的线上生产环境全都没有root权限,都是普通用户(我觉得很多都是类似的情况吧),这个时候只能编译源码

  4. clannadmk 留言

    生产环境中,yum和源码安装的区别根本不是性能和yum库里面版本过低的问题。大部分生产环境要求服务器的环境配置要一致,因为后期会不定时增减机器、开关新服,环境不一致出问题排查成本过高,想想看,一两百台服务器没什么,如果是一两千台服务器呢?几万服务器呢?监控维护成本太高。并且,对自动化运维来说,统一环境如果需要升级某个程序版本,一个脚本几条命令的事。如果是yum安装,机房和机房之间,国家和国家之间,yum的库不能保持一致,会很蛋疼。

留下评论

留下评论
  • (必需)
  • (必需) (will not be published)
  • (必需)   4X9=?