七、软件管理
7.1 rpm 安装
7.1.1 挂载
[root@localhost ~]# ll /mnt
total 0
drwxr-xr-x. 2 root root 6 Oct 27 21:32 hgfs
[root@localhost ~]# mount /dev/sr0 /mnt #挂载
mount: /mnt: WARNING: source write-protected, mounted read-only.
[root@localhost ~]#
[root@localhost ~]# ll /mnt #挂载后再次查看,里面是 ISO 镜像的内容
total 44
drwxr-xr-x. 1 root root 2048 Oct 25 2023 AppStream
drwxr-xr-x. 1 root root 2048 Oct 25 2023 BaseOS
drwxrwxr-x. 1 root root 2048 Oct 25 2023 EFI
-r--r--r--. 1 root root 8154 Oct 25 2023 EULA
-r--r--r--. 1 root root 1455 Oct 25 2023 extra_files.json
-r--r--r--. 1 root root 18092 Oct 25 2023 GPL
drwxrwxr-x. 1 root root 2048 Oct 25 2023 images
drwxrwxr-x. 1 root root 2048 Oct 25 2023 isolinux
-r--r--r--. 1 root root 103 Oct 25 2023 media.repo
-r--r--r--. 1 root root 1669 Oct 25 2023 RPM-GPG-KEY-redhat-beta
-r--r--r--. 1 root root 3682 Oct 25 2023 RPM-GPG-KEY-redhat-release
AppStream、BaseOS:rpm包的所在目录,是 Red Hat 系列操作系统中的软件仓库分类
7.1.2创建/rpm目录,将/mnt下的仓库拷贝到/rpm下
#新建一个目录,将AppStream、BaseOS拷贝
[root@localhost ~]# mkdir /rpm
[root@localhost ~]# cp /mnt/AppStream/ /rpm/ -r
#拷贝需要时间,因此要新建一个xshell连接该虚拟机,将BaseOS也拷贝过来
[root@localhost ~]# cp /mnt/BaseOS/ /rpm/ -r
将AppStream、BaseOS作为仓库,供后面的DNF来使用
7.1.3 查看/rpm下的信息
[root@localhost ~]# ll /rpm #列出位于 /rpm 目录下的文件和子目录的详细信息。
total 0
drwxr-xr-x. 4 root root 38 Mar 15 11:40 AppStream
drwxr-xr-x. 4 root root 38 Mar 15 11:41 BaseOS
[root@localhost ~]# tree /rpm #以树状图的形式列出指定目录( /rpm)下的所有文件和子目录,以及它们的嵌套层次。
7.1.4 切换路径到/rpm/BaseOS/Packages/,查看后发现有大量的软件包
[root@localhost ~]# cd /rpm/BaseOS/
[root@localhost BaseOS]# ll #/rpm/BaseOS下有两个包Packages、repodata
total 92
drwxr-xr-x. 2 root root 61440 Mar 15 11:41 Packages
drwxr-xr-x. 2 root root 4096 Mar 15 11:41 repodata
[root@localhost BaseOS]# cd Packages/
[root@localhost Packages]# ll
total 1310536
-r--r--r--. 1 root root 84797 Mar 15 11:41 accel-config-3.5.3-2.el9.i686.rpm
-r--r--r--. 1 root root 81657 Mar 15 11:41 accel-config-3.5.3-2.el9.x86_64.rpm
-r--r--r--. 1 root root 54604 Mar 15 11:41 accel-config-libs-3.5.3-2.el9.i686.rpm
-r--r--r--. 1 root root 54176 Mar 15 11:41 accel-config-libs-3.5.3-2.el9.x86_64.rpm
7.1.5 如果我们要安装zsh-5.8-9.el9.x86_64.rpm包,则使用下面的命令
root@localhost Packages]# rpm -i zsh-5.8-9.el9.x86_64.rpm
#-i:这个选项表示你想要安装一个新的 RPM 包。它告诉 rpm 命令执行安装操作。
[root@localhost Packages]# rpm -qa | grep zsh
#查询系统中所有已安装的 RPM 包,并过滤出名称中包含 "zsh" 的包。
#-qa 中的 -q 表示查询模式,而 -a 则表示所有包。
7.1.6 删除该包
[root@localhost Packages]# rpm -e zsh
#-e:卸载
7.2 dnf 本地安装
7.2.1 切换路径到/etc/yum.repos.d/,清空仓库,为演示dnf安装做准备
[root@localhost Packages]# cd /etc/yum.repos.d/ #cd /etc/yum.repos.d/:这一步将当前工作目录更改到 /etc/yum.repos.d/,这是存放 YUM(Yellowdog Updater, Modified)仓库配置文件的目录。
[root@localhost yum.repos.d]# ll
total 8
-rw-r--r--. 1 root root 358 Nov 2 10:02 redhat.repo
-rw-r--r--. 1 root root 113 Nov 2 10:00 rpm.repo
[root@localhost yum.repos.d]# rm -rf *
[root@localhost yum.repos.d]# ll
total 0
[root@localhost yum.repos.d]# cd
[root@localhost ~]# dnf install http -y
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use subscription-manager to register.
Error: There are no enabled repositories in "/etc/yum.repos.d", "/etc/yum/repos.d", "/etc/distro.repos.d".
#该错误表明 DNF/YUM 在尝试查找软件包进行安装时,未能找到任何已启用的软件仓库。这通常是因为 /etc/yum.repos.d/ 目录中没有任何有效的 .repo 文件,正如之前命令中所做的那样清空了该目录。
注意:前面还有步骤:7.1.1、7.1.2
7.2.2 定义仓库bendi.repo,一般在/etc/yum.repos.d/目录下
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ll
total 4
-rw-r--r--. 1 root root 358 Mar 15 15:58 redhat.repo
[root@localhost yum.repos.d]# vim bendi.repo
[root@localhost yum.repos.d]# cat bendi.repo
[baseos]
name=baseos
baseurl=/rpm/BaseOS
gpgcheck=0
[appstream]
name=appstream
baseurl=/rpm/AppStream
gpgcheck=0
7.2.3 安装
[root@localhost ~]# dnf install httpd -y
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use subscription-manager to register.
baseos 133 MB/s | 2.0 MB 00:00
appstream 150 MB/s | 6.5 MB 00:00
Dependencies resolved.
============================================================================================
Package Architecture Version Repository Size
============================================================================================
Installing:
httpd x86_64 2.4.57-5.el9 appstream 52 k
#软件包名 架构信息 具体版本 从 appstream 仓库安装
7.3 dnf网络仓库安装
7.3.1 删除bendi.repo,为网络安装做准备
[root@localhost yum.repos.d]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ll
total 8
-rw-r--r--. 1 root root 113 Mar 15 16:24 bendi.repo
-rw-r--r--. 1 root root 358 Mar 15 15:58 redhat.repo
[root@localhost yum.repos.d]# rm -rf bendi.repo
注意:前面还有步骤:7.1.1、7.1.2,然后将本地仓库换成下文中的网络仓库
7.3.2 编写网络仓库
[root@localhost yum.repos.d]# vim wangluo.repo
[root@localhost yum.repos.d]# cat wangluo.repo
[baseos]
name=baseos
baseurl=http://47.108.86.156/rhel9.0/x86_64/dvd/BaseOS/
gpgcheck=0
[appstream]
name=appstream
baseurl=http://47.108.86.156/rhel9.0/x86_64/dvd/AppStream
gpgcheck=0
#http://47.108.86.156/rhel9.0/x86_64/dvd/BaseOS/和http://47.108.86.156/rhel9.0/x86_64/dvd/AppStream是网络连接,
#baseurl:这个参数指定了软件仓库的 URL 地址。在这个例子中,baseurl 设置为http://47.108.86.156/rhel9.0/x86_64/dvd/BaseOS/ 和 http://47.108.86.156/rhel9.0/x86_64/dvd/AppStream/,这意味着 DNF 将从这个远程服务器上下载所需的软件包。
7.3.3 查看网络仓库
[root@localhost yum.repos.d]# cd
[root@localhost ~]# dnf repolist #列出所有已启用的仓库,意味着 DNF 可以从这些仓库下载和安装软件包。
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use subscription-manager to register.
repo id repo name
appstream appstream
baseos baseos
#repo id:仓库的唯一标识符,在你的配置文件中对应于方括号内的名称,例如 [baseos] 和 [appstream]。
#repo name:仓库的描述性名称,对应于 .repo 文件中的 name 字段。
7.3.4 下载
[root@localhost ~]# dnf install vsftpd -y