-linux-軟體包管理
阿新 • • 發佈:2020-12-11
一 軟體包介紹
與Windows類似,在linux系統上也可以安裝各種應用程式,或稱軟體包,Linux下軟體包分為三類
分類 | 安裝 | 特點 |
---|---|---|
rpm包 | 預先編譯打包,安裝簡單 | 通常軟體的穩定版會被官方做成rpm,所以軟體版本較低 |
原始碼包 | 手動編譯打包,安裝繁瑣 | 軟體版本豐富,可選擇性強 |
二進位制包 | 解壓即可使用,安裝簡單 | 不能修改原始碼 |
二 rpm包管理
1 什麼是rmp包
在主流的Linux系統上,多數軟體的安裝、升級、移除以及維護工作都是RPM軟體包管理程式來完成的,那什麼是RPM軟體包呢?
RPM 是Red-Hat Package Manager(RPM軟體包管理器)的縮寫,這一檔案格式名稱雖然打上了RedHat 的標誌,但是其原始設計理念是開放式的,通常軟體的穩定版會被官方做成rpm,所以軟體版本偏低。
rpm包格式
rpm包格式舉例
# 例1 mysql-connector-odbc-5.2.5-8.el7.x86_64.rpm 軟體包名:mysql-connector-odbc 版本號Version:5.2.5 釋出版本Release:8.el7 平臺:el7.x86_64 字尾:.rpm # 例2 abrt-python-doc-2.1.11-57.el7.centos.noarch.rpm abrt-python-doc #軟體包的名稱 2.1.11 #軟體的版本 57 #軟體編譯之後的釋出的次數 el7 #適合的作業系統的版本 noarch #適用於不同版本的CPU .rpm #字尾名
RPM閉包使用的平臺
# 檢視自己當前的平臺以及系統版本
[root@arther-linux /]# uname -m
x86_64
[root@arther-linux /]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
管理RPM包有兩種命令
# 1.rpm命令: 需要自己找到rpm包,並且手動解決包的依賴性關係 ps: 實際情況下,很難分辨缺少什麼依賴包 # 2.yum命令: 相關rpm包事先都被存放於一個倉庫裡,倉庫包含了所有的依賴包,所以yum按照可以幫我們解決依賴性 問題。 # 具體聯絡與區別 rpm是由紅帽公司開發的軟體包管理方式,使用rpm我們可以方便的進行軟體的安裝、查詢、解除安裝、升級等工作。但是rpm軟體包之間的依賴性問題往往會很繁瑣,尤其是軟體由多個rpm包組成時。 Yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及SUSE中的Shell前端軟體包管理器。基於RPM包管理,能夠從指定的伺服器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。
RPM包獲取
如果沒有掛載,檔案目錄與外設硬體目錄是兩個概念,無法以軟體作業系統的指令去開啟硬體目錄,如
[root@arther-linux /]# ls /dev/sr1
/dev/sr1
# 所以需要掛載,實現外設硬體的目錄與作業系統軟體目錄的拼接(對映關係),將映象中該目錄下的檔案掛載到opt中。
# 1.本地的ISO映象光碟(軟體包可能存在版本偏低情況) : 掛載映象有以下三種方式
方式1:
[root@localhost ~]# mount /dev/cdrom /opt/
方式2:
[root@localhost ~]# mount /dev/sr0 /opt/
# 如果有兩個光碟機
[root@localhost ~]# mount /dev/sr1 /opt/
方式3:
[root@localhost ~]# mount -o loop /xxx.iso /opt
檢視光盤裡的rpm包
[root@localhost ~]# ls /opt/Packages/
# 2.自己去網上下載rpm包進行安裝
# 3.聯網從yum倉庫裡獲取rpm包 # yum的時候
三 rpm命令
選項
#1、安裝:rpm -ivh <RPM包名全稱>
#2、解除安裝:rpm -e <RPM包名>
#3、升級:rpm -Uvh <RPM包名>
#4、查詢:
rpm -qa # 查詢系統中安裝的所有RPM軟體包
rpm -qa | grep php #檢索系統中已經安裝有關php的軟體包
rpm -q RPM包名 #查詢指定軟體包是否已安裝
[root@arther-linux ~]# rpm -q zip
zip-3.0-11.el7.x86_64
rpm -qi RPM包名 #查詢系統中已安裝包的描述資訊
rpm -ql RPM包名 #查詢系統中已安裝包裡所包含的檔案
rpm -qc RPM包名 #查詢指定軟體包的所有配置檔案
rpm -qd <RPM包名> #查詢某個包安裝的幫助文件
rpm -qf 檔案路徑 #查詢系統中指定檔案所屬的軟體包
[root@arther-linux ~]# rpm -qf /usr/sbin/ifconfig
net-tools-2.0-0.25.20131004git.el7.x86_64
-p #在上述選項的基礎上加選項-p,就可以檢視尚未安裝的rpm包資訊
額外選項
--nomd5 # 不檢驗軟體包的簽名
--nodeps # 忽略依賴性安裝軟體,安裝後軟體有可能無法使用,最好是解決依賴性後再安裝 [root@localhost ~]# rpm -e dos2unix --nodeps # 忽略依賴關係
--force # 強制安裝軟體包,只有安裝和升級可以強制執行
安裝
#1、rpm包在本地
[root@egon ~]# mount /dev/sr0 /opt
[root@egon ~]# rpm -ivh /opt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
#2、rpm來自於網路,如果安裝過程中報錯:curl: (60) Peer's Certificate has expired,請先 將系統時間修改正確,然後再安裝即可
[root@egon ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.0- 2.el7.x86_64.rpm
安裝與依賴性
[root@egon ~]# rpm -ivh /opt/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm 錯誤:依賴檢測失敗:
/etc/mime.types 被 httpd-2.4.6-88.el7.centos.x86_64 需要
httpd-tools = 2.4.6-88.el7.centos 被 httpd-2.4.6-88.el7.centos.x86_64
需要
libapr-1.so.0()(64bit) 被 httpd-2.4.6-88.el7.centos.x86_64 需要 libaprutil-1.so.0()(64bit) 被 httpd-2.4.6-88.el7.centos.x86_64 需要 [root@egon ~]#
# 解決思路:安裝提示的庫,將依賴的庫全部安裝,安裝
升級rpm包
#1、下載一個低版本、一個高版本
wget https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent- 3.0.9-1.el7.x86_64.rpm
wget https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-agent- 4.2.0-1.el7.x86_64.rpm
#2、先安裝低版本
[root@egon ~]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm
#3、再安裝高版本,會報錯
[root@egon ~]# rpm -ivh zabbix-agent-4.2.0-1.el7.x86_64.rpm
#4、如果採用--force選項,那就是強制安裝,會同時存在兩個版本,該方案不可取
[root@egon ~]# rpm -qa |grep zabbix zabbix-agent-3.0.9-1.el7.x86_64
[root@egon ~]# rpm -ivh zabbix-agent-4.2.0-1.el7.x86_64.rpm --force 。。。安裝成功。。。
[root@egon ~]# rpm -qa |grep zabbix # 同時兩個版本共存
zabbix-agent-3.0.9-1.el7.x86_64
zabbix-agent-4.2.0-1.el7.x86_64
#5、重來,採用升級方式安裝
[root@egon ~]# rpm -e zabbix-agent-3.0.9-1.el7.x86_64
[root@egon ~]# rpm -e zabbix-agent-4.2.0-1.el7.x86_64
[root@egon ~]# rpm -qa |grep zabbix
[root@egon ~]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm
[root@egon ~]# rpm -Uvh zabbix-agent-4.2.0-1.el7.x86_64.rpm
# 清理老版本,安裝新版本。。。
[root@egon ~]# rpm -qa |grep zabbix-agent
# 只留下一個新版本
zabbix-agent-4.2.0-1.el7.x86_64
[root@egon ~]#
三 yum管理RPM包
1 yum介紹
yum自動解決依賴關係
Yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell 前端軟體包管理器。基於RPM包管理,能夠從指定的伺服器自動下載RPM包並且安裝,可以自動處理依賴性關 系,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。
檢視yum命令與配置檔案
[root@arther-linux /]# rpm -q yum
yum-3.4.3-168.el7.centos.noarch
[root@arther-linux /]# rpm -qc yum
/etc/logrotate.d/yum
/etc/yum.conf
/etc/yum/version-groups.conf
yum命令常用選項
常用選項說明:
#倉庫
yum repolist # 查詢可用倉庫
yum repolist all # 檢視包括已啟用或禁用的所有倉庫狀態
# 關閉與啟用倉庫:本質:都是在修改repo檔案中的enable的值 0 不啟用 1 啟用
yum-config-manager --disable epel #關閉倉庫epel
yum-config-manager --enable epel #啟用倉庫epel
#檢視
yum list # 列出可用倉庫中所有的軟體包
yum list | less yum grouplist # 列出可用倉庫中的軟體組
yum provides /usr/sbin/ifconfig
# 查詢命令所屬的軟體包,可以不加路徑,只寫 命令名字
# 與rpm -qf的區別在於yum provides後可 以只跟命名名
#安裝
yum install httpd httpd-tools # 加上-y選項可以變成非互動
yum groupinstall "開發工具" -y
# 安裝軟體組,一個軟體組中包含了多個軟體包
yum groups install "開發工具" -y #同上
#恢復
yum reinstall httpd # 不小心刪除了配置檔案的時,可以reinstall一下
#更新
yum check-update # 檢查可以更新的軟體包
yum update -y # 更新所有軟體包,包括核心,通常只在剛裝完系統時執行
yum update NetworkManager.x86_64 -y # 更新某個軟體包
#快取
yum makecache # 製作元資料快取
yum clean all # 清理元資料快取
vim /etc/yum.conf # 預設軟體包下載安裝後會自動刪除
# 設定keepcache=1 即開啟了軟體包快取
# 快取目錄為配置檔案中指定的cachedir
# 歷史記錄
yum history # 檢視執行過的yum命令歷史記錄
yum history info ID號 # 檢視具體某一條yum命令的詳細資訊
yum history undo ID號 # 撤銷執行過的歷史命令
# 關於安裝需要注意:
無論yum安裝的軟體來自何方,yum時刻以自己倉庫中的repodata儲存的依賴關係為準,如果有多個倉庫,就 依次檢索
#1、yum直接安裝公網的rpm包, 會自動查詢當前系統上已有的倉庫解決依賴關係
yum install https://mirrors.aliyun.com/centos/7.6.1810/os/x86_64/Packages/samba- 4.8.3-4.el7.x86_64.rpm
#2、Yum直接安裝本地的rpm包,會自動查詢當前系統上已有的倉庫解決依賴關係
yum localinstall -y /mnt/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm
要使用yum前,需要準備一個yum源(我們也稱為yum倉庫), 這個可以是一個網際網路上的倉庫,也可以是本地自己搭建的倉庫.倉庫裡面有什麼呢?裡面全部都是.rpm的軟體包.一臺linux,可以新增N多個yum源, 能搜尋的軟體包數量就是N個yum源之和.系統常見yum
1.自定義的本地源
2.網路上的源頭,如:base基礎源、epel擴充套件源、與服務相關的源(官網)