CentOS版本的查看和Yum源的配置

今天在服务器想需要部署环境时,居然忘了服务器版本,yum源也出了点问题,就在网上偷两篇文章过来了当存档。

CentOS的发行版本

uname -a

可以获取内核名称、主机名、内核发行号、核版本、硬件名、处理器类型、硬件平台和操作系统

1
2
3
4
5
6
7
8
9
10
11
[BoCai@i564dsfaiYAZ ~]$ uname -a
Linux i564dsfaiYAZ 2.6.32-696.1.1.el6.x86_64 #1 SMP Tue Apr 11 17:13:24 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
#Linux 内核名称(uname -s, --kernel-name)
#i564dsfaiYAZ 主机名(uname -n, --nodename)
#6.32-696.1.1.el6.x86_64 内核发行号(uname -r, --kernel-release)
#1 SMP Tue Apr 11 17:13:24 UTC 2017 内核版本,实际上是标示的时间(uname -v, --kernel-version)
#x86_64 硬件名(uname -m, --machine)
#x86_64 处理器类型(uname -p, --processor)
#x86_64 硬件平台(uname -i, --hardware-platform)
#GNU/Linux 操作系统(uname -o, --operating-system)

/etc/redhat-release

默认发行版本信息

1
2
[BoCai@i564dsfaiYAZ ~]$ cat /etc/redhat-release
CentOS release 6.8 (Final)

/etc/issue

默认发行版本信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[BoCai@i564dsfaiYAZ ~]$ cat /etc/issue
CentOS release 6.8 (Final)
Kernel \r on an \m
#issue内各代码说明:
#\d 本地端时间的日期
#\l 显示第几个终端接口
#\m 显示硬件的等级
#\n 显示主机的网络名称
#\o 显示域名
#\r 操作系统的版本
#\t 显示本地端的时间
#\s 操作系统的名称
#\v 操作系统的版本

  • /etc/issue文件实际上就是当系统启动时显示的内容。用户可以在里面自己添加内容。
  • 一些版本即使更改了/etc/issue*也没有用,因为它们在每次启动时会刷新。
  • 用户本地连接会看到/etc/issue,从网络远程则看到的是/etc/issue.net。
  • /etc/issue.net中不能存在escape sequence,SSH登录显不显示issue信息由SSH的配置决定。
  • 类似的,/etc/motd 是在终端登陆成功后的提示,可以做成欢迎使用或者警告使用者。

/proc/version

显示Linux内核版本号,GCC编译器版本号等信息

1
2
3
4
5
6
[BoCai@i564dsfaiYAZ ~]$ cat /proc/version
Linux version 2.6.32-696.1.1.el6.x86_64 (mockbuild@c1bm.rdu2.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) ) #1 SMP Tue Apr 11 17:13:24 UTC 2017
#Linux version 2.6.32-696.1.1.el6.x86_64 linux内核版本号
#gcc version 4.4.7 20120313 gcc编译器版本号
#Red Hat 4.4.7-18 Red Hat版本号(不只内核有版本,每个变种也要维护版本)

查看系统位数

1
2
3
4
[BoCai@i564dsfaiYAZ ~]$ getconf LONG_BIT
64
[BoCai@i564dsfaiYAZ ~]$ file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

CentOS的yum源配置

yum的配置文件

yum的配置文件分为main和repository两个部分。
其中,整个yum配置文件应该只有一个main,它常位于/etc/yum.conf,定义了全局配置选项。
而repository可以有多个(至少一个),常位于/etc/yum.repo.d目录下的各文件中,定义每个源/服务器的具体配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[BoCai@i564dsfaiYAZ ~]$ cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
#yum 缓存的目录,yum 在此存储下载的rpm 包和数据库,默认设置为/var/cache/yum
keepcache=0
#安装完成后是否保留软件包,0为不保留(默认为0),1为保留
debuglevel=2
#Debug 信息输出等级,范围为0-10,缺省为2
logfile=/var/log/yum.log
#日志文件位置。用户可以到/var/log/yum.log文件查询过去所做的更新。
exactarch=1
#有1和0两个选项,设置为1,则yum 只会安装和系统架构匹配的软件包,例如,yum 不会将i686的软件包安装在适合i386的系统中。默认为1。
obsoletes=1
#这是一个update 的参数,具体请参阅yum(8),简单的说就是相当于upgrade,允许更新陈旧的RPM包。
gpgcheck=1
#有1和0两个选择,分别代表是否是否进行gpg(GNU Private Guard) 校验,以确定rpm 包的来源是有效和安全的。这个选项如果设置在[main]部分,则对每个repository 都有效。默认值为0。
plugins=1
#是否启用插件,默认1为允许,0表示不允许。我们一般会用yum-fastestmirror这个插件。
distroverpkg=centos-release
#指定一个软件包,yum 会根据这个包判断你的发行版本,默认是redhat-release,也可以是安装的任何针对自己发行版的rpm 包。
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum
#bug提交地址
installonly_limit=5
#允许保留的内核包个数

除了上述配置之外,还有以下配置:

1
2
3
4
5
6
7
8
9
10
exclude=selinux*  
#排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁的朋友特别有用。
pkgpolicy=newest
#包的策略。一共有两个选项,newest 和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository 中同时存在,yum 应该安装哪一个,如果是newest,则yum 会安装最新的那个版本。如果是last,则yum 会将服务器id 以字母表排序,并选择最后的那个服务器上的软件安装。一般都是选newest。
tolerant=1
#有1和0两个选项,表示yum 是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1,则yum 不会出现错误信息。默认是0。
retries=6
#网络连接发生错误后的重试次数,如果设为0,则会无限重试。默认值为6.
exclude=selinux*
#排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁的朋友特别有用。

repo文件的格式

所有repository服务器设置都应该遵循如下格式:

1
2
3
[serverid] #serverid 是用于区别各个不同的repository,必须有一个独一无二的名称;
name=Some name for this server #name 是对repository 的描述,支持像$releasever $basearch这样的变量;
baseurl=url://path/to/repository/ #baseurl 是服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。

baseurl后可以设置多个url,但baseurl 只能有一个。url 支持的协议有http:// ftp:// file:// 三种,baseurl的格式如下:

1
2
3
baseurl=url://server1/path/to/repository/
    url://server2/path/to/repository/
    url://server3/path/to/repository/

其中,url指向的目录必须是这个repository header目录的上一级,它也支持$releasever、$basearch 等变量。url 之后可以加上多个选项,如gpgcheck、exclude、failovermethod等。

1
2
3
4
5
6
7
8
9
10
11
12
[updates-released]
name=Fedora Core $releasever - $basearch - Released Updates
baseurl=http://download.atrpms.net/mirrors/fedoracore/updates/$releasever/$basearch
     http://redhat.linux.ee/pub/fedora/linux/core/updates/$releasever/$basearch
     http://fr2.rpmfind.net/linux/fedora/core/updates/$releasever/$basearch
gpgcheck=1
exclude=gaim
#gpgcheck、exclude的含义和[main]部分相同,但只对此服务器起作用。
failovermethod=priority
#failovermethode有两个选项roundrobin和priority,意思分别是有多个url可供选择时yum选择的次序。
#roundrobin是随机选择,如果连接失败则使用下一个,依次循环;
#priority则根据url 的次序从第一个开始。如果不指明,默认是roundrobin。

本地yum源配置

1.挂载系统安装光盘

1
[root@i564dsfaiYAZ yum.repos.d]$ mount /dev/cdrom /mnt/cdrom/

2.备份源配置文件

1
2
[root@i564dsfaiYAZ yum.repos.d]$ mv CentOS-Base.repo CentOS-Base.repo.bak #不使用网络yum源
[root@i564dsfaiYAZ yum.repos.d]$ mv CentOS-Media.repo CentOS-Media.repo.bak #备份原本地yum源

3.修改本地源配置文件(CentOS-Media.rep)

1
2
3
4
5
6
7
8
9
[root@i564dsfaiYAZ yum.repos.d]$ vim CentOS-Media.rep
[c5-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
file:///mnt/cdrom/ #修改此处为光盘挂载点
file:///media/cdrecorder/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

4.执行yum命令

1
2
[root@i564dsfaiYAZ yum.repos.d]$ yum install mysql
......

网络yum源配置

1.备份源配置文件

1
2
[root@i564dsfaiYAZ yum.repos.d]$ mv CentOS-Base.repo CentOS-Base.repo.bak #不使用网络yum源
[root@i564dsfaiYAZ yum.repos.d]$ mv CentOS-Media.repo CentOS-Media.repo.bak #备份原本地yum源

2.修改本地源配置文件(CentOS-Base.rep)
以下配置以为例,文章后面附录提供了些常用的yum源,大家可以根据网络情况自行选择。

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
33
34
35
36
37
38
39
40
41
42
43
44
[root@i564dsfaiYAZ yum.repos.d]$ vim CentOS-Base.rep
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://ftp.sjtu.edu.cn/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#released updates
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://ftp.sjtu.edu.cn/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
baseurl=http://ftp.sjtu.edu.cn/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
baseurl=http://ftp.sjtu.edu.cn/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
baseurl=http://ftp.sjtu.edu.cn/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#$releasever:代表发行版的版本,从[main]部分的distroverpkg获取,如果没有,则根据redhat-release包进行判断。
#$arch:cpu体系,如i686,athlon等
#$basearch:cpu的基本体系组,如i686和athlon同属i386,alpha和alphaev6同属alpha。

3.导入GPG Key

yum可以使用gpg对包进行校验,确保下载包的完整性,所以我们先要到各个repository站点找到gpg key。
一般都会放在首页的醒目位置,一些名字诸如RPM-GPG-KEY-CentOS-6之类的纯文本文件,把它们下载下来。
然后用rpm –import RPM-GPG-KEY-CentOS-6 命令将key 导入。

如果在rep中直接使用gpg key的url地址,则不用导入。例如gpgkey=http://***.com/centos/RPM-GPG-KEY-CentOS-6

4.清除并新建缓存

1
[root@i564dsfaiYAZ yum.repos.d]$ yum clean all && yum clean metadata && yum clean dbcache && yum makecache && yum update

5.执行yum命令

1
2
[root@i564dsfaiYAZ yum.repos.d]$ yum install mysql
......

6.当然,有的yum源还提供在线的reop配置文件,直接两个命令就可也以搞定,例如阿里云:

1
2
3
[root@i564dsfaiYAZ yum.repos.d]$ mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
[root@i564dsfaiYAZ yum.repos.d]$ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
#若使用阿里云服务器,将源的域名从mirrors.aliyun.com改为mirrors.aliyuncs.com,不占用公网流量。

使用第三方软件库

Centos/RHEL默认的yum软件仓库非常有限,仅仅限于发行版本那几张盘里面的常规包和一些软件包的更新。
利用RpmForge可以增加非常多的第三方rpm软件包,RpmForge库现在已经拥有超过10000种的CentOS的软件包。
1.安装yum-priorities插件
这个插件是用来设置yum在调用软件源时的顺序的。因为官方提供的软件源,都是比较稳定和被推荐使用的。
因此,官方源的顺序要高于第三方源的顺序。如何保证这个顺序,就需要安装yum-priorities这插件了。

1
2
[root@i564dsfaiYAZ yum.repos.d]$ yum -y install yum-priorities
......

2.设置源顺序
安装完yum-priorities插件后需要设置/etc/yum.repos.d/目录下的.repo相关文件,在这些文件中插入顺序指令:priority=N (N为1到99的正整数,数值越小越优先)。
一般配置[base], [addons], [updates], [extras] 的priority=1,[CentOSplus], [contrib] 的priority=2,其他第三的软件源为:priority=N (推荐N>10)

3.下载与安装rpmforge

1
2
3
4
5
6
7
8
[root@i564dsfaiYAZ yum.repos.d]# 下载相应rpmforge的rpm文件包
[root@i564dsfaiYAZ yum.repos.d]$ wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
[root@i564dsfaiYAZ yum.repos.d]# 安装DAG的PGP Key
[root@i564dsfaiYAZ yum.repos.d]$ rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
[root@i564dsfaiYAZ yum.repos.d]# 验证rpmforge的rpm文件包
[root@i564dsfaiYAZ yum.repos.d]$ rpm -K rpmforge-release-0.5.2-2.el5.rf.*.rpm
[root@i564dsfaiYAZ yum.repos.d]# 安装rpmforge的rpm文件包
[root@i564dsfaiYAZ yum.repos.d]$ rpm -i rpmforge-release-0.5.2-2.el5.rf.i386.rpm

4.设置/etc/yum.repos.d/rpmforge.repo文件中源的级别

1
2
3
4
5
6
7
8
9
10
11
[root@i564dsfaiYAZ yum.repos.d]$ vim rpmforge.repo
[rpmforge]
name = RHEL $releasever - RPMforge.net - dag
baseurl = http://apt.sw.be/redhat/el5/en/$basearch/rpmforge
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1
priority=12 #priority=N (推荐N>10)

5.执行yum命令测试

1
2
[root@i564dsfaiYAZ yum.repos.d]$ yum install htop
......

附录:国内yum源列表

参考文档