https://jackqq.wordpress.com/2014/06/24/centos-vs-freebsd-vs-ubuntu-lts/

看到周围的人好多在用或者学 CentOS,忍不住也想看看如何。在知乎和国外看了一通关于 CentOS 和 Ubuntu Server 的唇枪舌战。更加忍不住,这两天装了个 CentOS 的虚拟机简单体验了一下。结合之前用过的 FreeBSD 还有 Ubuntu 谈谈感受。可能还有不尽之处,以后再补充,也欢迎评论。

在发布和维护上的特色:

CentOS 提供操作系统核心和大批基础软件和服务(如 perl、 apache httpd 等),并由官方维护。

主版本维护期超长, 10 年,所以它上面的软件版本只求稳定不求新。
在一个主发行版本期间,其软件包不进行升级,只进行安全修补,不做功能更新。
镜像服务器包含了软件包的全部历史版本,所以我感觉这些软件包的更新、回滚均可由管理员随意进行。
还提供了方便的 yum history rollback 机制,在部署的系统上做更新可以说高枕无忧。
但是官方不提供应用软件。由应用软件提供安装方法,因为系统的稳定性,这一点还好实现。
系统更新有邮件列表通知,或者配置 yum-cron 每天提醒。不过应用软件自身的更新就要管理员自己注意了。

FreeBSD 基本上只提供操作系统核心功能的更新和回滚,由官方团队维护。多数软件(包括perl、 apache 等)通过 ports 提供,由志愿者负责跟踪、移植上游的更新。

主版本维护期不定,大约在 5 – 6 年。
但系统的核心功能大多数应用软件不够用,还要依赖第三方的基础服务。
多数软件,及其基础服务通过 ports 或者 pkg 安装,只提供软件包的最新版本。 ports 里同时维护着该软件的多个分支版本,可以任意选择。系统发行版本和应用软件版本不是绑定的,这一点比另外两个系统更灵活。但软件之间的兼容性问题可能也更容易出现。
但不一定是最先进的分支,跟 Ubuntu LTS 的问题一样。
在本地 /var/cache/pkg 中可以有一个曾经下载的缓存,可用作紧急回滚。
系统和应用软件的安全更新事件可以有每日邮件通知。

Ubuntu LTS 提供完整的应用软件栈,并由官方维护。

维护期为 3 – 5 年。
应用软件都是从官方软件库安装的,兼容性应该不会有问题。
但基本所有软件只做修补,不更新版本。所以用不了最新版本的应用。和 CentOS 一样。
软件包的回滚机制不够方便,需要大量手工操作。 http://askubuntu.com/a/34908
所有软件的安全更新可全部由系统自动安装。管理员只需重启机器。
另外,值得注意的是,任何一个系统,无论如何安全更新,都无法保护一个有安全漏洞的应用。所以,我认为

CentOS 的维护模式更像 Windows,适合
自身研发或定制研发的软件,长时间的稳定部署
需要用应用的最新版本,又希望操作系统和硬件长期稳定不变
FreeBSD 适合
要用其自身的特色功能,如 ZFS
对第三方应用需求比较简单——单一应用栈,没有交叉依赖
Ubuntu 适合
自身研发或定制研发的前端,对二进制级别依赖较低,需要更新的功能支持,快速迭代式部署
对应用的最新功能没有特别要求,希望快速部署,自动更新

CentOS, FreeBSD, Ubuntu LTS 维护风格的简单比较的更多相关文章

  1. 【转帖】Linux发行版:CentOS、Ubuntu、RedHat、Android、Tizen、MeeGo

     Linux发行版:CentOS.Ubuntu.RedHat.Android.Tizen.MeeGo作者:阳光岛主 原文在这儿 Linux,最早由Linus Benedict Torvalds在199 ...

  2. 【系统】CentOS、Ubuntu、Debian三个linux比较异同

    CentOS.Ubuntu.Debian三个linux比较异同 2014-07-31 12:58             53428人阅读             评论(6)             ...

  3. CentOS、Ubuntu、Debian三个linux比较异同

    Linux有非常多的发行版本,从性质上划分,大体分为由商业公司维护的商业版本与由开源社区维护的免费发行版本. 商业版本以Redhat为代表,开源社区版本则以debian为代表.这些版本各有不同的特点, ...

  4. CentOS、Ubuntu、Debian三个linux比较异同[转]

    Linux有非常多的发行版本,从性质上划分,大体分为由商业公司维护的商业版本与由开源社区维护的免费发行版本. 商业版本以Redhat为代表,开源社区版本则以debian为代表.这些版本各有不同的特点, ...

  5. linux中CentOS、Ubuntu、Debian三个版本系统 差别

    Linux有非常多的发行版本,从性质上划分,大体分为由商业公司维护的商业版本与由开源社区维护的免费发行版本. 商业版本以Redhat为代表,开源社区版本则以debian为代表.这些版本各有不同的特点, ...

  6. CentOS、Ubuntu、Debian简析

    Centos .Ubuntu.Debian 三个Linux都是非常优秀的系统,开源的系统,也分付费的商业版和免费版,下面简单比较这三种系统. Centos系统 非常多的商业公司部署在生产环境上的服务器 ...

  7. 查看系统信息,区分Centos和Ubuntu

    查看系统信息,区分Centos和Ubuntu # cat /etc/issue \S Kernel \r on an \m centos $ cat /etc/issue Ubuntu 16.04.4 ...

  8. CentOS和Ubuntu的区别

    CentOS(Community ENTerprise Operating System)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代 ...

  9. Ubuntu LTS 系统学习使用体会和实用工具软件汇总 6.04 8.04 10.04 12.04 14.04 16.04

    Ubuntu LTS 系统学习体会和工具软件汇总 6.04 8.04 10.04 12.04 14.04 16.04 ubuntu入门必备pdf:http://download.csdn.net/de ...

随机推荐

  1. android 网络通信框架volly

    1. 什么是Volley 在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient( ...

  2. Unity UGUI基础之Toggle

    Toggle组合按钮(单选框),可以将多个Toggle按钮加入一个组,则他们之间只能有一个处于选中状态(Toggle组合不允许关闭的话). 一.Toggle组件: Toggle大部分属性等同于Butt ...

  3. iOS学习新知识-加速计和陀螺仪

    一.CoreMotion框架介绍 我们知道有一些iOS的应用,会有一些特殊的要求,比如: 电子罗盘指南针之类的应用:让我们知道方向. 运动类型软件:让我们知道我们跑步多少公里. 社交软件中的摇一摇功能 ...

  4. python的文件操作file:(内置函数,如seek、truncate函数)

    file打开文件有两种方式,函数用file()或者open().打开后读入文件的内容用read()函数,其读入是从文件当前指针位置开始,所以需要控制指针位置用: 一.先介绍下file读入的控制函数: ...

  5. 06_Android中ArrayAdapter的使用

     1 目标界面 2 编写AndroidManifest.xml文件 <?xml version="1.0" encoding="utf-8"?> ...

  6. Gradle脚本打包so库

    要让引用的第三方的so库被打包进去,只需要把相关的armeabi文件夹放在libs下面,然后在builld.gradle脚本中加上这一句: sourceSets{ main { jniLibs.src ...

  7. Python基础 语法特别注意笔记(和Java相比)

    Python变量和数据类型 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 ...

  8. java的制作"时间账本"

    一直以来我都感觉自己的时间过得好荒废啊,貌似只是打开了一个网页链接的时间,一个下午便过去了:仿佛就是看了看空间,刷了刷微信,一天就过去了.哈,当然这是夸张的说法.但是我仔细地算了一下,大概我们每个人每 ...

  9. python 多窗口编辑

    同时打开多个文件: 1,vim filename1 filename2 在打开的多个文件中 :next 转到下个文件中 :prev 转到上个文件中 :last/:first 分别到最后一个和第一个文件 ...

  10. java,http的post和get

    使用Java发送GET.POST请求 --节选自<疯狂Java讲义>    URL的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和 UR ...