往期目录:
从0开始学习Linux——简介&安装
从0开始学习Linux——搭建属于自己的Linux虚拟机
从0开始学习Linux——文本编辑器
上一个章节我们简单了解了Linux中常用的一些文本编辑器,本次教程我们将学习yum工具。
一、Yum简介
Yum(全名:Yellowdog Updater, Modified)是一个用于管理Red Hat及其衍生发行版(如 CentOS、Fedora、RHEL 等)软件包的命令行工具。Yum可以自动解决依赖关系,帮助用户安装、更新、删除软件包,从而简化了系统管理和软件包维护工作。
Yum 是基于 RPM
包管理系统的,它的作用是通过简化包的管理过程,使得系统管理员能够轻松地安装和维护软件包,而不必手动处理软件包的依赖关系。
我们在继续讲解Yum之前先补充一下RPM包管理系统。
RPM(Red Hat Package Manager)是一个广泛用于基于 Linux 的操作系统(尤其是 Red Hat 系列如 RHEL、CentOS、Fedora 等)的软件包管理系统。它提供了一种标准化的方法来管理系统中的软件安装、卸载、升级、查询和验证,使用的是.rpm文件格式。
RPM 使得软件包的安装和管理变得高效、可靠,并且能够自动处理软件包的依赖关系、文件冲突以及其他问题。
下面我们了解一下RPM的相关概念。
1、RPM包即.rpm文件
RPM 包是一个压缩文件,包含了要安装的软件、配置文件、文档以及安装过程所需的其他信息。
这里我们来举一个例子:
<name>-<version>-<release>.<architecture>.rpm
在上述例子中name表示的软件的名称,version表示版本,release表示发布号(通常用于区分相同版本的不同构建),architecture表示适用的系统架构(如 x86_64、i386 等)。
2、RPM数据库
系统中安装的所有 RPM 包的信息(如包名、版本、文件列表、安装路径等)都保存在 RPM 数据库中。通过这个数据库,可以快速查询、更新、删除软件包。
补充:RPM数据库
RPM数据库是用于存储已安装的软件包信息的数据库,通常包含关于包的元数据(如版本、文件列表、安装时间等)。
RPM数据库的默认位置是:
/var/lib/rpm/
在该目录下包含着一些重要的文件,例如Packages是据库的核心文件,存储已安装包的信息,而Name、RequireName、ProvideName等是索引文件用于加速查询。
下面我们来讲解一下RPM常用的一些命令去操作RPM数据库。
1、列出已安装的所有包
rpm -qa
2、查询特定软件包信息
rpm -qi 包名
例如在这里我们查询Python信息。
3、列出某个包安装的文件
rpm -ql 包名
4、查询文件属于哪个安装包
rpm -qf 文件路径
5、查询一个包的依赖关系
rpm -qR 包名
6、查询软件包的完整性
rpm -v 包名
注意:RPM数据库是一个二进制数据库(通常是Berkeley DB格式),这意味着普通文本编辑器无法直接查看其内容。你只能通过RPM命令来查询数据库中的信息。
二、Yum基础操作
2.1 软件安装
Yum 可以从配置好的软件源中自动下载并安装软件包,并自动处理软件包间的依赖关系。
yum install 包名
2.2 软件卸载
yum remove 包名
注意:系统中一些rpm包是不能进行卸载的,如上面所示。
2.3 更新软件包
Yum 允许更新已安装的软件包至最新版本。它会从仓库中获取软件包更新并应用。
yum update 包名
注意:若不指明包名则将会更新所有可以更新的包。
2.4 查看软件包信息
yum info 包名
2.5 查找软件包
yum search 待查找字符串
我们在执行搜索命令时可以进行模糊搜索,也就是可以不用将包名给完全输入,例如我要搜索python但是我忘记该包名的名字我只直到py开头,那么我可以输入py,那么它就会帮我找出和py相关的包。
2.6 列出已安装软件包
yum list installed
2.7 清理缓存
由于Yum会缓存下载的软件包以提高后续安装速度。可以使用 yum clean
命令来清理这些缓存,释放磁盘空间。
yum clean all
2.8 其它选项
我们在执行一些命令的时候可以加上-y表示在命令执行过程中无需手动确认,例如:yum install -y vim则表示安装vim的时候如果需要确认,默认选择yes无需确认,如果我们加上-q选项则表示安静运行命令,只是输出一些必要信息。
三、Yum配置文件
Yum 的配置文件位于/etc/yum.conf。这个文件控制了 Yum 的各种行为,包括:
- 配置软件源(仓库)的地址。
- 配置缓存目录。
- 配置日志文件路径。
- 配置一些高级选项,如禁用 GPG 签名检查等。
补充:cat命令
上述我们在查看yum.conf文件的时候用到了cat命令。
cat(concatenate的缩写)是一个在Linux和类Unix操作系统中常用的命令行工具,用于查看、连接和创建文件。这个命令非常简单,但功能强大,通常用于输出文件内容、合并多个文件内容以及创建新文件。
1、查看文件
cat 文件名
2、查看多个文件
cat 文件1 文件2 .....
3、cat常用选项
我们在用cat进行文件查看的时候可以加上其它命令。
cat -命令 文件名
- -n:为输出的每一行加上行号,包括空行
- --number:为输出的每一行加上行号,包括空行
- -b:为输出的每一行加上行号,不包括空行
- --number-nonblank:为输出的每一行加上行号,不包括空行
- -E:在每行的末尾显示$,表示结束
- --show-ends:在每行的末尾显示$,表示结束
- -T:将文件中的制表符显示为^T,可以用于检查是否有制表符
- --show-tabs:将文件中的制表符显示为^T,可以用于检查是否有制表符
- -v:显示不可打印字符(除了换行符和制表符)为
^
或M-
的形式。这对于调试文件中的特殊字符很有帮助。- --show-nonprinting:显示不可打印字符(除了换行符和制表符)为
^
或M-
的形式。这对于调试文件中的特殊字符很有帮助。- -A:这个选项是
-vET
的组合,意味着显示不可打印字符(-v
),显示行末的$
(-E
),并显示制表符(-T
)。这个选项用于查看文件的所有细节。- --show-all:这个选项是
-vET
的组合,意味着显示不可打印字符(-v
),显示行末的$
(-E
),并显示制表符(-T
)。这个选项用于查看文件的所有细节。4、创建文件
cat命令也可以用于文件的创建并向其中输入内容。在命令行中输入以下命令后,可以直接在终端输入文本内容,按
Ctrl+D
结束输入并保存文件。cat > 文件名
5、文件合并
cat可以将多个文件的内容连接在一起,并将合并后的内容输出到新的文件中。使用输出重定向符号
>
或追加符号>>
,可以将合并结果保存到新文件。cat 待合并文件1 待合并文件2 > 合并后的新文件名
cat 待合并文件1 待合并文件2 >> 合并后的新文件名
注意:上述命令中的“>”在合并过程中遇到相同内容会进行覆盖,而“>>”则是追加。
6、总结
cat一般适合处理小型文件的查看、创建、合并等操作。
四、yum仓库
Yum 使用软件源(或称仓库)来获取软件包。软件源是服务器上存储 RPM 包的目录,Yum 会从这些服务器上下载和安装包。软件源可以配置为 HTTP、FTP 或本地文件路径。
常见的 Yum 软件源包括:
- CentOS 官方源:适用于 CentOS 系统。
- EPEL (Extra Packages for Enterprise Linux):由 Fedora 提供的附加软件包源。
- Remi Repository:第三方源,提供最新的 PHP、MySQL 等软件包。
- RPM Fusion:提供一些非自由的开源软件包,如多媒体编解码器。
Yum的仓库默认保存在/etc/yum.repos.d/。
在上图中我们可以看到/etc/yum.repos.d/目录下只有一个仓库即CentOS-Base.repo。
下面我们就来探究一下整个仓库的内容。
在上述仓库中我们可以看到,它由三部分组成即base模块、updates模块、extras模块,在这些模块中有一些属性,它们的含义如下所示:
- name:该选项中的值是指仓库的名称,在仓库命名中$releasever是CentOS 的版本号(例如 7)。这个名称在 YUM 输出中用于标识该仓库。
- baseurl:镜像url地址,我们可以根据需要进行替换,在上一个教程中我们将它的原始镜像换成了国内的阿里云镜像,这样起到一个加速的作用,当然如果使用原始镜像也可以,只要搭配科学上网也是没问题的。
- gpgcheck:该选项有两个值其中1表示启用 GPG 签名校验。YUM 会通过 GPG 密钥验证下载的软件包是否完整且未被篡改,确保包的安全性。
- gpgkey:该选项中的值是存放 GPG 公钥的 URL。通过这个公钥,YUM 可以验证软件包的签名。
现在我们已经知道了什么是Yum仓库,也去查看了Yum仓库的位置,下面我们将来学习如何去自己创建Yum仓库。
其实很简单,我们只需要使用文本编辑器在/etc/yum.repos.d/目录下创建一个.repo文件,然后我们可以模仿上述我们看到的CentOS-Base.repo仓库去添加内容。
[myrepo]
name=仓库名称
baseurl=镜像源地址/centos/7/x86_64/
enabled=1
gpgcheck=1
gpgkey=镜像源密钥
上述仓库中的属性中enable表示是否启用该仓库,1表示启用。
我们在配置完仓库以后需要去更新仓库缓存。
yum makecache
我们在安装软件的时候也可以指定仓库源。
yum install 包名 --enablerepo=仓库名
当然我们在安装软件的时候也可以禁用某个仓库源。
yum install 包名 --disablerepo=仓库名
五、Yum依赖关系处理
Yum 的一个主要优点是它可以自动处理包之间的依赖关系。在安装、更新或卸载软件包时,Yum 会自动检查并安装所有需要的依赖包。例如,在安装一个软件包时,如果该包依赖其他软件包,Yum 会自动下载并安装这些依赖包,确保软件的正常运行。
六、DNF
在Linux操作系统中,DNF(Dandified YUM)是一个用于管理RPM软件包的包管理工具,主要用于基于RPM包格式的发行版(如Fedora、RHEL、CentOS等)。它是YUM(Yellowdog Updater Modified)的后继者,是一个更现代、功能更强大的包管理工具。
DNF设计目标是提高性能、减少内存使用、更好的依赖关系处理、以及更直观的命令行界面。自从Fedora 22及其后版本开始,DNF已被默认替代YUM。
注意:若系统中没有DNF,那么我们可以使用Yum进行安装。
对于DNF命令就不去过多讲解,因为DNF是Yum的加强版,因此大部分命令都是相同的,例如yum install对应的就是dnf install。
这里我们可以了解一下DNF和Yum的区别:
特性 | Yum | DNF |
---|---|---|
性能 | 相对较慢 | 更快,尤其是依赖解决和包下载 |
内存占用 | 较高 | 更低 |
依赖关系解决 | 使用rpm 库,处理复杂度较高 | 使用libsolv 库,处理更高效 |
支持插件 | 支持 | 支持 |
回滚支持 | 无 | 提供历史记录,支持回滚 |
本次内容就结束了,更多内容将在后续教程中展示。