点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!
RPM安装; DNF安装; 源码安装。
1. RPM概述
2. DNF概述
3. 源码安装
源码包指的是开发编写好的程序源代码,但并没有将其编译为一个能正常使用的工具。
DNF(DANDIFIED YUM) | YUM(YELLOWDOG UPDATER MODIFIED) |
|---|---|
DNF 使用 libsolv 来解析依赖关系,由 SUSE 开发和维护 | YUM 使用公开的 API 来解析依赖关系 |
API 有完整的文档 | API 没有完整的文档 |
由 C、C++、Python 编写的 | 只用 Python 编写 |
DNF 目前在 Fedora、RHEL 8、CentOS 8、OEL 8 和 Mageia 6/7 中使用 | YUM 目前在 RHEL 6/7、CentOS 6/7、OEL 6/7 中使用 |
DNF 支持各种扩展 | Yum 只支持基于 Python 的扩展 |
API 有良好的文档,因此很容易创建新的功能 | 因为 API 没有正确的文档化,所以创建新功能非常困难 |
DNF 在同步存储库的元数据时,使用的内存较少 | 在同步存储库的元数据时,YUM 使用了过多的内存 |
DNF 使用满足性算法来解决依赖关系解析(它是用字典的方法来存储和检索包和依赖信息) | 由于使用公开 API 的原因,Yum 依赖性解析变得迟钝 |
DNF 更新:在 DNF 更新过程中,如果包中包含不相关的依赖,则不会更新 | YUM 将在没有验证的情况下更新软件包 |
如果启用的存储库没有响应,DNF 将跳过它,并继续使用可用的存储库处理事务 | 如果有存储库不可用,YUM 会立即停止 |
安装包的依赖关系不更新 | Yum 为这种行为提供了一个选项 |
清理删除的包:当删除一个包时,DNF 会自动删除任何没有被用户明确安装的依赖包 | Yum 不会这样做 |
存储库缓存更新计划:默认情况下,系统启动后 10 分钟后,DNF 每小时会对配置的存储库检查一次更新。这个动作由系统定时器单元 dnf-makecache.timer 控制 | Yum 也会这样做 |
内核包不受 DNF 保护。不像 Yum,你可以删除所有的内核包,包括运行中的内核包 | Yum 不允许你删除运行中的内核 |
libsolv:用于解包和读取资源库。 hawkey: 为 libsolv 提供简化的 C 和 Python API 库。 librepo: 提供 C 和 Python(类似 libcURL)API 的库,用于下载 Linux 存储库元数据和软件包。 libcomps: 是 yum.comps 库的替代品。它是用纯 C 语言编写的库,有 Python 2 和 Python 3 的绑定。 | Yum 不使用单独的库来执行这些功能 |
1. 环境准备
1)CTyunOS虚拟机
操作系统:CTyunOS 主机名:ctyunosTest 操作用户:root
2)YUM服务器
操作系统:CentOS7.8 主机名:web3 操作用户:root
2. 搭建YUM服务器
1)上传CTyunOS YUM仓库iso镜像

2)创建挂载目录
mkdir -p /data/iso
3)挂载iso镜像
mount -o loop ctyunos-2.0.1-220329-everything-x86_64-dvd.iso /data/iso/

4)下载httpd,创建软连接
yum install -y httpd
ln -s data/iso var/www/html/iso
5)修改ctyunosTest的repo文件
cp /etc/yum.repos.d/ctyunos.repo{,.bak}
vi ctyunos.repo
[iso]
name=iso
baseurl=http://10.0.0.9/iso
enabled=1
gpgcheck=0
6)测试YUM仓库
yum list

1. RPM管理
1.1 安装功能
1)使用rpm命令安装软件包,需要了解如下参数
-i #安装; -v #详细信息; -h #安装进度; --test #测试是否能够安装成功; --force #强制重新安装; --nodeps #忽略依赖关系。
2)先上传一个nginx的RPM包

3)安装nginx RPM包(失败,缺少依赖关系)
rpm -ivh nginx-1.20.2-1.el7.ngx.x86_64.rpm

1.2 查询功能
1)使用rpm命令查询已安装好的rpm包, 需要了解如下参数
rpm -q #查看指定软件包是否安装; rpm -qa #查看系统中已安装的所有RPM软件包列表; rpm -qi #查看已安装软件的详细信息; rpm -ql #查询已安装软件包所安装的目录、文件列表; rpm -qc #查询已安装软件包的配置文件; rpm -qd #查询已安装软件包的帮助文档; rpm -qf #查询文件或目录属于哪个RPM软件。
2)查询未安装的软件包信息
rpm -qip #查询未安装的rpm包详细信息; rpm -qlp #查询未安装的软件包会产生哪些文件。
1.3 升级功能
rpm -U #不需要老版本安装包,直接安装最新的; rpm -F #必须要有老版本安装包,才能更新。
1.4 卸载功能
2. DNF管理
2.1 搜索软件包
dnf search httpd

2.2 列出软件包清单
1)列出所有软件包
dnf list all
dnf list |grep nginx
dnf list nginx


2.3 显示软件包信息
dnf info nginx

2.4 安装RPM包
dnf install -y httpd

2.5 删除安装包
dnf remove httpd

2.6 检查和更新
1)显示当前系统可用的更新
dnf check-update

2)更新已安装的RPM
dnf update httpd

2.7 DNF历史事件
1)查看dnf历史命令
dnf history

2)查询历史执行dnf命令ID详细信息,N是历史操作的事务编号
dnf history info 3

3)撤销历史执行过的dnf命令
dnf history undo 5

4)回滚历史执行过的dnf命令

dnf history redo 5

3. 源码包管理
3.1 源码包编译为二进制可执行文件步骤
1)下载源码安装包文件; 2)tar解包(解压并释放源代码包到指定目录); 3)./confgure配置(设置安装目录、安装模块等选项、生成makefile); 4)make编译(将makefile生成可执行的二进制文件); 5)make install安装(复制二进制文件到系统,配置应用环境)。
3.2 编译安装Nginx示例
1)上传Nginx tar包,解压tar包
tar xf nginx-1.20.2.tar.gz

2)配置安装目录
./configure --prefix=/usr/local/nginx

3)编译安装
make && make install

4)查看安装
ls /usr/local/

总 结:
3. 源码包可以自行修改源代码,定制需要的相关功能,且新版软件优先更新源码。缺点是相对YUM或DNF安装会复杂很多,标准化实施困难,自动化就无法落地。

本文作者:李俞松(上海新炬中北团队)
本文来源:“IT那活儿”公众号





