CentOS之软件包管理系统
CentOS之软件包管理系统
在 CentOS Linux 系统中,管理软件包是安装、更新和维护软件的关键任务。CentOS 主要使用 YUM (Yellowdog Updater, Modified) 作为其高级包管理器。然而,在较新的 CentOS 版本(如 CentOS 8 及更高版本)中,DNF (Dandified YUM) 已经取代 YUM 成为默认的包管理器。此外,底层的 RPM (Red Hat Package Manager) 工具在某些特定场景下仍然很有用。本文将深入探讨这三种工具在 CentOS 中的应用。
镜像源 (Repositories) 的配置与更新
镜像源是 CentOS 系统获取软件包的服务器。配置合适的镜像源能够显著提高软件包的下载速度和安装效率。
配置镜像源
CentOS 的镜像源配置文件通常位于 /etc/yum.repos.d/
目录下,以 .repo
结尾。你可以编辑这些文件来修改或添加镜像源。备份原始文件是一个好习惯。
常用的国内 CentOS 镜像源包括:
- 阿里云:
http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
- 清华大学:
https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
- 网易:
http://mirrors.163.com/centos/$releasever/os/$basearch/
- 中科大:
https://mirrors.ustc.edu.cn/centos/$releasever/os/$basearch/
操作步骤(以阿里云为例):
-
备份原有的
.repo
文件:- 首先创建一个文件夹,用于存放备份文件
mkdir yum_repo_back
- 之后把当前文件都移动到备份文件夹里
cp Centos-linux-* yum_repo_back
-
删除现有的repo文件
rm -f Centos-linux-*
-
获取阿里云镜像源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo 或者 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
-
清理并重建 YUM/DNF 缓存:
sudo yum clean all sudo yum makecache # 或者使用 dnf sudo dnf clean all sudo dnf makecache
更新软件包列表
在修改或添加镜像源后,你需要更新本地软件包列表,以获取最新的软件包信息。
sudo yum update
# 或者使用 dnf
sudo dnf update
常用软件包管理命令
以下将分别介绍 dnf
、yum
和 rpm
的常用命令。在较新的 CentOS 系统中,请优先使用 dnf
。
使用 dnf (推荐)
-
安装软件包:
sudo dnf install <软件包名称> # 例如:安装 httpd sudo dnf install httpd
-
重新安装软件包:
sudo dnf reinstall <软件包名称> # 例如:重新安装 httpd sudo dnf reinstall httpd
-
升级软件包:
-
升级单个软件包:
sudo dnf update <软件包名称>
-
升级所有可升级的软件包:
sudo dnf upgrade
-
-
移除软件包:
sudo dnf remove <软件包名称># 移除不再需要的依赖 sudo dnf autoremove <软件包名称># 或者在移除后执行 sudo dnf autoremove
-
查询软件包描述信息:
dnf info <软件包名称> # 例如:查询 httpd 的描述信息 dnf info httpd
-
列出软件包包含的文件信息:
dnf list files <软件包名称> # 例如:列出 httpd 包含的文件 dnf list files httpd
-
查询某个文件属于哪个 RPM 包:
rpm -qf <文件路径> # 例如:查询 /usr/bin/ls 文件属于哪个软件包 rpm -qf /usr/bin/ls
-
查看所有可用的仓库:
sudo dnf repolist
-
列出指定仓库中的所有软件包:
sudo dnf --disablerepo="*" --enablerepo=<仓库名称> list available # 例如:列出 base 仓库中的所有软件包 sudo dnf --disablerepo="*" --enablerepo=base list available
-
查看软件包信息(来自仓库):
sudo dnf info <软件包名称>
-
搜索软件包:
sudo dnf search <关键字> # 例如:搜索与编辑器相关的软件包 sudo dnf search editor
-
清除所有仓库缓存:
sudo dnf clean all
-
检查可更新的软件包:
sudo dnf check-update
-
查看系统中已经安装的软件包组:
sudo dnf grouplist --installed
-
列出所有可用的软件包组:
sudo dnf grouplist
-
安装指定的软件包组:
sudo dnf group install <软件包组名称> # 例如:安装 "Development Tools" 软件包组 sudo dnf group install "Development Tools"
-
移除指定的软件包组:
sudo dnf group remove <软件包组名称> # 例如:移除 "Development Tools" 软件包组 sudo dnf group remove "Development Tools"
-
查询指定的软件包组信息:
sudo dnf group info <软件包组名称> # 例如:查询 "Development Tools" 软件包组的信息 sudo dnf group info "Development Tools"
使用 yum (在较旧的 CentOS 系统上或作为 dnf 的别名)
yum
的命令与 dnf
非常相似,你可以将上述 dnf
命令中的 dnf
替换为 yum
来使用。例如:
sudo yum install <软件包名称>
sudo yum update
sudo yum remove <软件包名称>
sudo yum info <软件包名称>
sudo yum list files <软件包名称>
sudo yum repolist
sudo yum search <关键字>
sudo yum clean all
sudo yum check-update
sudo yum grouplist --installed
sudo yum group install <软件包组名称>
sudo yum group remove <软件包组名称>
sudo yum group info <软件包组名称>
使用 rpm (底层工具)
rpm
主要用于直接操作 .rpm
文件,通常在 yum
或 dnf
无法满足需求时使用,或者用于安装本地下载的 .rpm
文件。
-
安装本地 .rpm 文件:
sudo rpm -ivh <软件包文件名.rpm> # -i: 显示软件包信息 # -v: 显示详细输出 # -h: 显示安装进度条 # --nodeps: 忽略依赖关系 (不推荐)
-
升级本地 .rpm 文件:
sudo rpm -Uvh <软件包文件名.rpm> # -U: 升级软件包,如果未安装则安装
-
卸载软件包:
sudo rpm -e <软件包名称> # --nodeps: 忽略依赖关系 (不推荐)
-
查询已安装软件包的信息:
rpm -qi <软件包名称>
-
列出已安装软件包的文件信息:
rpm -ql <软件包名称>
-
查询某个文件属于哪个已安装的 rpm 包:
rpm -qf <文件路径>
总结
CentOS 提供了强大而灵活的软件包管理系统。通过熟练掌握 dnf
(或 yum
)和 rpm
这三种工具,你将能够轻松地在你的 CentOS 系统上安装、更新、卸载和管理各种软件包,保持系统的稳定和安全。在日常使用中,推荐优先使用 dnf
,因为它提供了更好的性能和功能。希望本文能够帮助你更好地理解和使用 CentOS 的软件包管理系统。