通常的linux軟件格式包括:node
源碼包:linux
linux剛開始的時候,軟件都是這種形式。如今有不少的開源軟件依然採用這種格式,好比Apache安裝包httpd-2.2.9.tar.gz
就是一個源碼包。apache
源碼包具備提供修改源碼,自由選擇所需功能,編譯安裝更加適合本身系統,更穩定高效的特色。固然在linux,若是想卸載源碼包安裝的軟件,只須要刪除它所在的目錄就行。vim
可是在安裝一些大型軟件集合時,容易出現編譯錯誤。而且因爲須要編譯的過程,因此安裝時間較長。安全
二進制包:服務器
通過編譯後的代碼包。網絡
它具備安裝、查詢、更新、卸載等操做簡單快速等特色。函數
也所以喪失了查看源代碼的能力,而且在定製功能方面不如源碼包。網站
rpm包每每不是獨立的,一個rpm包可能與另一個或者多個rpm包依賴。也就是說,在沒有安裝另外的rpm包以前,這個rpm包是沒法安裝或者沒法正常運行,這稱爲依賴。url
依賴分爲:
對於樹形依賴,是比較好解決的,咱們只須要按照依賴順序,先安裝c,再安裝b,再安裝a就行。可是對於環形依賴,從邏輯上看咱們是沒有辦法解決,但只要咱們將a,b,c這三個rpm包寫在一條安裝命令中即可以解決。
模塊依賴通常是在安裝某個rpm時,系統提示如libodbcinst.so.2 is needed by ...
,這時候咱們只有知道libodbcinst.so.2
庫函數所在的rpm包,並安裝該rpm包後,才能繼續安裝。RedHat給咱們提供了一個網站,www.rpmfind.net,經過這個網站輸入庫函數的名稱,便能查詢出所在的rpm包。
對於rpm包的獲取,咱們能夠在linux的安裝光盤的packages文件夾中找到rpm包,也多是在網絡上下載到一個rpm包。
安裝前須要申明的是,對於包含版本號等信息的包名,咱們稱之爲包全名,如httpd-2.2.9.tar.gz
.對於沒有版本號,只有軟件名稱的,咱們稱之爲包名,如httpd
。
安裝命令:
rpm -ivh 包全名
選項:
安裝命令:
rpm -Uvh 全包名
選項:
卸載軟件:
rpm -e 包名
選項:
若是你實操過用rpm -ivh httpd-2.2.9.tar.gz
安裝apache,你會以爲安裝軟件是一件特別頭疼的事,由於各類依賴須要咱們去解決。所以RatHat爲咱們提供了yum在線安裝的方法(後續會講到,而且咱們平時可能更願意去使用yum在線安裝),可是yum安裝軟件通常只用來安裝、升級和卸載,對於RPM包的查詢主要仍是依賴於rpm命令,所以這部份內容仍是比較關鍵的。
查詢包是否安裝:
rpm -q 包名
查詢全部安裝的包(很是經常使用):
rpm -qa 包名
,rpm -qa | grep 包名
等同於rpm -q 包名
查詢軟件包的安裝位置(經常使用):
rpm -ql 包名
查詢已安裝包的位置 或者 rpm -qlp 包全名
查詢未安裝包安裝後的位置
通常的RPM包默認安裝路徑
路徑 | 存放信息 |
---|---|
/etc/ | 配置文件安裝目錄 |
/urs/bin | 可執行的命令安裝目錄 |
/usr/lib | 程序所使用的函數庫保存位置 |
/usr/share/doc/ | 基本的軟件使用手冊保存位置 |
/usr/share/man | 幫助文件保存位置 |
查詢系統文件屬於哪一個RPM包:
rpm -qf 系統文件名
查詢軟件包的依賴性:
rpm -qR 包名
查看已安裝的包的依賴關係 或者 rpm -qRp 包全名
查詢未安裝的包的依賴關係,由於它的命令中會出現好多基礎或者已經安裝過的rpm包很難分辨,所以不太經常使用。
查詢軟件包的詳細信息:
rpm -qi 包名
查看已安裝的包信息 或者 rpm -qip 包全名
查詢未安裝的包信息
rpm -V 已安裝的包名
選項:
用於文件完整性的檢驗。檢測已安裝文件和包安裝後的初始文件是否有變更,或者未安裝的包是否爲指定md5碼的包文件。
驗證內容中的8個信息的具體內容以下:
如:5....T.
5表示MD5改變,T表示修改時間改變
文件類型
如:5....T. c
c表示修改的這個文件是一個配置文件
若是不當心刪除了系統中某個軟件的信息,一般咱們會從別的地方拷貝一份到咱們的電腦上。固然它可選的有不少個途徑,其中之一就是咱們經過它的安裝rpm包中獲取該文件,並拷貝。
rpm2cpio
cpio -idv
如:rpm2cpio /media/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv /usr/bin/ls
爲了解決rpm的超強依賴性帶來的安裝麻煩,RedHat爲咱們提供了yum在線安裝,固然其餘Linux系統也提供了其餘命令。RadHat用本身的服務器搭建了包資源庫,並經過yum命令讓咱們不用關心依賴,自動解決依賴性安裝一些軟件。
通俗的講,經過yum安裝時,yum源在什麼地方?
一般在/etc/yum.repos.d/CentOS-Base.repo
中
第一步:將原有的yum複製一份,好比cp CentOS-Base.repo CentOS-Base.repo.bak
第二步:修改CentOS-Base.repo文件中的baseurl爲file:///media/...
,表示你光盤的掛載點
查詢指定包名的包列表:
yum search 包名
查詢yum源中全部能夠安裝的包列表:
yum list
,yum list | grep 包名
至關於yum search
安裝,自動回答yes:
yum -y install 包名
在安裝過程當中,會不斷詢問是否要安裝某個rpm包,-y
表示
全部都選yes
升級,自動回答yes:
yum -y update 包名
,請勿在不使用包名的狀況下使用該命令
卸載(就當這裏沒有講這個命令,工做中千萬別使用這個命令):
yum -y remove 包名
,服務器使用最小化安裝,儘可能不要卸載。由於卸載的依賴包可能會被系統依賴。
列出全部可用的軟件組:
yum grouplist
安裝指定軟件組:
yum groupinstall 軟件組名
卸載軟件組名:
yum groupremove 軟件組名
咱們在第一部分就已經講過二進制包和RPM包的區別,對於這些區別就再也不贅述。下面再說一個區別:源碼包和RPM包安裝後的安裝位置不一樣。
一般咱們安裝rpm包的時候,不會去指定它的安裝位置,安裝結束後的位置通常在通常的RPM包默認安裝路徑表格中給出的位置(該位置由軟件開發者設定,不全是如此)。
而對於源碼包的安裝,必定要手工指定,通常能夠放在/urs/local/軟件名/
下。
這就致使了:
rpm -e
命令卸載,而源碼包只要刪除安裝目錄便可。在平時的使用過程當中,咱們應該注意區分。
安裝前的準備
全部的源碼包都使用c語言編寫,所以在安裝源碼包以前咱們須要檢測系統中是否有c語言環境,輸入rpm -qa | grep gcc
即可查看。
若是沒有安裝gcc,使用yum在線安裝一個gcc(不要去gcc官網下載源碼包安裝,由於gcc的源碼包也是須要c語言環境)。
下載源碼包
通常的源碼包以.tar.gz
結尾,這裏就不介紹下載源碼包了。
解壓縮源碼包
通常建議,源碼包保存在:/usr/local/src/
,軟件安裝在:/usr/local/
在適當的目錄(你以爲合適就行),使用命令tar -zxvf 源碼包全名
解壓縮源碼包。
進入解壓縮目錄
使用cd命令進入到源碼包解壓縮以後的目錄中,這步是必須作。
進入目錄後,咱們甚至可使用vim INSTALL
來查看軟件須要的安裝步驟
執行./configure
完成軟件配置與檢查
該命令能夠設置安裝參數,檢測安裝環境是否具有等,而且他能把一些信息寫入到Makefile文件中。你可使用./configure --help
來查看有哪些配置項
咱們使用./configure --prefix=/usr/local/軟件名
指定安裝路徑,其餘選項能夠經過幫助查看。若是沒有出現error、warning、no提示,則表示成功。
執行make
命令編譯軟件
使用make
編譯軟件,在過程當中若是出現錯誤,可使用make clean
清理以前的make文件,從新make
.
執行make install
安裝軟件
輸入make install
後,等待一段時間,沒有報錯並順利中止則表示安裝成功。
軟件的啓動
啓動文件通常在安裝目錄的bin/
目錄下,切換到bin/
目錄下後使用./啓動程序 start
即可以啓動。
至此,源碼包就安裝完成了。
值得注意的是,.tar.gz
是一種打包壓縮格式,並不是以該後綴名下載的軟件包都是源碼包,有的是已經安裝好的二進制包,解壓後即可以使用。其最根本的區別是源碼包包含src/
目錄和configure
文件,二進制包通常包含bin/
目錄