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

2015-09-07 17:52:32 +08:00
 trmking1719
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 更新软件了?


写的有点乱,将就看吧~~~
3039 次点击
所在节点    问与答
11 条回复
lhbc
2015-09-07 18:40:25 +08:00
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
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
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
2015-09-07 20:41:40 +08:00
@LazyZhu 这样啊?我再去研究下这两个变量。
trmking1719
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
2015-09-07 22:27:07 +08:00
@trmking1719
1 、是的。
2 、大版本升级, RedHat 会选择一个他们认可的版本进行 10 年的维护周期。
他们会把相关的补丁(包括安全更新和少数新特性)打到这个版本上,即使上游代码不维护。
这样一个大版本的生命周期内,可以保证所有软件都得到维护,而用户不需要关心跨版本的兼容性问题,只需要没脑子地 yum update 。
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
2015-09-08 08:50:11 +08:00
@lhbc 明白了,再次感谢。
trmking1719
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
2015-09-08 10:21:31 +08:00
@trmking1719

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

不要卸载原有的环境,因为例如原有的 python2.6 之类的,是同时在被系统使用的。
trmking1719
2015-09-08 14:26:54 +08:00
@echo1937 好的,我去详细研究下,谢谢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/218911

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX