yum中$releasever、 $basearch等变量含义

2024-03-11 10:32

本文主要是介绍yum中$releasever、 $basearch等变量含义,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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=value 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.
$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.
$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/

这篇关于yum中$releasever、 $basearch等变量含义的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/797552

相关文章

java如何调用kettle设置变量和参数

《java如何调用kettle设置变量和参数》文章简要介绍了如何在Java中调用Kettle,并重点讨论了变量和参数的区别,以及在Java代码中如何正确设置和使用这些变量,避免覆盖Kettle中已设置... 目录Java调用kettle设置变量和参数java代码中变量会覆盖kettle里面设置的变量总结ja

Perl 特殊变量详解

《Perl特殊变量详解》Perl语言中包含了许多特殊变量,这些变量在Perl程序的执行过程中扮演着重要的角色,:本文主要介绍Perl特殊变量,需要的朋友可以参考下... perl 特殊变量Perl 语言中包含了许多特殊变量,这些变量在 Perl 程序的执行过程中扮演着重要的角色。特殊变量通常用于存储程序的

CentOS系统使用yum命令报错问题及解决

《CentOS系统使用yum命令报错问题及解决》文章主要讲述了在CentOS系统中使用yum命令时遇到的错误,并提供了个人解决方法,希望对大家有所帮助,并鼓励大家支持脚本之家... 目录Centos系统使用yum命令报错找到文件替换源文件为总结CentOS系统使用yum命令报错http://www.cppc

变量与命名

引言         在前两个课时中,我们已经了解了 Python 程序的基本结构,学习了如何正确地使用缩进来组织代码,并且知道了注释的重要性。现在我们将进一步深入到 Python 编程的核心——变量与命名。变量是我们存储数据的主要方式,而合理的命名则有助于提高代码的可读性和可维护性。 变量的概念与使用         在 Python 中,变量是一种用来存储数据值的标识符。创建变量很简单,

JS_变量

二、JS的变量 JS中的变量具有如下特征 1 弱类型变量,可以统一声明成var 2 var声明的变量可以再次声明 3 变量可以使用不同的数据类型多次赋值 4 JS的语句可以以; 结尾,也可以不用;结尾 5 变量标识符严格区分大小写 6 标识符的命名规则参照JAVA 7 如果使用了 一个没有声明的变量,那么运行时会报uncaught ReferenceError: *** is not de

OpenStack离线Train版安装系列—0制作yum源

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

使用条件变量实现线程同步:C++实战指南

使用条件变量实现线程同步:C++实战指南 在多线程编程中,线程同步是确保程序正确性和稳定性的关键。条件变量(condition variable)是一种强大的同步原语,用于在线程之间进行协调,避免数据竞争和死锁。本文将详细介绍如何在C++中使用条件变量实现线程同步,并提供完整的代码示例和详细的解释。 什么是条件变量? 条件变量是一种同步机制,允许线程在某个条件满足之前进入等待状态,并在条件满

axure之变量

一、设置我们的第一个变量 1、点击axure上方设置一个全局变量a = 3 2、加入按钮、文本框元件点击按钮文档框展示变量值。 交互选择【单击时】【设置文本】再点击函数。 点击插入变量和函数直接选择刚刚定义的全局变量,也可以直接手动写入函数(注意写入格式。) 这样点击按钮时就直接展示刚刚设置的全局变量3了。 2、更改变量值 在新建交互里点击设置变量值。 将a变量设置成等于10. 将新

shell脚本中变量中字符串替换的测试 /和//的区别

test_char=abbbcbbbf echo "bf:test_char = " $test_char test_char=${test_char/bbb/ddd} echo "af:test_char = " $test_char 输出: bf:test_char =  abbbcbbbf af:test_char =  adddcbbbf 只匹配第一个

eclipse中相同变量显示变色设置

java文件的设置"Window"-"preferences"-"Java"-"Editor"-"Mark Occurrences"复选框勾选 js文件的设  置"Window"-"preferences"-"web"-"javascript"-"Mark Occurrences"复选框勾选 。