Linux筆記--RPM、SRPM與YUM方式安裝軟件

1. RPM

RPM就是廠商先在他們的系統上編譯好了用戶所需要的軟件,打包成RPM安裝包,然后將安裝包直接發布給用戶去安裝。
RPM優點:

  1. RPM內含已經編譯過的程序與設置文件等數據,可以讓用戶免去重新編譯的困擾;
  2. RPM在被安裝之前,會先檢查系統的硬盤容量、操作系統版本等,避免文件被錯誤安裝;
  3. RPM提供軟件版本信息、依賴屬性軟件名稱、軟件用途說明、軟件所含文件等信息;
  4. RPM管理的方式使用數據庫記錄RPM文件的相關參數,便于升級、刪除、查詢與驗證。
  • RPM安裝
rpm -ivh a.i386.rpm
rpm -ivh http://website.name/path/pkgname.rpm
// 安裝之前可以使用test選項來測試一下該軟件是否可以被安裝
rpm -ivh pkgname.i386.rpm --test
// 指定安裝目錄,默認為/usr/local
rpm -ivh pkgname.i386.rpm --prefix=/usr/local/software
  • RPM升級
rpm -Fvh pkgname.i386.rpm
  • RPM查詢
// 查詢是否有安裝nginx軟件
rpm -q nginx
// 列出nginx軟件安裝后的所有目錄與文件
rpm -ql nginx
// 列出nginx軟件的相關說明數據,包含開發商、版本與說明等
rpm -qi nginx
// 分別找出nginx的設置文件與幫助文件
rpm -qc nginx
rpm -qd nginx
// 列出安裝nginx所需的依賴軟件
rpm -qR nginx
// 找出文件屬于哪個已安裝的軟件
rpm -qf /bin/sh

上面是查已安裝到系統上面的軟件信息,這部分信息由/var/lib/rpm提供;如果我們要查未安裝的rpm文件內容,就得使用rpm -qp (p是package的意思):

// 找出安裝軟件的依賴文件
rpm -qpR filename.i386.rpm

在查詢本機上面的RPM軟件相關信息時,不需要加版本名。因為它會由/var/lib/rpm數據庫去查詢。但是查某個未安裝的RPM文件,就需要指定整個文件名。

  • 卸載RPM
// 如果存在已安裝的軟件依賴本軟件,則卸載不會成功
rpm -e pam
  • 重建rpm數據庫
    由于文件經常會安裝/刪除/升級,某些操作可能會導致RPM數據庫/var/lib/rpm內的文件損壞。我們可以使用--rebuilddb重建
rpm --rebuilddb

2. SRPM

通常不同的distribution所發布的RPM文件并不能在其他的distribution上用。如果我們真的需要安裝其他distribution提供的好用的RPM軟件怎么辦?還好,還有SRPM,這個SRPM所提供的軟件內容并沒有經過編譯,它提供的是源碼。
  通常一個軟件在發布的時候,會同時釋出RPM于SRPM。RPM必須在相同的環境下才能安裝,而SRPM既然是源碼,自然就可以通過修改SRPM內的參數設置文件,然后重新編譯成能合適我們Linux環境的RPM文件。
  為何說CentOS是“社區維護的企業版”呢?因為Red Hat公司的RHEL發布后,連帶會將SRPM發布。一些社區的朋友就將這些SPRM收集起來并重新編譯成所需要的軟件,再重新發布成CentOS,真要感謝SRPM啊。

假設我們下載了一個SRPM文件,又不想修改這個文件內的源碼與相關設置值,利用rpmbuild直接生產RPM包來安裝

rpmbuild --rebuild filename.i386.src.rpm

3. YUM在線升級機制

RPM軟件會有所謂的文件依賴問題。要是我們將這些依賴軟件先列表,在有要安裝軟件需求的時候先到這個列表去找,同時與系統內已安裝的軟件相比較,沒有安裝的依賴軟件就一口氣安裝起來,那不就解決依賴問題了嗎?這就是YUM機制。
  由于distribution必須先要釋出軟件,然后將軟件放置于yun服務器上,以提供客戶端來要求安裝與升級之用的。因此我們要使用yum的功能,必須要先找到合適的yun server才行。

  • YUM操作
// 查詢以pam開頭的軟件有哪些
yum list pam*
// 安裝
yum install pam-devel
// 升級
yum update pam-devel
// 刪除
yum remove pam-devel
  • YUM設置文件
    vi /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容