-
寫在前面
-
常見的計算機硬件平臺大致可以為分:x86、x86_64、amd64、ppc、arm、aarch64。軟件平臺,在Linux界則是指不同的Linux發行版。
-
Linux系統中的軟件(非源碼)由于都是在不同的硬件+軟件平臺開發編譯完成之后發布的,因此同一個軟件會區分硬件和軟件環境而有不同的軟件包。在安裝軟件時應該選擇與自己的硬件和軟件平臺一致的軟件包進行安裝。通常在軟件包的名稱中即可見到所針對的硬件、軟件平臺的描述。如
openssh-6.6.1p1-22.el7.x86_64
,則是針對x86_64位硬件下的rhel系的軟件包。 -
Linux系統中的軟件,很多軟件彼此之間有依賴關系,其實Windows下的軟件也是如此,因此在安裝某軟件時,被它所依賴的軟件需要先行安裝,在卸載時也需要同樣小心軟件間的依賴關系,避免盲目卸載而對其它軟件造成損壞。
-
Linux系統中的軟件安裝及管理方式在不同的Linux發行版中的方式是不一樣的。目前比較主流的方式按照發行版的不同可以分為兩類:
-
dpkg
這種方式主要適用于Debian系的Linux發行版使用,包括B2D和Ubuntu都使用這種方式。dpkg這種方式所使用的操作指令為dpkg
。 -
rpm
這種方式是由著名的Linux發行廠商Red Hat開發出來的,后來被很多Linux發行版所采用,如Fedora,CentOS,SuSE等。rpm這種方式所使用的操作指令為rpm
。這兩種方式的共同點就是,其所使用的軟件包是已經經過編譯的了,不需要我們手動在去進行編譯操作。
-
軟件間的依賴關系
在這些已經編譯好的軟件包中包含了記錄依賴關系等信息。當我們在Linux系統中安裝這些軟件包時,RPM程序會根據這一信息去查找系統中是否已安裝相應軟件,如果發現依賴軟件沒有安裝,安裝會失敗,也可以使用特定安裝選項--nodeps
忽略依賴關系,然后將軟件包安裝上去,但非常不建議這么使用,除非明確知道所忽略的內容,對軟件的使用毫無影響。
上文提到了RPM包會查找系統已安裝了哪些RPM包的軟件,這一查找過程依賴于RPM數據庫,在CentOS系統中這一數據庫位于/var/lib/rpm
目錄中,它非常重要,記錄了系統上所有通過rpm方式安裝的軟件包信息。在對系統已安裝的rpm軟件進行安裝、升級、查詢、卸載操作時都依賴于這個數據庫。
大致總結一下,使用rpm包安裝軟件,需要注意以下兩點: -
安裝軟件包的環境需要與該軟件包編譯時的環境一致。
-
需要解決好軟件包的依賴關系。
-
SRPM包與RPM包
-
RPM包是指已經針對特定硬件和軟件平臺進行了編譯的包,可以拿到與之匹配的環境中直接進行安裝。其文件名一般形如:
openssh-6.6.1p1-22.el7.x86_64
。 -
SRPM包實際提供的是軟件源碼,包含configure和makefile,但它也同時包含了RPM軟件包所能夠提供的,如依賴關系說明以及所有RPM包能夠提供的信息。要通過這種包來安軟件,首先需要利用rpm工具進行按需編譯成最終的RPM包以后,然后使用RPM工具將軟件安裝到系統中。其文件名一般形如:
openssh-6.4p1-8.el7.src.rpm
,名稱中有src字樣。
RPM工具的使用
再嘮叨一次RPM工具的作用:可以用來對rpm軟件包進行安裝、升級、卸載、查詢和檢驗,以及RPM數據庫的維護。以下逐個講解其常用的用法。
-
安裝
指令:rpm {-i|--install} [install-options] PACKAGE_FILE ...
指令選項含義說明:-i
或者--install
表示安裝后面跟的rpm軟件包,但如果只使用-i
選項無法看到安裝的過程及安裝進程,要顯示安裝過程及進度將-v
和-h
選項一起使用。install-options
常用的有:--test
測試這一rpm包是否可以被安裝到系統中,而不會執行真正的安裝操作。--replacepkgs
對已經安裝過的軟件進行重新安裝,修改過的配置文件不會被覆蓋。--nosignature
在安裝過程中不進行包簽名信息和來源合法性驗證。--nodigest
在安裝過程中不檢查包的完整性。
示例:rpm -ivh openssh-server-6.6.1p1-22.el7.x86_64
不常用的install-options
選項:--justdb
由于RPM數據庫產生錯誤或者損壞而查詢不到已安裝的RPM軟件包信息時,可以使用這一選項來更新其在RPM數據庫中的信息。--prefix
后面跟上某一路徑,可以將這一RPM軟件包安裝到這個路徑中。--nodeps
忽略軟件包之間的依賴關系。--force
強制安裝,它會忽略依賴關系,以及文件的沖突情況。PACKAGE_FILE
指的是RPM軟件包的完整名稱及URL,軟件包即在當前目錄時直接使用RPM包名稱即可??梢酝瑫r指定多個RPM包,即同時安裝這些RPM包。 -
升級
指令:rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
或者rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
指令選項含義說明:-U
當系統中沒有老版本時會安裝后面的RPM包,有則進行升級。-F
只有系統中有老版本時才會執行安裝操作。--force
強制升級,不常用。--oldpackages
進行降級操作。
注意: -
不要對Linux內核進行升級操作,Linux支持多內核共存,直接安裝新版的內核即可。
-
如果某軟件包安裝以后其配置文件被修改過,升級時新版本的軟件包不會覆蓋原配置文件,會將新的配置文件以FILENAME.rpmnew的方式提供。
-
卸載
指令:rpm {-e|--erase} [--allmatches] [--nodeps] [--test] PACKAGE_NAME ...
指令選項含義說明:-e
表示卸載后面所跟的RPM包名,而非RPM包文件名,。--allmatches
表示卸載所有匹配指定名稱軟件的所有版本。--nodeps
表示不卸載與此軟件有依賴關系的軟件。--test
表示模擬一次卸載的過程而不真正執行卸載操作。
卸載操作需要注意,對于存在依賴關系的軟件進行卸載時,要從上往下卸載,不要直接將被依賴的軟件包先卸載。 -
查詢
指令:rpm {-q|--query} [select-options] [query-options]
指令選項含義說明:-q
單獨使用表示查詢后面所跟軟件包是否安裝,常結合select-options或query-options一起使用。
常用的select-options:-a
查詢系統中所有已安裝的RPM軟件包名稱。-f
查詢后面所跟的文件是由哪個軟件安裝后產生。-p
對沒有安裝到系統中的RPM軟件包內的信息進行查詢。--whatprovides CAPABILITY
查詢指定的CAPABILITY是由哪個程序提供。--whatrequires CAPABILTY
查詢指定的CAPABILTY被哪個包所依賴。
常用的query-options:--changelog
查詢所指定的RPM包中所包含的chagelog文件的內容。-c
列出所指定的RPM包提供的配置文件。-d
列出所指定的RPM包提供的man手冊及share文檔。-i
列出所指定的RPM包的詳細說明信息:版本,支持的架構,開發商、發布時間,安裝時間和說明等。-l
列出所指定的RPM包安裝后生成的所有文件和目錄。--provides
列出指定的RPM包所能夠提供的CAPABILTY,安裝或者沒有安裝都可。-R
列出指定RPM包的依賴關系。--scripts
查詢指定的程序包自帶腳本的內容。 -
校驗
指令:rpm {-V|--verify} [select-options] [verify-options]
常用選項及含義:-V
后面跟上軟件名稱,如果該軟件所包含的文件被更改過,才會被列出來。-Va
列出系統上所有可能被更改過的軟件相關文件。-Vp
后面跟RPM包的名稱,查詢這個包中可能被更改過的文件 。-Vf
查詢某軟件相關文件是否被更改過。
對于驗證軟件包的來源合法性,需要借助數字簽名實現。使用rpm-import
指令在系統中導入RPM包制作者的公鑰,然后可以使用rpm -k PACKAGE_FILE
進行驗證,或者在安裝時rpm工具默認會自動進行驗證。 -
RPM數據庫重建
指令:rpm {--initdb|--rebuilddb}
當RPM數據庫出現損壞時,可以使用--rebuilddb
選項將數據庫重建;如果這個數據庫不存在,可以使用--initdb
重新創建一個數據庫。
注意:
RPM包文件名
-
當包文件位于當前執行指令的目錄時,直接使用包名,如
rpm -ivh a2ps-4.14-23.el7.i686.rpm
-
當包文件位于其它路徑,然后跟上包文件名,如
rpm -ivh /media/cdrom/Packages/a2ps-4.14-23.el7.i686.rpm
。 -
當包文件 位于網絡位置時,可以寫:
rpm -ivh http://web.site.name/path/a2ps-4.14-23.el7.i686.rpm
RPM工具小結
-
優點
-
一般不用手動人工編譯,安裝難度低于源碼安裝方式。
-
安裝之前會進行相關屬性,如硬盤容量、系統版本等檢查,避免軟件被錯誤安裝。
-
采用RPM數據庫記錄系統所有已安裝軟件的信息,方便軟件包的管理。
-
不足
-
不能夠自動解決軟件包之間的依賴關系,對于依賴關系復雜的軟件,其安裝過程還是較繁瑣。
為了解決這一不足,yum工具誕生了,yum工具的介紹及使用見下篇。
原創文章,作者:N24_lantian,如若轉載,請注明出處:http://www.www58058.com/64915