自學Linux Shell9.2-基於Red Hat系統工具包存在兩種方式之一:RPM包

點擊返回 自學Linux命令行與Shell腳本之路html

9.2-基於Red Hat系統工具包存在兩種方式之一:RPM包

本節主要介紹基於Red Had的系統(測試系統centos)node

1. 工具包存在兩種方式:RPM包與源碼包

1.1.RPM包與源碼包區別
安裝以前的區別:概念上的區別
  •    源碼包是開源的,比RPM包安裝更自由,可是它安裝更慢,更容易報錯;
  •    RPM包是通過編譯的,不能看到源代碼,可是它安裝更快,報錯更容易解決,只有依賴性問題。
            缺點:安裝的環境必須與編譯時的環境一致或者至關;包與包之間存在着相互依賴的狀況;卸載包時須要先把依賴的包卸載掉,若是依賴的包是系統所必須的,那就不能卸載這個包,不然會形成系統崩潰。
安裝以後的區別:安裝位置不一樣
  • RPM包不須要指定安裝位置,它會安裝到系統默認位置;
  • 源碼包是人爲手工設置的
1.2.安裝位置
  RPM包是按照在默認位置中
  RPM包默認安裝路徑
  • /etc/ 配置文件安裝目錄
  • /usr/bin/ 可執行的命令安裝目錄
  • /usr/lib/ 程序所使用的函數庫保存位置
  • /usr/share/doc/ 基本的軟件使用手冊保存位置
  • /usr/share/man/ 幫助文件保存位置
    源碼包安裝位置
  • .安裝在指定位置當中,通常是/usr/local/軟件名/

1.3 安裝位置不一樣帶來的影響web

.RPM包安裝的服務可使用系統服務管理命令(service)來管理,例如RPM包安裝的apache的啓動方法是:
  • /etc/rc.d/init.d/httpd start
  • service httpd start
.而源碼包安裝的服務則不能被服務管理命令管理,由於沒有安裝到默認路徑中。因此只能用絕對路徑進行服務的管理,如:
  • /usr/local/apache2/bin/apachectl start

2. RPM包

若是你的光驅中還有系統安裝盤的話,你能夠經過」mount  /dev/cdrom  /mnt」命令把光驅掛載到/mnt目錄下,那麼你會在/mnt/Packages目錄下看到不少.rpm的文件,這就是RPM包。數據庫

2.1  rpm包的組成apache

name-version-release.arch.rpmcentos

  •       name:表示包的名稱,包括主包名和分包名
  •       version:表示包的版本信息
  •       release:用於標識rpm包自己的發行號,可還包含適應的操做系統
  •       arch:表示主機平臺,noarch表示此包能安裝到任意平臺上面

yum-utils-1.1.31-45.el7.noarch.rpm網絡

  •   yum是這個包的主包名,utils是這個包的分包名;
  •   1.1.31是表示版本信息,1爲主版本,1爲此版本,31爲修訂號;
  •   45.el7中的45是表示發行號,el7表示是RHEL7
  •   noarch是表示包適合任何平臺

zziplib-0.13.62-5.el7.x86_64.rpm函數

  •   zziplib是這個包的主包名;
  •   0.13.62是表示版本信息,0爲主版本,13爲此版本,62爲修訂號;
  •   5.el7中的5是表示發行號,el7表示是RHEL7
  •   x86_64是表示爲64位的平臺

2.2 RPM包管理的用途工具

  • 能夠安裝、刪除、升級和管理軟件;固然也支持在線安裝和升級軟件; 
  • 經過RPM包管理能知道軟件包包含哪些文件,也能知道系統中的某個文件屬於哪一個軟件包; 
  • 能夠在查詢系統中的軟件包是否安裝以及其版本; 
  • 做爲開發者能夠把本身的程序打包爲RPM 包發佈; 
  • 軟件包簽名GPG和MD5的導入、驗證和簽名發佈 
  • 依賴性的檢查,查看是否有軟件包因爲不兼容而擾亂了系統;

2.3 RPM 的使用權限測試

  • RPM軟件的安裝、刪除、更新只有root權限才能使用
  • 對於查詢功能任何用戶均可以操做
  • 若是普通用戶擁有安裝目錄的權限,也能夠進行安裝

2.4 RPM命令管理

  參數 參數解釋 舉例
安裝命令 -i 安裝  
-v|-vv|-vvv 顯示詳細信息  
-h 以#顯示安裝進度一個#2表示%的進度  
--nodeps 忽略依賴關係  
--test 測試安裝  
--replacepkgs 從新安裝(以前安裝包已經安裝了)  
升級命令 -U  -Uvh 升級+安裝  
-F   -Fvh 升級(以前已經安裝包了)  
--force 有衝突強制升級  
--nodeps 忽略包依賴性關係  
卸載命令 -e 卸載 rpm  -e  包名
--nodeps 忽略包依賴性關係  
查詢命令         -q  |--query   rpm -q|--query  包名
-qa 查看全部已經安裝的包

rpm -qa  查看全部包名
rpm -qa |  grep 包名查看某個包名

-qi 查看包的摘要信息  
-qf 查看文件是有那個包安裝的 rpm  -qf  /path/to/file
-ql 查看包安裝生成的文件清單  
-qc 查看包安裝生成的配置文件  
-qd 查看包安裝生成的幫助文檔  
-q  --scripts 查看相關的腳本 rpm -q--script   包名
-qp[i|l|d|c] 查看還沒有安裝包的詳細信息 rpm -qpi /path/to/rpm_file
校驗 -V   rpm -V   包名
數據庫管理 --initdb 新建 rpm  --initdb
--rebuilddb 重建 rpm  --rebuilddb

2.5 RPM的安裝

rpm -ivh package_name01         #安裝package_name01,並顯示詳細安裝信息及安裝進度

rpm -ivh package_name01 package_name02     #同時安裝兩個package_name01 package_name02 ,並顯示詳細安裝信息及安裝進度

rpm -ivh http://websites.name/path/pkgname.rpm       #直接由網絡上面的某個文件安裝,以網址安裝

2.6 RPM包安裝的依賴性問題

 依賴性問題舉例:

rpm -qa | grep dhcp  # 查詢是否訊在DHCP包

[root@localhost Packages]# rpm -e dhcp-common    # 刪除dhcp包報錯
error: Failed dependencies:
	dhcp-common = 12:4.2.5-68.el7.centos is needed by (installed) dhclient-12:4.2.5-68.el7.centos.x86_64
[root@localhost Packages]# rpm -e dhcp-common --force   #刪除時不能使用強制--force
rpm: only installation and upgrading may be forced
[root@localhost Packages]# rpm -e dhcp-common --nodeps #刪除時使用忽略強制 --nodeps
[root@localhost Packages]# rpm -e dhcp-libs --nodeps
[root@localhost Packages]# rpm -qa | grep dhcp       # 刪除後查詢不到dhcp包
[root@localhost Packages]#  

[root@localhost Packages]# rpm -ivh dhcp-common-4.2.5-68.el7.centos.x86_64.rpm 
warning: dhcp-common-4.2.5-68.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
error: Failed dependencies:
	dhcp-libs(x86-64) = 12:4.2.5-68.el7.centos is needed by dhcp-common-12:4.2.5-68.el7.centos.x86_64

# 若是先安裝dhcp-common,依賴於dhcp-libs,因此要先安裝dhcp-libs 

 

[root@localhost Packages]# rpm -ivh dhcp-libs-4.2.5-68.el7.centos.x86_64.rpm 
warning: dhcp-libs-4.2.5-68.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:dhcp-libs-12:4.2.5-68.el7.centos ################################# [100%]
[root@localhost Packages]# rpm -ivh dhcp-libs-4.2.5-68.el7.centos.x86_64.rpm
warning: dhcp-libs-4.2.5-68.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
	package dhcp-libs-12:4.2.5-68.el7.centos.x86_64 is already installed
[root@localhost Packages]# rpm -ivh dhcp-common-4.2.5-68.el7.centos.x86_64.rpm 
warning: dhcp-common-4.2.5-68.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:dhcp-common-12:4.2.5-68.el7.cento################################# [100%]
[root@localhost Packages]# 

3. RPM屬性依賴的解決方式: YUM在線升級

Linux系統維護中令管理員很頭疼的就是軟件包之間的依賴性了,每每是你要安裝A軟件,可是編譯的時候告訴你X軟件安裝以前須要B軟件,而當你安裝Y軟件的時候,又告訴你須要Z庫了,好不容易安裝好Z庫,發現版本還有問題等。

因爲歷史緣由,RPM軟件包管理系統對軟件之間的依存關係沒有內部定義,形成安裝RPM軟件時常常出現使人沒法理解的軟件依賴問題。其實開源社區早就對這個問題嘗試進行解決了,不一樣的發行版推出了各自的工具,好比Yellow Dog的YUM,Debian的APT等。開發這些工具的目的都是爲了要解決安裝RPM時的依賴性問題,而不是額外再創建一套安裝模式。這些軟件也被開源軟件愛好者們逐漸移植到別的發行版上。目前,APT和YUM均可以運行在Red Hat系統上。目前yum是Red Hat/Fedora系統上默認安裝的更新系統。

........

相關文章
相關標籤/搜索