七、軟件管理
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 identityThis 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 identityThis 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 identityThis 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