我們都知道,Windows的程序無法直接在Linux中運行,Windows中大量的木馬和病毒也無法被Linux識別,這樣加強了Linux的安全性,但所有的軟件包都必須針對Linux再做單獨的開發。
軟件包分類
源碼包 (把源代碼直接開放的包)
腳本安裝包(源碼包寫一個安裝界面,不需要手動安裝)
二進制包(RPM包、系統默認包)
源碼包的優點:
1.開源,如果有足夠的能力,可以修改源代碼
2.可以自由選擇所需的功能
3.軟件是編譯安裝,所以更加適合自己的系統,更加的穩定也效率更高
4.卸載方便
缺點:
1.安裝步驟較多,尤其在安裝較大的軟件集合時(如LAMP環境搭建),容易出現拼寫錯誤
2.編譯過程時間過長,安裝比二進制安裝時間長
3.因為是編譯安裝,安裝過程中一旦報錯新手很難解決。
二進制包的優點:
1.包管理系統簡單,只通過幾個命令就可以實現包的安裝、升級、查詢和卸載
2.安裝速度比源碼包安裝快的多
缺點:
1.經過編譯,不再可以看到源代碼
2.功能選擇不如源碼包靈活
3.依賴性(當安裝一個軟件包須先安裝另一個軟件包)
RPM:紅帽子包管理器(RedHat Package Manager)
rpm包管理方法
rpm命令管理
yum在線管理
rpm包命名規則
所有的rpm包都在光盤裡,在Packages目錄
httpd-2.2.15-15.el6.x86_64.rpm
httpd 2.2.15 1 5 el6. x86_64. rpm
軟件包名 軟件版本 軟件發布的次數 適合的Linux平台 適合的硬件平台 rmp 擴展名
需要注意的是包名和包全名是有區別的
包全名:操作的包是沒有安裝的軟件包時,使用包全名。而且要注意安裝路徑。(如安裝,升級)
包名:操作已經安裝的軟件包時,使用包名。是搜索/var/lib/rpm中的數據庫。(如查詢,卸載)
RPM包依賴性
樹形依賴:a——b——c
安裝時只能先安裝c,再安裝b,最後安裝a,卸載時卸載c,再卸載b,再卸載a
環形依賴:a——b——c——a
用一條命令把abc同時安裝
模塊依賴:模塊依賴查詢網站(www.rpmfind.net)
只要是.so.2的都為庫依賴包,不是獨立的包,是某一個軟件包的軟件,我們只要把軟件所在的包安裝上,也就自動安裝上了,依賴性就會被解決。把需要的依賴包進行查詢,如圖中的是libodcinst.so.2,進去查詢。
yum在線管理(解決依賴性)
實現准備一個包含所有rpm包的網站,作為我的在線服務器源,我們只要用在線命令去安裝軟件,不管我去依賴任何哪一個包,都不需要用用戶解決,yum會自動去服務器下載需要的包,然後所有的依賴性都自己解決。
是不是非要上網?不是,除了可以拿網絡yum源作為服務器,還可以拿本地光盤作為yum源,因為光盤裡包含了所有的rpm包。但是是需要收費的。
RPM常用命令
RPM 安裝
rpm 【選項】 包全名 (一定是包全名,而且是絕對路徑或者去/mnt/cdrom/Packages)
-i (install) 安裝
-v (verbose) 顯示詳細信息
-h (hash) 顯示進度
--nodeps 不檢測依賴性 (雖然有這個選項,但根據上面的理論,你覺得會用它嗎?)
當然,事項都是先將光盤掛載上的。
隨機測試了個,沒有出現依賴包問題,若提示出現的依賴包,就一層一層的安裝。
RPM包的升級
-U (upgrade) 升級
rpm -Uvh 包全名
需要有個比當前系統的包更高級的包,我們現在用的都是光盤中的包,沒有更高級的包。
RPM 卸載
-e (erase)卸載
--nodeps 不檢查依賴性
rpm -e 包名 (包名,因為是已經裝過的包,在後台數據庫搜索)
RPM的查詢方式
安裝和卸載用yum方法更為簡單,因為它會自動解決依賴性,但是查詢只能通過rpm命令來查詢。yum有查詢,但是沒有rpm查詢的多。
rpm -q 包名 查詢包是否安裝
-q (query)查詢
-a(all) 所有
-l (list) 列表
rpm -qa 【包名】 查詢所有已經安裝過的RPM包
rpm -ql 【包名】 查詢包中文件的安裝位置
-p (package) 查詢未安裝包信息
有人看到這裡就開始郁悶了,包都沒安裝,怎麼查看安裝位置啊。其實linux包安裝位置是組建包的時候就決定好的,即使沒安裝,我們也可以查看它打算裝哪
查詢系統文件屬於哪個RPM包
rpm -qf 系統文件文件名
-f (file)查詢系統文件屬於哪個軟件包
必須是通過包裝出來的,才能反向追查
查詢軟件包的依賴性
rpm -qR 包名
-R (requires) 查詢軟件包的依賴性
安裝appach需要裝這麼多這麼多包。。。查詢已經安裝過的包的依賴性沒有什麼意義,主要還是查詢為安裝包的依賴性。