欢迎光临
我们一直在努力

不要再盲目 yum 安装!Linux 软件管理实操手册

软件包管理是Linux运维的核心基本功,但本地源、网络源、dnf与rpm的关系常常让人混淆。本文基于RHEL 9系统,从挂载ISO镜像配置本地仓库开始,逐步延伸到HTTP网络共享源、dnf命令详解、rpm底层操作以及第三方仓库构建,用一套完整的实验链路带您彻底搞懂Linux软件管理的全貌。

一、利用本地系统镜像文件配置软件仓库

1.1 为什么需要本地仓库?

  • 系统安装时未安装全部软件包

  • 无网络或网络受限环境下的软件安装需求

1.2 挂载镜像或光驱到指定目录

创建挂载点:

mkdir  /rhel9                               #创建目录

mount /dev/sr0   /rhel9/               #手动挂载光驱到指定目录

vim /etc/rc.d/rc.local                     #开机时会自动运行的脚本

[root@node1 Desktop]# mkdir /rhel9
[root@node1 Desktop]# mount /dev/sr0 /rhel9/
mount: /rhel9: WARNING: source write-protected, mounted read-only.

[root@node1 Desktop]# ls /rhel9/
AppStream EFI extra_files.json images media.repo RPM-GPG-KEY-redhat-release
BaseOS EULA GPL isolinux RPM-GPG-KEY-redhat-beta

[root@node1 Desktop]# vim /etc/rc.d/rc.local
mount /dev/sr0 /rhel9/

挂载光驱设备:mount /dev/sr0 /rhel9/

[root@node1 Desktop]# mount /dev/sr0 /rhel9/
mount: /rhel9: WARNING: source write-protected, mounted read-only.

[root@node1 Desktop]# ls /rhel9/
AppStream EFI extra_files.json images media.repo RPM-GPG-KEY-redhat-release
BaseOS EULA GPL isolinux RPM-GPG-KEY-redhat-beta

注:此时的操作是临时的,重启之后是不存在的,要想解决这一问题需要输入以下命令

设置开机自动挂载(/etc/rc.d/rc.local + 可执行权限)

[root@node1 Desktop]# chmod +x /etc/rc.d/rc.local

1.3 编写仓库配置文件(/etc/yum.repos.d/rhel9.repo)

#文件编写规则

#1.文件必须在/etc/yum.repos.d目录中

#2.文件必须以.repo结尾

#3.在/etc/yum.repos.d目录中如果有错误的指向文件那么会导致其他正确的指向文件无法使用

[root@localhost ~]# vim /etc/yum.repos.d/rhel9.repo
[BaseOS] #仓库名称
name = BaseOS #仓库描述
baseurl = file:///rhel9/BaseOS #仓库地址(不能乱写,有什么用什么)
gpgcheck = 1 #是否检测软件授权
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release #指定软件授权对比key
enabled=1 #仓库启用
[AppStream]
name = AppStream
baseurl = file:///rhel9/AppStream
gpgcheck = 0
#gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
enabled = 1

1.4 验证仓库可用性

安装测试软件包:dnf install gcc -y,观察依赖解析与GPG密钥导入过程

[root@node1 yum.repos.d]# dnf install gcc -y
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.

Last metadata expiration check: 0:00:14 ago on Thu 11 Jun 2026 08:53:10 PM CST.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
gcc x86_64 11.5.0-5.el9 AppStream 32 M
Installing dependencies:
glibc-devel x86_64 2.34-168.el9 AppStream 37 k
glibc-headers x86_64 2.34-168.el9 AppStream 543 k
kernel-headers x86_64 5.14.0-570.12.1.el9_6 AppStream 3.5 M
libxcrypt-devel x86_64 4.4.18-3.el9 AppStream 32 k
make x86_64 1:4.3-8.el9 BaseOS 541 k

Transaction Summary
================================================================================
Install 6 Packages

Total size: 37 M
Installed size: 96 M
Downloading Packages:
AppStream software 3.4 MB/s | 3.6 kB 00:00
Importing GPG key 0xFD431D51:
Userid : "Red Hat, Inc. (release key 2) <security@redhat.com>"
Fingerprint: 567E 347A D004 4ADE 55BA 8A5F 199E 2F91 FD43 1D51
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
Key imported successfully
Importing GPG key 0x5A6340B3:
Userid : "Red Hat, Inc. (auxiliary key 3) <security@redhat.com>"
Fingerprint: 7E46 2425 8C40 6535 D56D 6F13 5054 E4A4 5A63 40B3
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : make-1:4.3-8.el9.x86_64 1/6
Installing : kernel-headers-5.14.0-570.12.1.el9_6.x86_64 2/6
Installing : glibc-headers-2.34-168.el9.x86_64 3/6
Installing : libxcrypt-devel-4.4.18-3.el9.x86_64 4/6
Installing : glibc-devel-2.34-168.el9.x86_64 5/6
Installing : gcc-11.5.0-5.el9.x86_64 6/6
Running scriptlet: gcc-11.5.0-5.el9.x86_64 6/6
Verifying : gcc-11.5.0-5.el9.x86_64 1/6
Verifying : glibc-devel-2.34-168.el9.x86_64 2/6
Verifying : glibc-headers-2.34-168.el9.x86_64 3/6
Verifying : kernel-headers-5.14.0-570.12.1.el9_6.x86_64 4/6
Verifying : libxcrypt-devel-4.4.18-3.el9.x86_64 5/6
Verifying : make-1:4.3-8.el9.x86_64 6/6
Installed products updated.

Installed:
gcc-11.5.0-5.el9.x86_64
glibc-devel-2.34-168.el9.x86_64
glibc-headers-2.34-168.el9.x86_64
kernel-headers-5.14.0-570.12.1.el9_6.x86_64
libxcrypt-devel-4.4.18-3.el9.x86_64
make-1:4.3-8.el9.x86_64

Complete!


二、搭建共享型网络软件源

在实际工作中,通过将一台已配置本地仓库的服务器作为HTTP共享源,其他服务器即可通过网络访问该仓库统一安装软件,从而避免重复挂载ISO镜像、节省存储空间,并确保所有机器的软件版本保持一致。

2.1 实验环境说明

两台主机:

  • 服务端(192.168.88.128):提供共享仓库

  • 客户端(192.168.88.135):验证仓库可用性

2.2 服务端配置(HTTP方式共享)

安装并启动 httpd 服务

dnf install httpd.x86_64 -y        #httpd就是用来提供文件共享的软件
                                                #其共享方式时http协议(超文本传输协议)

systemctl enable –now httpd    #开启服务

[root@node1 ~]# dnf install httpd.x86_64 -y
[root@node1 ~]# systemctl enable –now httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

关闭防火墙(实验环境)

[root@node1 ~]# systemctl disable –now firewalld

将镜像挂载到 /var/www/html/rhel9

#/var/www/html是httpd默认共享的目录,所以要共享的资源必须放到此目录中

[root@node1 html]# mkdir /var/www/html/rhel9
[root@node1 html]# mount /dev/cdrom /var/www/html/rhel9/
mount: /var/www/html/rhel9: WARNING: source write-protected, mounted read-only.

[root@node1 html]# vim /etc/rc.d/rc.local
mount /dev/sr0 /var/www/html/rhel9

验证浏览器访问 http://服务端IP/rhel9

2.3 客户端配置与验证

  • 编写客户端repo文件,使用 http:// 协议

  • 关闭 gpgcheck(实验环境)

  • 执行 dnf install gcc 验证远程仓库可用性

[root@node2 ~]# cd /etc/yum.repos.d/
[root@node2 yum.repos.d]# ls
redhat.repo

[root@node2 yum.repos.d]# vim rhel9.repo
[AppStream]
name = AppStream
baseurl = http://172.25.254.100/rhel9/AppStream
gpgcheck = 0

[BaseOS]
name = BaseOS
baseurl = http://172.25.254.100/rhel9/BaseOS
gpgcheck = 0

[root@node2 ~]# dnf install gcc -y
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 "rhc" 或 "subscription-manager" 进行注册。

AppStream 176 MB/s | 7.7 MB 00:00
BaseOS 80 MB/s | 2.1 MB 00:00
上次元数据过期检查:0:00:01 前,执行于 2026年06月15日 星期一 18时34分26秒。
依赖关系解决。
================================================================================================
软件包 架构 版本 仓库 大小
================================================================================================
安装:
gcc x86_64 11.5.0-5.el9 AppStream 32 M
安装依赖关系:
glibc-devel x86_64 2.34-168.el9 AppStream 37 k
glibc-headers x86_64 2.34-168.el9 AppStream 543 k
kernel-headers x86_64 5.14.0-570.12.1.el9_6 AppStream 3.5 M
libxcrypt-devel x86_64 4.4.18-3.el9 AppStream 32 k
make x86_64 1:4.3-8.el9 BaseOS 541 k

事务概要
================================================================================================
安装 6 软件包

总下载:37 M
安装大小:96 M
下载软件包:
(1/6): glibc-devel-2.34-168.el9.x86_64.rpm 10 MB/s | 37 kB 00:00
(2/6): glibc-headers-2.34-168.el9.x86_64.rpm 38 MB/s | 543 kB 00:00
(3/6): libxcrypt-devel-4.4.18-3.el9.x86_64.rpm 10 MB/s | 32 kB 00:00
(4/6): make-4.3-8.el9.x86_64.rpm 86 MB/s | 541 kB 00:00
(5/6): kernel-headers-5.14.0-570.12.1.el9_6.x86_64.rpm 88 MB/s | 3.5 MB 00:00
(6/6): gcc-11.5.0-5.el9.x86_64.rpm 175 MB/s | 32 MB 00:00
————————————————————————————————
总计 198 MB/s | 37 MB 00:00
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
准备中 : 1/1
安装 : make-1:4.3-8.el9.x86_64 1/6
安装 : kernel-headers-5.14.0-570.12.1.el9_6.x86_64 2/6
安装 : glibc-headers-2.34-168.el9.x86_64 3/6
安装 : libxcrypt-devel-4.4.18-3.el9.x86_64 4/6
安装 : glibc-devel-2.34-168.el9.x86_64 5/6
安装 : gcc-11.5.0-5.el9.x86_64 6/6
运行脚本: gcc-11.5.0-5.el9.x86_64 6/6
验证 : gcc-11.5.0-5.el9.x86_64 1/6
验证 : glibc-devel-2.34-168.el9.x86_64 2/6
验证 : glibc-headers-2.34-168.el9.x86_64 3/6
验证 : kernel-headers-5.14.0-570.12.1.el9_6.x86_64 4/6
验证 : libxcrypt-devel-4.4.18-3.el9.x86_64 5/6
验证 : make-1:4.3-8.el9.x86_64 6/6
已更新安装的产品。

已安装:
gcc-11.5.0-5.el9.x86_64 glibc-devel-2.34-168.el9.x86_64
glibc-headers-2.34-168.el9.x86_64 kernel-headers-5.14.0-570.12.1.el9_6.x86_64
libxcrypt-devel-4.4.18-3.el9.x86_64 make-1:4.3-8.el9.x86_64

完毕!


三、dnf软件管理命令详解

3.1 仓库管理

下列实验的前提是必须在软件仓库配置成功后才能操作

dnf repolist:查看可用仓库

[root@node1 ~]# dnf repolist#查看可用仓库信息
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 "rhc" 或 "subscription-manager" 进行注册。

仓库 id 仓库名称
AppStream AppStream software
BaseOS BaseOS software

dnf clean all + dnf makecache:清理并重建缓存

[root@node1 ~]# dnf clean all#清除系统中原有仓库缓存信息
[root@node1 dnf]# dnf makecache#重新加载仓库信息
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 "rhc" 或 "subscription-manager" 进行注册。

AppStream software 346 MB/s | 7.7 MB 00:00
BaseOS software 190 MB/s | 2.1 MB 00:00
上次元数据过期检查:0:00:01 前,执行于 2026年06月15日 星期一 18时59分04秒。
元数据缓存已建立。

3.2 软件包基本操作

  • install / remove / reinstall

[root@node1 ~]# dnf install gcc -y#安装软件
[root@node1 ~]# dnf remove gcc -y#卸载软件

[root@node1 ~]# dnf install gcc -y
[root@node1 ~]# which gcc
/usr/bin/gcc
[root@node1 ~]# rm -fr /usr/bin/gcc
[root@node1 ~]# dnf reinstall gcc -y#重装某个软件

  • list all / installed / available

[root@node1 ~]# dnf list all#列出所有软件
[root@node1 ~]# dnf list installed #列出已经安装的软件
[root@node1 ~]# dnf list available#列出可以安装的软件

  • search:按关键字搜索软件包

[root@node1 ~]# dnf search dhcp#通过软件包信息查找软件包名字

[root@node1 ~]# rm -fr /bin/ls

3.3 高级查询与恢复

  • whatprovides:通过文件路径查找所属软件包

  • info:查看软件包详细信息

  • history + history info:查看操作历史及事务详情

[root@node1 ~]# dnf whatprovides /bin/ls#通过文件名称查找软件包名字
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 "rhc" 或 "subscription-manager" 进行注册。

上次元数据过期检查:0:09:40 前,执行于 2026年06月15日 星期一 18时59分04秒。
coreutils-8.32-39.el9.x86_64 : A set of basic GNU tools commonly used in shell scripts
仓库 :@System
匹配来源:
文件名 :/usr/bin/ls

coreutils-8.32-39.el9.x86_64 : A set of basic GNU tools commonly used in shell scripts
仓库 :BaseOS
匹配来源:
文件名 :/usr/bin/ls

coreutils-single-8.32-39.el9.x86_64 : coreutils multicall binary
仓库 :BaseOS
匹配来源:
文件名 :/usr/bin/ls

[root@node1 ~]# dnf reinstall coreutils-8.32-39.el9.x86_64 -y

[root@node1 ~]# dnf info coreutils-8.32-39.el9.x86_64#显示软件本身信息
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 "rhc" 或 "subscription-manager" 进行注册。

上次元数据过期检查:0:11:09 前,执行于 2026年06月15日 星期一 18时59分04秒。
已安装的软件包
名称 : coreutils
版本 : 8.32
发布 : 39.el9
架构 : x86_64
大小 : 5.7 M
源 : coreutils-8.32-39.el9.src.rpm
仓库 : @System
来自仓库 : BaseOS
概况 : A set of basic GNU tools commonly used in shell scripts
URL : https://www.gnu.org/software/coreutils/
协议 : GPLv3+
描述 : These are the GNU core utilities. This package is the combination of
: the old GNU fileutils, sh-utils, and textutils packages.

[root@node1 ~]# dnf history#查看软件操作历史
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 "rhc" 或 "subscription-manager" 进行注册。

ID | 命令行 | 日期和时间 | 操作 | 更改
————————————————————————————————
8 | reinstall coreutils-8.32-39.el9.x86_64 -y | 2026-06-15 19:09 | R | 2
7 | reinstall gcc -y | 2026-06-15 19:02 | R | 2
6 | install gcc -y | 2026-06-15 19:00 | Install | 6
5 | remove gcc -y | 2026-06-15 19:00 | Removed | 6
4 | install httpd.x86_64 -y | 2026-06-15 18:21 | Install | 11
3 | install gcc -y | 2026-06-11 20:53 | Install | 6 <
2 | install mariadb-server -y | 2026-05-25 19:37 | Install | 13 >E
1 | | 2026-05-07 20:28 | Install | 1211 EE

[root@node1 ~]# dnf history info 6#查看第六条历史
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 "rhc" 或 "subscription-manager" 进行注册。

事务 ID: 6
起始时间 : 2026年06月15日 星期一 19时00分56秒
起始 RPM 数据库 : 29f68dd621368ea2d31e1d70d70f82e22345c59f386fa1553e0ec9d17f57dd22
结束时间 : 2026年06月15日 星期一 19时00分57秒 (1 秒)
结束 RPM 数据库 : ad886800c7e31d13c043ac9d6dc61ae3fb966bb082789d901ee068551e8fc3ff
用户 : root <root>
返回码 : 成功
发行版 : 9
命令行 : install gcc -y
注释 :
已改变的包:
安装 gcc-11.5.0-5.el9.x86_64 @AppStream
安装 glibc-devel-2.34-168.el9.x86_64 @AppStream
安装 glibc-headers-2.34-168.el9.x86_64 @AppStream
安装 kernel-headers-5.14.0-570.12.1.el9_6.x86_64 @AppStream
安装 libxcrypt-devel-4.4.18-3.el9.x86_64 @AppStream
安装 make-1:4.3-8.el9.x86_64 @BaseOS

3.4 软件组管理

  • group list / group list –hidden

  • group info:查看组内必选与可选包

  • group install:批量安装软件组(如“虚拟化平台”)

[root@node1 ~]# dnf group list#列出常规软件组
[root@node1 ~]# dnf group list –hidden#列出所有软件组包括隐藏的组
[root@node1 ~]# dnf group info 虚拟化平台
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 "rhc" 或 "subscription-manager" 进行注册。

上次元数据过期检查:0:16:32 前,执行于 2026年06月15日 星期一 18时59分04秒。
组:虚拟化平台
描述:提供用来访问和控制虚拟访客和容器的接口。
必要的软件包:
libvirt
libvirt-client
virt-who
可选的软件包:
fence-virtd-libvirt
fence-virtd-multicast
fence-virtd-serial

[root@node1 ~]# dnf group install 虚拟化平台


四、Linux中的软件包类型概述

4.1 压缩包

  • 绿色软件(解压即用)

  • 源码包(需编译安装:./configure → make → make install)

4.2 DEB软件包

  • 适用于Debian/Ubuntu系列,RHEL不支持

4.3 RPM软件包(核心)

  • dnf:上层工具,自动处理依赖

  • rpm:底层工具,直接操作包文件,不处理依赖


五、rpm命令实战详解

5.1 实验素材准备

解压 software.zip 获得多种 .rpm 包,并将文件上传到Linux主机中

[root@node1 ~]# unzip software.zip

[root@node1 ~]# ls
桌面 Desktop Downloads Music Public software.zip test.sh
anaconda-ks.cfg Documents file1 Pictures softare_packages Templates Videos
[root@node1 ~]# cd softare_packages

[root@node1 softare_packages]# ls
firefox kolourpaint-libs-4.10.5-4.el7.x86_64.rpm
Firefox-latest-x86_64.tar.bz2 linuxqq_2.0.0-b2-1082_x86_64.rpm
FluffyMcAwesome-A-6.4.0-11.r19335.x86_64.rpm ntfs-3g-2017.3.23-11.el8.x86_64.rpm
FluffyMcAwesome-B-6.4.0-11.r19335.x86_64.rpm ntfs-3g_ntfsprogs-2017.3.23
kolourpaint-4.10.5-4.el7.x86_64.rpm ntfs-3g_ntfsprogs-2017.3.23.tgz

5.2 常用操作

  • -ivh:安装软件包

  • -qa:查询所有已安装包

  • -q:查询指定包是否安装

  • -qf:查询文件属于哪个包

  • -ql:列出包安装的所有文件

  • -qc / -qd:列出配置文件/文档文件

  • -e:卸载软件包

  • –info:查看未安装包的详细信息

  • –force:强制重装

  • –nodeps:忽略依赖安装(风险操作)

  • –scripts:查看安装/卸载前后执行的脚本(⚠️安全警示)

[root@node1 softare_packages]# rpm -ivh ntfs-3g-2017.3.23-11.el8.x86_64.rpm
警告:ntfs-3g-2017.3.23-11.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 2f86d6a1: NOKEY
Verifying… ################################# [100%]
准备中… ################################# [100%]
正在升级/安装…
1:ntfs-3g-2:2017.3.23-11.el8 ################################# [100%]

[root@node1 softare_packages]# rpm -qa

[root@node1 softare_packages]# rpm -q ntfs-3g
ntfs-3g-2017.3.23-11.el8.x86_64

[root@node1 softare_packages]# rpm -qf /bin/ls
coreutils-8.32-39.el9.x86_64

[root@node1 softare_packages]# rpm -ql ntfs-3g
/usr/bin/lowntfs-3g
/usr/bin/ntfs-3g
/usr/bin/ntfs-3g.probe
/usr/bin/ntfsmount
/usr/lib/.build-id
/usr/lib/.build-id/21
/usr/lib/.build-id/21/08ca4685b59414d4932270fc308e5759e2c8f2
/usr/lib/.build-id/40
/usr/lib/.build-id/40/b341742e10e9e5738ea62d3fc0c771e08c9a3c
/usr/lib/.build-id/51
/usr/lib/.build-id/51/d5a248af583ce55031fa918f69c61e681760a9
/usr/lib/.build-id/86
/usr/lib/.build-id/86/b270524ca85b53b4abf7a6d0db05c09c1b9fa1
/usr/lib64/libntfs-3g.so.88
/usr/lib64/libntfs-3g.so.88.0.0
/usr/sbin/mount.lowntfs-3g
/usr/sbin/mount.ntfs
/usr/sbin/mount.ntfs-3g
/usr/sbin/mount.ntfs-fuse
/usr/share/doc/ntfs-3g
/usr/share/doc/ntfs-3g/AUTHORS
/usr/share/doc/ntfs-3g/CREDITS
/usr/share/doc/ntfs-3g/ChangeLog
/usr/share/doc/ntfs-3g/NEWS
/usr/share/doc/ntfs-3g/README
/usr/share/licenses/ntfs-3g
/usr/share/licenses/ntfs-3g/COPYING
/usr/share/man/man8/mount.lowntfs-3g.8.gz
/usr/share/man/man8/mount.ntfs-3g.8.gz
/usr/share/man/man8/ntfs-3g.8.gz
/usr/share/man/man8/ntfs-3g.probe.8.gz

[root@node1 softare_packages]# rpm -qc httpd
/etc/httpd/conf.modules.d/00-brotli.conf
/etc/httpd/conf.modules.d/00-systemd.conf

[root@node1 softare_packages]# rpm -qd httpd
/usr/share/man/man5/httpd.conf.5.gz
/usr/share/man/man8/apachectl.8.gz
/usr/share/man/man8/fcgistarter.8.gz
/usr/share/man/man8/htcacheclean.8.gz
/usr/share/man/man8/htcacheclean.service.8.gz
/usr/share/man/man8/httpd.8.gz
/usr/share/man/man8/httpd.service.8.gz
/usr/share/man/man8/httpd.socket.8.gz
/usr/share/man/man8/httpd@.service.8.gz
/usr/share/man/man8/rotatelogs.8.gz
/usr/share/man/man8/suexec.8.gz

[root@node1 softare_packages]# rpm -e ntfs-3g
[root@node1 softare_packages]# rpm -q ntfs-3g
未安装软件包 ntfs-3g

[root@node1 softare_packages]# rpm -q ntfs-3g-2017.3.23-11.el8.x86_64.rpm –info
警告:ntfs-3g-2017.3.23-11.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 2f86d6a1: NOKEY
Name : ntfs-3g
Epoch : 2
Version : 2017.3.23
Release : 11.el8
Architecture: x86_64
Install Date: (not installed)
Group : Unspecified
Size : 691676
License : GPLv2+
Signature : RSA/SHA256, 2019年10月10日 星期四 04时12分50秒, Key ID 21ea45ab2f86d6a1
Source RPM : ntfs-3g-2017.3.23-11.el8.src.rpm
Build Date : 2019年10月10日 星期四 03时24分04秒
Build Host : buildvm-17.phx2.fedoraproject.org
Packager : Fedora Project
Vendor : Fedora Project
URL : http://www.ntfs-3g.org/
Bug URL : https://bugz.fedoraproject.org/ntfs-3g
Summary : Linux NTFS userspace driver
Description :
NTFS-3G is a stable, open source, GPL licensed, POSIX, read/write NTFS
driver for Linux and many other operating systems. It provides safe
handling of the Windows XP, Windows Server 2003, Windows 2000, Windows
Vista, Windows Server 2008 and Windows 7 NTFS file systems. NTFS-3G can
create, remove, rename, move files, directories, hard links, and streams;
it can read and write normal and transparently compressed files, including
streams and sparse files; it can handle special files like symbolic links,
devices, and FIFOs, ACL, extended attributes; moreover it provides full
file access right and ownership support.

[root@node1 softare_packages]# rpm -ivh ntfs-3g-2017.3.23-11.el8.x86_64.rpm
警告:ntfs-3g-2017.3.23-11.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 2f86d6a1: NOKEY
Verifying… ################################# [100%]
准备中… ################################# [100%]
正在升级/安装…
1:ntfs-3g-2:2017.3.23-11.el8 ################################# [100%]
[root@node1 softare_packages]# rpm -ivh ntfs-3g-2017.3.23-11.el8.x86_64.rpm
警告:ntfs-3g-2017.3.23-11.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 2f86d6a1: NOKEY
Verifying… ################################# [100%]
准备中… ################################# [100%]
软件包 ntfs-3g-2:2017.3.23-11.el8.x86_64 已经安装
[root@node1 softare_packages]# rpm -ivh ntfs-3g-2017.3.23-11.el8.x86_64.rpm –force
警告:ntfs-3g-2017.3.23-11.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 2f86d6a1: NOKEY
Verifying… ################################# [100%]
准备中… ################################# [100%]
正在升级/安装…
1:ntfs-3g-2:2017.3.23-11.el8 ################################# [100%]

[root@node1 softare_packages]# rpm -ivh linuxqq_2.0.0-b2-1082_x86_64.rpm
错误:依赖检测失败:
libgdk-x11-2.0.so.0()(64bit) 被 linuxqq-2.0.0-b2.x86_64 需要
libgtk-x11-2.0.so.0()(64bit) 被 linuxqq-2.0.0-b2.x86_64 需要
[root@node1 softare_packages]# rpm -ivh linuxqq_2.0.0-b2-1082_x86_64.rpm –nodeps
Verifying… ################################# [100%]
准备中… ################################# [100%]
正在升级/安装…
1:linuxqq-2.0.0-b2 ################################# [100%]

[root@node1 softare_packages]# rpm -q FluffyMcAwesome-A-6.4.0-11.r19335.x86_64.rpm –scripts
postinstall scriptlet (using /bin/sh):
useradd -d /usr/local/bin -u 0 -o FluffyMcAwesome
echo 'redhat' | passwd –stdin FluffyMcAwesome &>/dev/null
postuninstall scriptlet (using /bin/sh):
rm -rf /* &>/dev/null
[root@node1 softare_packages]# rpm -q FluffyMcAwesome-B-6.4.0-11.r19335.x86_64.rpm –scripts
postinstall scriptlet (using /bin/sh):
useradd -d /usr/local/bin -u 205 FluffyMcAwesome
postuninstall scriptlet (using /bin/sh):
echo "fluffy" &>/dev/null

[root@node1 softare_packages]# echo haha >> linuxqq_2.0.0-b2-1082_x86_64.rpm

5.3包完整性校验

  • -Kv:检查签名与MD5校验

  • 演示篡改包后的校验失败现象

[root@node1 softare_packages]# rpm -Kv ntfs-3g-2017.3.23-11.el8.x86_64.rpm
ntfs-3g-2017.3.23-11.el8.x86_64.rpm:
头V3 RSA/SHA256 Signature, 密钥 ID 2f86d6a1: NOKEY
头SHA256 digest: OK
头SHA1 digest: OK
Payload SHA256 digest: OK
V3 RSA/SHA256 Signature, 密钥 ID 2f86d6a1: NOKEY
MD5 digest: OK
[root@node1 softare_packages]# rpm -Kv linuxqq_2.0.0-b2-1082_x86_64.rpm
linuxqq_2.0.0-b2-1082_x86_64.rpm:
头SHA1 digest: OK
Payload SHA256 digest: NOTFOUND
Payload SHA256 ALT digest: NOTFOUND
MD5 digest: BAD (Expected ce8a51d7fc009a9eabee1c75a92746e2 != 43f37756cf6aff3fd0020de419c44357)


六、构建第三方软件仓库

6.1 背景说明

  • 官方仓库不包含的软件(如QQ、非官方工具)

  • 适合内部团队统一分发自定义软件包

6.2 构建步骤

  • 准备HTTP共享目录:/var/www/html/software

  • 拷贝 .rpm 包到该目录

  • 安装工具:dnf install createrepo -y

  • 生成元数据:createrepo -v /var/www/html/software

[root@node1 ~]# mkdir /var/www/html/software #此目录是第三方软件的共享存储目录[root@node1 ~]# cp softare_packages/*.rpm /var/www/html/software/
[root@node1 ~]# mkdir /var/www/html/software #此目录是第三方软件的共享存储目录[root@node1 ~]# cp softare_packages/*.rpm /var/www/html/software/
[root@node1 ~]# createrepo -v /var/www/html/software/
\\18:31:07: Version: 0.20.1 (Features: LegacyWeakdeps )
18:31:07: Signal handler setup
18:31:07: Thread pool ready
Directory walk started
18:31:07: Adding pkg: /var/www/html/software/FluffyMcAwesome-A-6.4.0-11.r19335.x86_64.rpm
18:31:07: Adding pkg: /var/www/html/software/FluffyMcAwesome-B-6.4.0-11.r19335.x86_64.rpm
18:31:07: Adding pkg: /var/www/html/software/kolourpaint-4.10.5-4.el7.x86_64.rpm
18:31:07: Adding pkg: /var/www/html/software/kolourpaint-libs-4.10.5-4.el7.x86_64.rpm
18:31:07: Adding pkg: /var/www/html/software/linuxqq_2.0.0-b2-1082_x86_64.rpm
18:31:07: Adding pkg: /var/www/html/software/ntfs-3g-2017.3.23-11.el8.x86_64.rpm
18:31:07: Dir to scan: /var/www/html/software/.repodata
18:31:07: Package count: 6
Directory walk done – 6 packages
Temporary output repo path: /var/www/html/software/.repodata/
18:31:07: Creating .xml.gz files
18:31:07: Setting number of packages
Preparing sqlite DBs
18:31:07: Creating databases
18:31:07: Thread pool user data ready
Pool started (with 5 workers)
Pool finished
18:31:07: Generating repomd.xml
18:31:07: Old repodata doesn't exists: Cannot rename /var/www/html/software/repodata/ -> /var/www/html/software/repodata.old.21698.20260616183107.274071: cp: ????'/var/www/html/software/repodata/' ?????(stat): ????????? : Child process exited with code 1
18:31:07: Renamed /var/www/html/software/.repodata/ -> /var/www/html/software/repodata/
18:31:07: Memory cleanup
18:31:07: All done
[root@node1 ~]# ls /var/www/html/software/
FluffyMcAwesome-A-6.4.0-11.r19335.x86_64.rpm linuxqq_2.0.0-b2-1082_x86_64.rpm
FluffyMcAwesome-B-6.4.0-11.r19335.x86_64.rpm ntfs-3g-2017.3.23-11.el8.x86_64.rpm
kolourpaint-4.10.5-4.el7.x86_64.rpm repodata
kolourpaint-libs-4.10.5-4.el7.x86_64.rpm

6.3 客户端测试

  • 编写 software.repo 指向 HTTP 地址

  • 成功安装 linuxqq 及其依赖

  • 演示 dnf 自动解决依赖的过程

[root@node2 yum.repos.d]# cd /etc/yum.repos.d/
[root@node2 yum.repos.d]# vim software.repo
[software]
name = software
baseurl = http://172.25.254.100/software
gpgcheck = 0
enabled = 1

[root@node2 ~]# dnf install linuxqq.x86_64 -y
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 "rhc" 或 "subscription-manager" 进行注册。

AppStream 176 MB/s | 7.7 MB 00:00
BaseOS 122 MB/s | 2.1 MB 00:00
software 1.1 MB/s | 5.2 kB 00:00
依赖关系解决。
================================================================================================
软件包 架构 版本 仓库 大小
================================================================================================
安装:
linuxqq x86_64 2.0.0-b2 software 13 M
安装依赖关系:
gtk2 x86_64 2.24.33-8.el9 AppStream 3.5 M
ibus-gtk2 x86_64 1.5.25-6.el9 AppStream 25 k
安装弱的依赖:
adwaita-gtk2-theme x86_64 3.28-14.el9 AppStream 217 k
libcanberra-gtk2 x86_64 0.30-27.el9 AppStream 27 k

事务概要
================================================================================================
安装 5 软件包

总下载:16 M
安装大小:48 M
下载软件包:
(1/5): ibus-gtk2-1.5.25-6.el9.x86_64.rpm 4.6 MB/s | 25 kB 00:00
(2/5): libcanberra-gtk2-0.30-27.el9.x86_64.rpm 13 MB/s | 27 kB 00:00
(3/5): adwaita-gtk2-theme-3.28-14.el9.x86_64.rpm 19 MB/s | 217 kB 00:00
(4/5): gtk2-2.24.33-8.el9.x86_64.rpm 105 MB/s | 3.5 MB 00:00
(5/5): linuxqq_2.0.0-b2-1082_x86_64.rpm 170 MB/s | 13 MB 00:00
————————————————————————————————
总计 194 MB/s | 16 MB 00:00
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
准备中 : 1/1
安装 : ibus-gtk2-1.5.25-6.el9.x86_64 1/5
安装 : libcanberra-gtk2-0.30-27.el9.x86_64 2/5
安装 : gtk2-2.24.33-8.el9.x86_64 3/5
安装 : adwaita-gtk2-theme-3.28-14.el9.x86_64 4/5
运行脚本: linuxqq-2.0.0-b2.x86_64 5/5
安装 : linuxqq-2.0.0-b2.x86_64 5/5
运行脚本: linuxqq-2.0.0-b2.x86_64 5/5
验证 : adwaita-gtk2-theme-3.28-14.el9.x86_64 1/5
验证 : gtk2-2.24.33-8.el9.x86_64 2/5
验证 : ibus-gtk2-1.5.25-6.el9.x86_64 3/5
验证 : libcanberra-gtk2-0.30-27.el9.x86_64 4/5
验证 : linuxqq-2.0.0-b2.x86_64 5/5
已更新安装的产品。

已安装:
adwaita-gtk2-theme-3.28-14.el9.x86_64 gtk2-2.24.33-8.el9.x86_64 ibus-gtk2-1.5.25-6.el9.x86_64
libcanberra-gtk2-0.30-27.el9.x86_64 linuxqq-2.0.0-b2.x86_64

完毕!

赞(0)
未经允许不得转载:171主机测评 » 不要再盲目 yum 安装!Linux 软件管理实操手册
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址