首頁 > 軟體

Linux軟體包管理詳述

2020-06-16 17:28:06

一 在Linux系統中,軟體包分為兩類,原始碼包和二進位制包(我的環境是CentOS,所以二進位制包是RPM包)
原始碼包的優點:
1 開源,如果有足夠的能力,可以修改原始碼
2 可以自由選擇所需的功能
3 軟體是編譯安裝,根據經驗,服務效率會比RPM包高一些
4 解除安裝方便,直接刪除安裝路徑即可。
原始碼包的缺點:
1 安裝過程步驟較多,尤其是安裝較大的軟體集合時(LAMP),容易出錯
2 編譯過程較長,原始碼包安裝時間比RPM包要長很多
3 因為是編譯安裝,一旦安裝過程中報錯,新手很難解決

二進位制包的有點:
1 包管理系統簡單,只需要幾個簡單明瞭就可以實現RPM包安裝,升級,查詢,解除安裝
2 安裝速度比原始碼包快很多
二進位制包的缺點:
1 經過編譯,不能再看到原始碼
2 功能選擇不如原始碼包靈活
3 依賴性(這個很頭大,後面會舉例子說明)

二 RPM包管理-rpm命令管理
1 先來看看包命名規則,我們首先看ISO映象裡的,先建立一個掛載目錄,然後掛載映象

然後進入/temp/cdrom目錄,就可以看到ISO映象裡的檔案了,其中Packages全都是RPM包

我們拿Apache的rpm做例子來看一下
httpd-2.2.15-15.e16.centos.1.i686.rpm
httpd 軟體包名
2.2.15 軟體版本
15 軟體發布的次數
e16.centos 適合的linux平台
i686 適合的硬體平台
rpm rpm包擴充套件名
如果在安裝的時候遇到了rpm包依賴,就需要先安裝依賴包,如果遇到了模組依賴,也就是這個依賴是其他rpm包的一部分,那麼就需要到http://www.rpmfind.net/網站進行查詢,根據模組名查rpm包名

2 RPM包安裝
rpm -ivh 包全名
選項:
-i(install) 代表安裝
-v(verbose)代表顯示詳細資訊
-h(hash) 顯示進度
下面我們來安裝Apache的rpm包

我們看到報錯了,表示需要先安裝這些依賴包,那我們先安裝apr-util-ldap

又需要apr-util,這些依賴非常多,我在這裡就不一一演示了,大家肯定覺得很煩了,那麼有沒有更簡單的方法呢,yum線上管理就可以很好的解決這個問題,不需要我們去操心這些依賴包,而是一次性幫我們裝好,後面再說

3 RPM包升級
rpm -Uvh 包全名
-U(upgrade) 升級,由於我們直接拿到的是ISO映象裡的包,這裡就不演示升級了,跟安裝是類似的

4 RPM包解除安裝
rpm -e 包名,注意,這裡不需要加包的全名了,只需要加包名即可,Linux用資料庫來維護這些包名

5 查詢是否安裝
rpm -q 包名

我們發現剛剛的httpd是沒有安裝成功的
rpm -qa
查詢所有已經安裝的RPM包

6 查詢軟體包的詳細資訊
rpm -qi 包名
-i查詢軟體資訊
-p查詢未安裝包資訊
7 查詢包中檔案安裝位置
rpm -ql 包名
-l列表
-p 查詢未安裝包資訊
8 查詢系統檔案屬於哪個rpm包
rpm -qf 包名
-f查詢檔案屬於哪個rpm包
9 查詢軟體包的依賴
rpm -qR 包名

三 RPM包管理-yum線上管理
1 網路yum源

我們進入到/etc/yum.repos.d/中,其實CentOS-Base.repo就是網路yum源的內容
我們開啟看一下

【base】 容器名稱
name 容器說明
mirrorlist 映象站點,這個可以注釋掉
baseurl 我們yun源伺服器的地址,預設是CentOS官網的yum源地址,是可以使用的,如果覺得慢,可以改成國內yum源地址
enabled 此容器是否生效,如果不寫或者=1生效,=0 不生效

2 yum list 查詢所有軟體包列表

3 yum search 關鍵字
搜尋伺服器上所有和關鍵字相關的包

4 yum -y install 包名
install 安裝
-y 自動回答yes
5 yum -y update 包名
update 升級
-y 自動回答yes
6 yum -y remove 包名
remove 解除安裝
-y 自動回答yes
除了CentOS伺服器可以做為yum源,我們還可以把我們的映象ISO做為yum源,就在剛剛那個路徑下的 CentOS-Media.repo,要想讓這個生效,需要將其他三個重名,

然後修改CentOS-Media.repo

我們輸入yum list ,發現生效了

四 原始碼包管理
還是先說下原始碼包和RPM包的區別,安裝位置不同

而原始碼包安裝位置,一般在 /usr/local/軟體名/
RPM包安裝的服務可以使用系統服務管理命令service來管理,比如
service httpd start
但是原始碼包只能用絕對路徑
/usr/local/apache2/bin/apachertl start

好了,下面說原始碼包的安裝,我們先在windows下下載http://mirror.bit.edu.cn/apache/httpd/
下載好後,通過winscp這個工具,把這個檔案從windows傳到linux中

好了,原始碼包已經有了,然後解壓縮

先要執行./configure 軟體設定與檢查
1 定義需要的功能選項
2 檢測系統環境是否符合安裝要求
3 把定義好的功能選項和檢測系統環境的資訊都寫入Makefile檔案,用於後續的編輯

make 編譯
make clean
make install 編譯安裝
我這裡環境報錯了,這步沒辦法演示了,總之是相比RPM二進位制包慢很多的,如果想解除安裝,直接刪除安裝目錄即可,不會遺留任何垃圾檔案

五 指令碼安裝包
1指令碼安裝包並不是獨立的軟體包型別,常見安裝的是原始碼包
2 是人為把安裝過程寫成了自動安裝的指令碼,只要執行指令碼,定義簡單的引數,就可以完成安裝
3 非常類似於Windows下軟體的安裝方式,這個就不演示了

好了,Linux軟體包管理就總結到這裡,繼續兄弟連Linxu之旅,如有問題,歡迎指正,謝謝。

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-11/137262.htm


IT145.com E-mail:sddin#qq.com