V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
trmking1719
V2EX  ›  问与答

关于 CentOS 源以及一些软件版本问题,求帮助,求解答,谢谢!!!

  •  
  •   trmking1719 · 2015-09-07 17:52:32 +08:00 · 3040 次点击
    这是一个创建于 3364 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1 、阿里云 ECS 服务器装的 CentOS6.5 ,更新了源,如下图:



    其中两个变量:$releasever 和$basearch ,默认值是 6.5 和 i686.

    从上图中分析完整的源的地址应该是:

    http://mirrors.aliyun.com/centos/6.5/os/i686/

    但是,从阿里云的镜像网站看,只能到 http://mirrors.aliyun.com/centos/6.5/,如下图:



    查看 readme 文件,如下图:



    大体意思说不再支持该版本的更新了,请换别的版本。

    到这里出现问题一:如果说在这种情况下,我不更换其他的源或者不升级系统,是不是代表这个源是不能用的,我也就不能安装软件或者更新软件?

    然后升级了系统,更新到 6.7 ,源的地址变成: http://mirrors.aliyun.com/centos/6.7/os/i386/,如下图:



    看图中,这个目录下,有很多文件存在,代表源可用。


    2 、在源的目录下,/centos/6.7/os/i386/Packages/,查找了要用的软件包, apche 、 mysql 、 php 发现这些软件的版本分别是 2.2 、 5.1 、 5.3

    这里出现问题二:如果要用官方源的话,就必须用这些版本的软件?是不是有些低了?例如 php5.3 已经不更新了,如下图:



    然后去翻了 CentOS 的镜像,发现 CentOS7 , php 的最高版本是 5.4 ,如果说要用高版本的话是不是要自己编译安装或者找第三方源?

    还有就是官方不更新镜像源的话,就不能通过 yum 更新软件了?


    写的有点乱,将就看吧~~~
    11 条回复    2015-09-08 14:26:54 +08:00
    lhbc
        1
    lhbc  
       2015-09-07 18:40:25 +08:00   ❤️ 1
    1 、 CentOS 同一个大版本号, kernel 和官方仓库的软件版本是不变的。
    就是说, CentOS 6 的 kernel 版本永远是 2.6.32 , php 版本永远是 5.3.3 , CentOS 7 的 kernel 版本永远是 3.10.0 , php 版本永远是 5.4.16 。
    这是为了保证兼容性, kernel 和所有软件不更新,只打安全补丁。(只有个别特殊情况比如 Docker )
    鉴于这种维护特点,所有线上系统应该一直 yum update 到最新版本,不会存在兼容的问题。

    2 、如果需要高版本的软件,需要使用第三方源或者自己编译。
    通常自己编译是最好的,但就要自己维护安全更新。
    比如出了 openssl 心脏出血这种严重漏洞,只有自己重新编译才能修复漏洞。
    trmking1719
        2
    trmking1719  
    OP
       2015-09-07 20:21:53 +08:00
    @lhbc 谢谢,明白了。

    1 、也就是说 CentOS 在发布大版本的时候就确定了大部分软件所用的版本, CentOS 只针对这些版本软件进行打安全补丁或者更新,并不会出现软件版本较大跨度的升级更新。
    2 、那是不是 CentOS 在大版本升级更新的时候会重新选择软件版本?例如要发布 CentOS8 ,会选 php7 ?
    3 、关于源的问题,比如默认是 6.5 ,我更新完源之后,去镜像网站看,发现 6.5 目录下没有文件,是不是代表这个源不能正常使用?还是说自动用 CentOS6 之下的源,例如回去用 6.7 的源?
    LazyZhu
        3
    LazyZhu  
       2015-09-07 20:36:47 +08:00
    1.
    $releasever 如果 ali 定义为 6.x 版本的话那就是外行了
    $releasever 应该定义为去掉子版本号的主版本号即:6
    Debian 也是如此. 这是为了节约空间, 之保留最新的 6.0.x 和 6 两个目录.
    只要用 http://mirrors.aliyun.com/centos/6/os/ 这个固定的更新地址就可以了,不用更改.
    trmking1719
        4
    trmking1719  
    OP
       2015-09-07 20:41:40 +08:00
    @LazyZhu 这样啊?我再去研究下这两个变量。
    trmking1719
        5
    trmking1719  
    OP
       2015-09-07 21:04:19 +08:00
    @LazyZhu 谢谢,明白了。

    $releasever 和$basearch 这两个变量用 echo 没有输出值

    $releasever 这个我是用#lsb_release -a 这个命令看的 Release : 6.x ,我就以为这个值是 6.x ,经你这么一说,是我搞错了。

    $basearch 这个用#arch 命令看的 i686 ,这个值应该没错


    关于“ Debian 也是如此. 这是为了节约空间, 之保留最新的 6.0.x 和 6 两个目录.”这句话,我去几个不同的镜像看了下从 6-6.7 ,确实只有 6 和 6.7 的目录下有完整的文件,其他基本都是一个 readme 文件。

    这样就都明白了,谢谢。
    lhbc
        6
    lhbc  
       2015-09-07 22:27:07 +08:00
    @trmking1719
    1 、是的。
    2 、大版本升级, RedHat 会选择一个他们认可的版本进行 10 年的维护周期。
    他们会把相关的补丁(包括安全更新和少数新特性)打到这个版本上,即使上游代码不维护。
    这样一个大版本的生命周期内,可以保证所有软件都得到维护,而用户不需要关心跨版本的兼容性问题,只需要没脑子地 yum update 。
    echo1937
        7
    echo1937  
       2015-09-07 22:44:56 +08:00
    @trmking1719

    @lhbc 说的完全正确, RHEL 比较讲求长效性和持续性,不讲求追新,但是也为这部分用户提供了选择,即 The Software Collections ( SCL ) Repository 。

    你可以参考 https://wiki.centos.org/AdditionalResources/Repositories/SCL 链接,它提供了诸如 MySQL 5.5 和 Python 3.3 的支持,这些不在基本的 Base 频道,但的确也是依据 RHEL 的 SCL 频道而镜像的。

    此外一些第三方 ISV 也会提供了独立的频道供选择,比如我在用的 MariaDB , php 不了解,可以自行搜索。
    https://downloads.mariadb.org/mariadb/repositories/)
    trmking1719
        8
    trmking1719  
    OP
       2015-09-08 08:50:11 +08:00
    @lhbc 明白了,再次感谢。
    trmking1719
        9
    trmking1719  
    OP
       2015-09-08 09:08:12 +08:00
    @echo1937 谢谢。

    看了下你给的 SCL 的链接,也就是说 CentOS 有某些软件的更新不是放在默认更新里的,如果要用更高版本的软件就要用到这个 SCL 了?

    要安装#yum install centos-release-SCL 这个来管理软件?

    例如默认的 mysql 是 5.1 ,用 SCL 可以用 5.5 ?

    还有就是看介绍的话,用 SCL 来管理软件,同一个软件不同版本是共存的,可以设置默认使用哪个?例如 mysql ,默认 5.1 , SCL 可以安装一个新的 5.5 版本,想用哪个把哪个设置成默认就好?
    echo1937
        10
    echo1937  
       2015-09-08 10:21:31 +08:00
    @trmking1719

    具体的安装方式在链接页面中有非常详细的描述, SCL 频道的软件会自动安装在 /usr/local 下不会冲突。具体的设置方式在文档的链接中也有说明,比如使用:
    # scl enable software_collection... 'command...'

    不要卸载原有的环境,因为例如原有的 python2.6 之类的,是同时在被系统使用的。
    trmking1719
        11
    trmking1719  
    OP
       2015-09-08 14:26:54 +08:00
    @echo1937 好的,我去详细研究下,谢谢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2149 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:47 · PVG 08:47 · LAX 16:47 · JFK 19:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.