天天看點

Linux系統軟體包安裝

示例:

開源,如果有足夠的能力,可以修改源代碼

可以自由選擇所需的功能

軟體是編譯安裝,是以更加适合自己的系統,更加穩定也效率更高

解除安裝友善

安裝過程步驟較多,尤其安裝較大的軟體集合時(如LAMP環境搭建),容易出現拼寫錯誤

編譯過程時間較長,安裝比二進制安裝時間長

因為是編譯安裝,安裝過程中一旦報錯新手很難解決

DPKG包:是由Debian Linux所開發出來的包管理機制,通過DPKG包,Debian Linux就可以進行軟體包管理。主要應用在Debian和unbuntu中

RPM包:是由Red Hat公司所開發的包管理系統;功能強大,安裝、更新、查詢和解除安裝都非常簡單和友善。目前很多Linux都在使用這種包管理方式,包括Fedora、CentOS、SuSE等。

包管理系統簡單,隻通過幾個指令就可以實作包的安裝、更新、查詢和解除安裝

安裝速度比源碼包安裝快的多

經過編譯,不再可以看到源代碼

功能選擇不如源碼包靈活

依賴性。

軟體包a------------->軟體包b-------------->軟體包c

樹形依賴 a--------->b--------->c

環形依賴 a--------->b--------->c--------->a

函數庫依賴

<code>httpd-2.2.15-15.el6.centos.1.i686.rpm</code>

httpd

軟體包名

2.2.15

軟體版本

15

軟體釋出的次數

el6

軟體發行商。el6是Redhat公司釋出,适合RHEL6.x(RedHat Enterprise Linux)和CentOS6.x下使用

i686

适合的硬體平台。RPM包可以在不同的硬體平台安裝,選擇适合不同CPU的軟體版本,可以最大化的發揮CPU性能,是以出現了所謂的i386(386以上計算機都可以安裝)、i586(586以上的計算機都可以安裝)、i686(奔騰II以上計算機都可以安裝,目前所有的CPU都是奔騰II以上,是以這個軟體版本居多)、x86_64(64位CPU可以安裝)和noarch(沒有硬體限制)等檔案名。

rpm

rpm包的擴充名。Linux下檔案不是靠擴充名區分檔案類型,也就是Linux中擴充名沒有任何含義。如果RPM包不用“.rpm”作為擴充名,系統可以正确識别沒有問題,可是管理者很難識别這個是什麼樣的軟體。

包全名:如果操作的是未安裝軟體包,則使用包全名,而且需要注意絕對路徑

包名:如果操作的是已經安裝的軟體包,則使用包名即可,系統會生産RPM包的資料庫(/var/lib/rpm/),而且可以在任意路徑下操作

RPM包預設安裝路徑

釋義

/etc/

配置檔案安裝目錄

/usr/bin/

可執行的指令安裝目錄

/usr/lib

程式所使用的的函數庫儲存位置

/usr/share/doc

基本的軟體使用手冊儲存位置

/usr/share/man

幫助檔案儲存位置

安裝指令

--nodeps 不檢測依賴性安裝。軟體安裝時會檢測依賴性,确定所需的底層軟體是否安裝;如果沒有安裝則會報錯;如果不管依賴性,想強行安裝,可以使用這個選項。

--replacefiles 替換檔案安裝。如果安裝軟體包,可是包中部分檔案已經存在,那麼正常安裝時候,會報錯“某個檔案已經存在”進而導緻軟體無法安裝,使用這個選項可以忽視這個報錯,而覆寫安裝。

--replacepkgs 替換軟體包安裝。如果軟體包已經安裝,此選項可以把軟體包重複安裝一遍。

--force 強制安裝。不管是否已經安裝,都重新安裝。就是--replacefiles和--replacepkgs的綜合

--test 測試安裝。不會實際安裝,隻是檢測一下依賴性。

--prefix 指定安裝路徑。為安裝軟體指定安裝路徑,而不使用預設安裝路徑。注意:如果指定了安裝路徑,軟體沒有安裝到系統預設路徑中的話,系統會找不到這些安裝的軟體,需要進行手工配置才能被系統識别。是以rpm包我們一般都采用預設路徑安裝。

服務啟動

rpm包更新

解除安裝

查詢

查詢軟體包是否安裝,指令格式如下:

查詢系統中的所有安裝軟體包,指令格式如下:

查詢軟體包的詳細資訊,指令格式如下:

查詢軟體包中的檔案清單

查詢系統檔案屬于哪個RPM包

既然知道每個RPM包中的檔案安裝位置,那麼也可以查詢系統檔案屬于哪個RPM包;不過需要注意的是,手工建立的檔案是不能查詢的,因為這些檔案不是通過RPM包安裝的,當然不能反向查詢它屬于哪個RPM包。指令格式如下:

查詢軟體包所依賴的軟體包

驗證

基本指令

數字證書

如果RPM包本身被動過,那麼校驗就不能解決問題了。我們就必須使用數字證書驗證。

數字證書有如下特點:

首先必須找到原廠的公鑰檔案,然後進行安裝

再安裝RPM包,會去提取RPM包中的證書資訊,然後和本機安裝的原廠證書進行驗證

如果驗證通過,則允許安裝;如果驗證沒通過,則不允許安裝并警告

​ yum源配置檔案儲存在/etc/yum.repos.d/目錄中,檔案的擴充名一定是“.repo”。也就是說,yum源配置檔案隻要擴充名是“\.repo”就會生效。

在CentOS-Base.repo檔案中有5個yum源容器,這裡隻列出了base容器,其他容器和base容器類似。我們解釋一下base容器

[base] 容器名稱,一定要放在[]中

name 容器說明,也可以自己随便寫

mirrorlist 鏡像站點,這個可以注釋掉

baseurl 我們的yum源伺服器的位址。預設是CentOS官方的yum源伺服器,是可以使用的。如果你覺得慢,則可以改成你喜歡的yum源位址

enabled 此容器是否生效,如果不寫或寫成enabled=1,則表示此容器生效;寫成enabled=0,則表示此容器不生效。

gpgcheck 如果為1則表示RPM的數字證書生效;如果為0,則表示RPM的數字證書不生效。

gpgkey 數字證書的公鑰檔案儲存位置;不用修改。

第一步:放入CentOS安裝CD光牒,并挂載CD光牒到指定位置;指令如下:

第二步:修改其它幾個yum源配置檔案的擴充名,讓它們失效,因為隻有擴充名是“*.repo”的檔案才能作為yum源配置檔案。當然也可以删除其它幾個yum源配置檔案,但是如果删除了,當你又想用網絡作為yum源時,就沒有了參考檔案,是以最好還是修改擴充名。指令如下:

第三步:修改CD光牒yum源配置檔案CentOS-Media.repo,參照以下方法修改:

查詢yum源伺服器上所有可安裝的軟體包清單

查詢yum源伺服器中是否包含某個軟體包

搜尋yum源伺服器上所有和關鍵字相關的軟體包。

yum search搜尋可以用于确定某個軟體在那個相關包當中。此例子可以确定“ifconfig”指令需要安裝“net-tools”包

查詢指定軟體包的資訊

安裝

更新

​ 注意:在進行更新操作時,yum源伺服器中軟體包的版本比本地安裝的軟體包的版本高。

除非您确定解除安裝的軟體依賴包不會對系統産生影響,否則不要執行yum的解除安裝,因為很有可能在解除安裝軟體包的同時解除安裝的依賴包也是重要的系統檔案,這就有可能導緻系統崩潰。解除安裝指令如下:

查詢可以安裝的軟體組

查詢軟體組内包含的軟體

安裝軟體組

解除安裝軟體組

1.1 應該選擇哪種軟體包

如果軟體包是給大量客戶提供通路,建議使用源碼包安裝,如LAMP環境搭建,因為源碼包效率更高。

如果軟體包是給Linux底層使用,或隻給少量客戶通路,建議使用rpm包安裝,因為rpm包簡單

1.2 源碼包從哪兒來

rpm包是CD光牒中直接包含的,是以不需要使用者單獨下載下傳。而源碼包是通過官方網站下載下傳的,如果需要使用,是需要單獨下載下傳的。

1.3 是否可以在系統中即安裝rpm包的Apache,又安裝源碼包的Apache?

答案是可以,因為兩種安裝方法安裝的Apache,安裝位置是不一樣的,例如:

RPM包:不建議指定安裝位置的,建議安裝在預設位置(RPM包安裝的服務有标準解除安裝指令,不怕檔案到處安裝)

源碼包:必須制定安裝位置(源碼包沒有安裝資料庫,沒有删除指令)

1) 下載下傳軟體包

2) 解壓縮

3) 進入解壓目錄

4) ./configure 編譯前準備

這一步主要有三個作用:

在安裝之前需要檢測系統環境是否符合安裝要求。

定義需要的功能選項;“./configure”支援的功能選項較多,可以執行“./configure --help”;指令查詢其支援的功能。一般都會通過“./configure --prefix=安裝路徑”指定安裝路徑。

把系統環境的檢測結果和定義好的功能選項寫入Makefile檔案,後續的編譯和安裝需要依賴這個檔案的内容。

需要注意的是,configure不是系統指令,而是源碼包軟體自帶的一個腳本程式,是以必須采用"./configure"方式執行(“./”代表在目前目錄下)

5). make 編譯

make會調用gcc編譯器,并讀取Makefile檔案中的資訊進行系統軟體編譯。編譯的目的就是把源碼程式轉變為能被Linux識别的可執行檔案,這些可執行檔案儲存在目前目錄下。編譯過程較為耗時,需要有足夠的耐心。

6). make clean 清空編譯内容

如果在“./configure”或“make”編譯中報錯,那麼我們在重新執行指令前一定要記得執行make clean指令,它會清空Makefile檔案或編譯産生的“.o”頭檔案。

7). make install 編譯安裝

這才是真正的安裝過程,一般會寫清楚程式的安裝位置。如果忘記指定安裝目錄,則可以把指令的執行過程儲存下來,以備将來删除使用。

​ 源碼包沒有删除指令,如果需要删除,直接删除安裝目錄即可。

例如:

繼續閱讀