CentOS下Yum的$releasever和$basearch的取值

前端之家收集整理的这篇文章主要介绍了CentOS下Yum的$releasever和$basearch的取值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

CentOS下Yum源配置文件中如CentOS-Base.repo的$releasever和$basearch的取值

$releasever的值,这个表示当前系统的发行版本,可以通过如下命令查看:

root@vm-xiluhua /etc # rpm -qi centos-release
Name        : centos-release
Version     : 7
Release     : 2.1511.el7.centos.2.10
Architecture: x86_64
Install Date: 2016年01月02日 星期六 15时50分25秒
Group       : System Environment/Base
Size        : 36019
License     : GPLv2
Signature   : RSA/SHA256,2015年12月09日 星期三 18时01分49秒,Key ID 24c6a8a7f4a80eb5
Source RPM  : centos-release-7-2.10.src.rpm
Build Date  : 2015年12月09日 星期三 17时59分15秒
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
Summary     : CentOS Linux release file
Description :
CentOS Linux release files

或

rpm -q --qf %{version} centos-release;echo

rpm -q --qf %{arch} centos-release;echo

windows 查看

systeminfo.exe



Redhat 或 CentOS 发行版本号

第一种方法,也是最容易想到的方法是查看 /etc/issue 和 /etc/redhat-release这两个文件,这两个文件都差不多,都含有发行号, 但这是在文件中,很容易修改,我那个同事觉得这个不太靠谱。
第二种方法是使用命令,在RHEL 5 或 CentOS 5 中有个命令: lsb-release,通过这个命令可以查到,不过在RHEL 6就没这么幸运了,在我的最小化系统中找不到这个命令,而我那个同事偏偏是在CentOS6上获取发行版本号, 看来此路又不通了。
不过有一个线索, 那就是在CentOS自带的Yum源文件中使用了 $releasever,$basearch等这些变量, 奇怪的是这些变量的值是从哪获取的呢?
Google 一下之后,说明Yum变量的说明可以在这里(5.3.3. Using YumVariables)找到,说明如下:
5.3.3. Using Yum Variables
You can use and reference the following built-in variables inyum commands and in all Yum configuration files (that is,/etc/yum.conf and all .repo files in the /etc/yum.repos.d/ directory):
$releasever
You can use this variable toreference the release version of Red Hat Enterprise Linux. Yumobtains the value of $releasever from the distroverpkg=centos-release(注意是包不是值)linein the /etc/yum.conf configuration file. If there is no such linein /etc/yum.conf,then yum infers the correct value by deriving theversion number from the redhat-release package.
$arch
You can use this variable to refer to the system’s cpuarchitecture as returned when calling Python’s os.uname() function.Valid values for $arch include: i586,i686 and x86_64. uname -m
$basearch
You can use $basearch to reference the base architecture ofthe system. For example,i686 and i586 machines both have a basearchitecture of i386,and AMD64 and Intel64 machines have a basearchitecture of x86_64. uname -m
$YUM0-9
These ten variables are each replaced with the value of anyshell environment variables with the same name. If one of thesevariables is referenced (in /etc/yum.conf for example) and a shellenvironment variable with the same name does not exist,then theconfiguration file variable is not replaced.
To define a custom variable or to override the value of anexisting one,create a file with the same name as the variable(without the “$” sign) in the /etc/yum/vars/ directory,and add thedesired value on its first line.
For example,repository descriptions often include theoperating system name. To define a new variable called $osname,create a new file with “Red Hat Enterprise Linux” on the first lineand save it as /etc/yum/vars/osname:
~]# echo “Red Hat Enterprise Linux” >/etc/yum/vars/osname
Instead of “Red Hat Enterprise Linux 6”,you can now use thefollowing in the .repo files:
name=$osname $releasever
文中说到$releasever的定义可以查看 /etc/yum.conf 文件的事distroverpkg=value行,打开 /etc/yum.conf 看一下,默认文件(我的是CentOS 6)内容如下:
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.PHP?project_id=16&ref=http://bugs.centos.org/bug_report_page.PHP?category=yum
distroverpkg=centos-release
distroverpkg=centos-release 代表什么? 去哪找 centos-release。找到这里我再一次表示困惑。
不过另一篇文章进行了我的视野: yum的$releasever真是太反动了, 关键内空如下:
在 /etc/yum.repos.d/ 目录下的软件库定义文件中,常常会在 baseurl 的路径中提到$releasever 这个变量,表示当前发行版的大版本号,但大家知道这个变量是在哪设置的吗?我 grep 了整个 etc目录都没找到,还是看了 yum.conf 才知道的,是在 yum.conf 文件里 distroverpkg选项定义的。但这个选项就很有问题:
distroverpkg 和 releasever 名字不同,且看不出什么联系
distroverpkg的值,并不是明文,而是“redhat-release”。不知道大家看到这个会有什么想法,反正我是首先想到了/etc/redhat-release 文件,但我错了。实际上指的是 redhat-release这个RPM包。所谓“distroverpkg=redhat-release”的意思,其实是将 $releasever 设置为redhat-release 这个RPM包的版本号
原来如此。这发行版本号可是藏的够深的。
小结:
yum中的$releasever变量是取redhat-release-serverrpm包的属性值(%{version})。
[root@ldap01 ~]# rpm -q --qf %{version}redhat-release-server;echo
6Server

查看关于yum的配置

ls /etc/yum* -ld:

查看/etc/yum.repos.d下的文件

查看CentOS-Base.repo内容

部分内容

[base]
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=file:///etc/pki/rpm-pgg/RPM-GPG-KEY-CentOS-6
[update]
baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates

我们看出来里面包含大量的变量:

$releasever和$basearch

$releasever的值,这个表示当前系统的发行版本,可以通过如下命令查看:

rpm -qi centos-release

结果如下:

其中的Version:6就是我们系统的版本号

$basearch是我们的系统硬件架构(cpu指令集),就是我们常说的i386\i486\i586\i686\...

使用如下命令即可:

arch

输出如下:

我这个处理器是i686,现在所有的intel 32位体系(包括AMD等兼容cpu)都叫i386体系,包括P4。i686仍然属于i386体系,不过对cpu(相对于386)的特性作了指令优化。GNU/Linux分为i386、alpha、PowerPC、Sun等各个不同版本,所有从Intel386-P4都用i386版本,但i386版本中 有几个内核(i386,i486,i586,i686),安装时安装程序检测到你得cpu级别后,自动为你安装相应内核。

在Linux中使用命令arch可以初步查看出当前系统所识别出来的机器cpu类型,如"i386","i486","i586","alpha","sparc","arm","m68k","mips","ppc","ia64","x86_64"等;ia64和x86_64就说明这台机器是64位的;

所以我这儿要使用i386作为$basearch的值

baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

完整路径便是

baseurl=http://mirror.centos.org/centos/6/os/i386/

猜你在找的CentOS相关文章