CentOS包管理器yum和rpm
yum和rpm的介绍
yum(Yellowdog Updater,Modified)和rpm(Red Hat Package Manager)是Linux系统中常用的两种软件包管理工具。
- rpm:rpm是Red Hat及其衍生发行版(如CentOS、Fedora)中使用的软件包管理工具。它用于管理本地系统上的软件包,可以用于安装、升级、查询和删除软件包。rpm格式的软件包包含软件的二进制文件、配置文件、文档等信息。
- yum:yum是一个基于rpm的高级软件包管理工具,它简化了软件包的安装和更新过程。yum可以自动解决软件包依赖关系,并从指定的软件源(repository)中获取软件包。它可以自动下载并安装所需的软件包及其依赖项,从而简化系统管理人员的工作。
yum和rpm的关系
- yum使用rpm格式的软件包作为其安装和更新的基础。
- yum可以从配置的软件源中下载rpm软件包,并使用rpm命令对其进行安装。
- yum还提供了许多其他功能,如依赖解决、软件源管理等,使得软件包管理更加便捷和高效。
因此,可以将yum视为rpm的高级封装,它在rpm基础上提供了更多的功能和便利性,使得系统管理更加方便。
yum常用命令
yum install package_name # 安装软件包
yum remove package_name # 卸载软件包
yum update # 更新系统中所有软件包
yum update package_name # 更新特定软件包
yum check-update # 列出所有可更新的软件清单命令
yum list # 列出可用软件包
yum list installed # 列出已安装的软件包
yum search keyword # 搜索软件包
yum info package_name # 显示软件包信息
yum clean all # 清理缓存
yum makecache # 重新生成缓存
yum-config-manager --enable repository_name # 启用软件源
yum-config-manager --disable repository_name # 禁用软件源
yum repolist # 列出所有可用软件源
yum deplist package_name # 显示软件包的依赖关系
yum本地安装rpm包
yum localinstall命令用于在本地安装RPM包,它与yum install类似,但是它会优先使用本地文件系统中已经下载的RPM包,而不是从远程软件源下载。
yum localinstall /path/to/package.rpm
yum命令在安装过程中会尝试解决RPM包的依赖关系,但是如果依赖项不可用,它可能会提示错误。
yum更新不升级内核
- 命令行添加exclude参数过滤
yum --exclude=kernel* --exclude=centos-release* -y update
- 直接修改配置文件/etc/yum.conf,在[main]配置添加配置项
exclude=kernel*
exclude=centos-release*
yum update 和 yum upgrade 的区别
默认情况下,yum update 和 yum upgrade 的功能是完全一样的,都是将需要更新的package(包括常规的包、软件、系统版本、系统内核)更新至软件源中的最新版本。
区别是yum upgrade会删除旧版本的package,而yum update则会保留,但是这个功能是需要额外配置的。
yum的upgrade是等价于打开obsoletes配置的yum update
而默认中/etc/yum.conf配置文件obsoletes是打开的,因此这两个指令针对系统内核来说是完全等价的。
若一定要升级,如果软件依赖旧版本的package,最好是使用yum update(需要配置/etc/yum.conf下的obsoletes值为0,0表示更新的时候不会删除旧包,1表示更新旧的rpm包的同时会删除旧包),确保不会出现兼容问题。但在正式环境下最好不要使用yum更新,会出现意想不到的问题。
yum clean all 和 yum makecache
在CentOS或其他使用yum包管理器的Linux系统中,yum下载软件包后,默认情况下是会将软件包保存在系统中的缓存目录中的。这些缓存的软件包通常位于/var/cache/yum目录下。
yum clean all
# 清除yum的所有缓存,包括软件包、元数据以及其他缓存数据
yum clean packages
# 只清除软件包的缓存,而不清理其他缓存数据
yum makecache
# 重新生成yum的缓存信息,包括更新元数据和软件包列表
# 这个命令会强制yum重新下载并更新元数据,并将其存储在本地缓存中
yum配置文件实例
配置文件路径:/etc/yum.conf
[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=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
[main]
cachedir=/var/cache/yum/$basearch/$releasever
# 指定yum的缓存目录路径,其中$basearch会被替换为系统架构(例如x86_64),$releasever会被替换为CentOS版本号
keepcache=0
# 这个参数指定是否保留下载的软件包在缓存中,0表示不保留,1表示保留
debuglevel=2
# 设置yum的调试级别,2表示详细调试信息
logfile=/var/log/yum.log
# 指定yum日志文件路径
exactarch=1
# 这个参数指定是否要求安装的软件包必须与系统架构完全匹配,1表示要求完全匹配
obsoletes=1
# 这个参数指定是否考虑过时的软件包,1表示考虑过时的软件包
# obsoletes定义了更新时处理软件包的取代关系,简单来讲,1表示更新旧的rpm包的同时会删除旧包,0表示更新的时候不会删除旧包
gpgcheck=1
# 指定是否启用GPG校验,1表示启用GPG校验
plugins=1
# 指定是否启用插件,1表示启用插件
installonly_limit=5
# 指定保留的旧内核包的数量限制,设置为5表示最多保留5个旧内核包
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
# 指定了CentOS的bug追踪器网址
distroverpkg=centos-release
# 指定了CentOS版本信息的软件包名称