文章目錄
- 1. 軟件管理器
- 1.1 Linux的軟件管理方式
- 1.2 Linux的常見軟件管理機制RPM和dpkg
- 2. RPM
- 2.1 rpm安裝
- 2.2 rpm升級與更新
- 2.3 rpm查詢
- 2.4 rpm驗證與數字簽名
- 2.5 rpm反安裝與重建數據庫
- 3. YUM
- 3.1 yum查詢
- 3.2 yum安裝/升級
- 3.3 yum刪除
- 3.4 yum的配置文件
- 3.5 yum的軟件群組功能
- 4. SRPM
- 4.1 安裝srpm文件
1. 軟件管理器
1.1 Linux的軟件管理方式
- Linux開發商先在固定的硬件平臺和操作系統上,將需要安裝或升級的軟件編譯好,并將與這個軟件相關的所有文件打包成一個軟件安裝文件(這個軟件安裝文件中還包含了預先檢測系統與依賴軟件的腳本,并提供記錄該軟件提供的所有文件信息等)然后將這個軟件安裝文件發布。
- 客戶端獲取該文件之后,僅需通過執行特定的命令來安裝,該文件就會依照內部的腳本來檢測依賴的輔助軟件是否存在,若安裝的環境符合要求,就會開始安裝。安裝完后還會將該軟件的信息寫入軟件管理機制中,以便未來進行升級、刪除等。
1.2 Linux的常見軟件管理機制RPM和dpkg
軟件管理機制 | 使用命令 | 在線升級功能 | 發行商 |
---|---|---|---|
RPM | rpm、rpmbuild | yum | Red Hat/Fedora |
DPKG | dpkg | apt | Debian/Ubuntu |
2. RPM
RPM:RedHat Package Manager,rpm是一種以數據庫記錄的方式,將所需的軟件安裝到Linux系統中的一套軟件管理機制。
RPM要求要將安裝的軟件先編譯過,并打包為RPM機制的文件,并通過打包好的軟件里默認的數據庫,記錄該軟件要安裝的時候必須具備的依賴屬性軟件。
RPM屬性依賴的解決方式:YUM在線升級
- 發行商先將發布的軟件放到yum服務器,然后分析這些軟件的依賴屬性問題,將這些信息(依賴項,以及所在的url)記錄成一個表;
- 客戶端有軟件安裝需求時,會主動向yum服務器的軟件源地址下載列表,然后與本機rpm數據庫中已存在的軟件數據相比較,從而一次性安裝完所有具有依賴屬性的軟件。
2.1 rpm安裝
P.S. 只有root才能執行rpm命令。
rpm -ivh [packageName]
-i : install的意思
-v : 查看詳細安裝信息
-h : 顯示安裝進度
安裝完后,軟件相關的信息會被寫入/var/lib/rpm
目錄下的數據庫文件中。
2.2 rpm升級與更新
-Uvh : 后接的軟件若沒有安裝過,則直接安裝;若之前有安裝過舊版,則自動更新到新版
-Fvh : 若后接的軟件未安裝,則該軟件不會被安裝,即之后已安裝的軟件才會被升級
2.3 rpm查詢
rpm查詢是在/var/lib/rpm/
下的數據庫文件中進行查詢的
rpm -qa-q : 僅查詢,后接已安裝的軟件名稱
-qa : 列出所有已安裝的軟件名稱
-qi : 列出該軟件的詳細信息
-ql : 列出該軟件所有的文件與目錄所在完整文件名
-qc : 列出該軟件的所有配置文件
-qd : 列出該軟件的所有說明文件
-qR : 列出與該軟件有關的依賴軟件所含的文件
-qf : 后接文件名,找出該文件屬于哪個已安裝的軟件
2.4 rpm驗證與數字簽名
驗證(Verify)的作用方式是將/var/lib/rpm/
下的數據庫內容與當前系統下所有安裝的軟件作對比,即若當有文件修改、或誤刪了某個文件,就可使用驗證的功能來驗證下原來的文件。
rpm -Va
-V : 后接軟件名,若該軟件所含的文件有修改才會顯示
-Va : 列出目前系統上所有被修改過的文件
-Vp : 后接某個rpm文件的文件名,列出該軟件內可能被修改過的文件
-Vf : 后接系統上的某個文件,顯示該文件是否被修改過
示例:
[root@server8 rpm]# rpm -Vf /var/log/lastlog
.M....G.. g /var/log/lastlogS : file size differs,文件的大小是否被改變
M : mode differs,文件的類型或屬性(rwx)是否被修改
5 : md5sum differs,md5校驗值已不同
D : device major/minor number mis-match,設備的主/次代碼已改變
L : 鏈接路徑已改變
U : user ownership differs,文件的所屬用戶已改變
G : group ownership differ,文件所屬用戶組已改變
T : mtime differs,文件的mtime改變
P : capability differs,功能已改變c : config file, 配置文件
d : documentation,數據文件
g : ghost file,幽靈文件,通常是該文件不被某個軟件所包含,較少發生
l : license file,許可證文件
r : readme,自述文件
數字簽名,是用來檢驗軟件來源的,當要安裝一個rpm文件時:
- 先要安裝原廠發布的公鑰文件;
- 實際安裝rpm軟件時,rpm命令會讀取rpm文件的簽名信息,并與本機系統內的簽名信息相比較;
- 若簽名相同則予以安裝,若找不到相關的簽名信息時,則告警并停止安裝。
以CentOs為例,CentOS使用的數字簽名系統為GnuPG(GPG),GPG通過哈希運算,算出獨一無二的數字簽名或專屬密鑰。
# CentOS的數字簽名位于的路徑
[root@server8 rpm-gpg]# pwd
/etc/pki/rpm-gpg
[root@server8 rpm-gpg]# ll
總用量 12
-rw-r--r--. 1 root root 1683 9月 14 2021 RPM-GPG-KEY-centosofficial
-rw-r--r--. 1 root root 1687 9月 14 2021 RPM-GPG-KEY-centostesting
-rw-r--r--. 1 root root 1855 8月 18 2021 RPM-GPG-KEY-redhat-release
[root@server8 rpm-gpg]# ll RPM-GPG-KEY-centosofficial
-rw-r--r--. 1 root root 1683 9月 14 2021 RPM-GPG-KEY-centosofficial# 安裝公鑰文件
rpm --import RPM-GPG-KEY-centosofficial# 安裝完后,密鑰基本上都是使用pubkey作為軟件的名稱字段
[root@server8 rpm-gpg]# rpm -qa | grep -ai "pubkey"
gpg-pubkey-8483c65d-5ccc5b19# 可使用-qi查看該軟件的信息
2.5 rpm反安裝與重建數據庫
反安裝即將軟件卸載,但要注意的是卸載的時候一定要由最上層往下解除
rpm -e [要刪除的軟件]# rpm重建數據庫
rpm --rebuilddb
3. YUM
3.1 yum查詢
yum [options] [查詢工作選項] [相關參數]# options
-y : 當yum需等待使用者輸入時,該選項可自動提供yes回應
--installroot=/some/path/ : 將該軟件安裝在/some/path/而不使用默認路徑# [查詢工作選項 ] [相關參數]
search : 查找某個軟件名稱或是描述的重要關鍵字
list : 列出目前yum管理的所有軟件與版本,類似rpm -qa
info : 同上,類似rpm -qai
provides : 從文件中去查找軟件,類似rpm -qf
3.2 yum安裝/升級
yum [option] [安裝與升級的工作選項] [相關參數]
# 選項與參數
install : 后接要安裝的軟件
update : 后接要升級的軟件,若要升級整個系統,則不接參數直接update
3.3 yum刪除
yum remove [要刪除的軟件]
3.4 yum的配置文件
yum的配置文件存放在/etc/yum.repos.d/
路徑下,文件的后綴為.repo
。
[root@server8 yum.repos.d]# cat CentOS-Linux-BaseOS.repo
# CentOS-Linux-BaseOS.repo
#
# The mirrorlist system uses the connecting IP address of the client and the
# update status of each mirror to pick current mirrors that are geographically
# close to the client. You should use this for CentOS updates unless you are
# manually picking other mirrors.
#
# If the mirrorlist does not work for you, you can try the commented out
# baseurl line instead.[baseos]
name=CentOS Linux $releasever - BaseOS
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
文件內容說明:
[base] : 軟件源名字,中括號一定要存在,名字可以自己取,但不能有兩個相同的軟件源名稱,否則yum會不知道該到哪里去找軟件源相關的軟件列表
name : 僅說明該軟件源的意義,重要性不高
mirrorlist= : 列出該軟件源可使用的鏡像站,若不想使用可直接注釋掉
baseurl= : 最重要,后接軟件源實際地址。mirrorlist是由yum程序去識別鏡像站;baseurl則是指定固定一個軟件源url
enable=1 : 啟用該軟件源
gpgcheck=1 : 數字簽名,指定是否需要查看rpm文件內的數字簽名
gpgkey= : 數字簽名的公鑰文件所在位置,使用默認值即可
關于軟件源:
# 列出當前yum服務器所使用的軟件源
yum repolist all
# 回顯內容一共有三列
# 列1 : repoid
# 列2 : repo name
# 列3 : status , 表示該軟件源是否正常運行
修改軟件源:
# 例如將yum源替換為國內源
# 先備份原始yum源文件
mkdir repoBak
cp -r *.repo repoBak
# 刪除原來的repo文件,或者將其置為enable=0
# 下載國內源(阿里)的配置文件
sudo wget -O /etc/yum.repos.d/CentOS-Base-Ali.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
# P.S. Cetnos-8.repo已停止維護,使用Centos-vault-8.5.2111.repo# 清理yum緩存.更換yum源之后需要清理原有緩存,以便使用新的源進行軟件包更新
yum clean all
yum makecache
新建.repo文件。
3.5 yum的軟件群組功能
yum [群組功能] [軟件群組]
# 選項與參數
grouplist : 列出所有可使用的【軟件群組組】
groupinfo : 后接group name,則可了解該group內含的所有軟件名
groupinstall : 可安裝一整組的軟件群組
groupremove : 刪除某個軟件群組
4. SRPM
srpm文件是包含了軟件源碼的。srpm最大的優點就是可以讓用戶自行修改設置參數(makefile/configure的參數),以符合用戶自己的Linux環境。
4.1 安裝srpm文件
rpmbuild
命令用于安裝srpm文件。使用默認值安裝srpm文件:
--rebuild : 該選項會見過后跟的srpm進行編譯和打包,最后產生rmp文件,但產生的rpm文件并未安裝到系統上
--recompile : 這個選項會直接編譯、打包并安裝