YUM是什麼?
YUM是Yellodog Update Modified的縮寫,暱稱“黃狗更新器”。
是紅帽系列Linux中的一個軟件。
其主要作用就是解決RPM軟件包安裝時的依賴問題。
YUM能夠自動查找並解決rpm包之間的依賴關係,無需用戶逐個手動的去安裝/卸載每一個rpm軟件包。
幾乎所有紅帽系列的Linux系統中 均會默認安裝有yum。
yum只是爲了解決RPM依賴關係問題的一個工具,而不是一種軟件封裝模式。
RPM仍然是紅帽系列Linux中的默認軟件管理器,yum可以視爲RPM的一個前臺工具。
YUM
· 工作原理
RPM軟件包存在一個包頭header,header中有該軟件的依賴關係。
yum服務器端事先對RPM軟件包進行分析,將軟件包所有依賴關係記錄成一個文件。
並將其依賴的所有軟件包囊括到yum服務器中備用。
yum服務器端放着軟件源,軟件源中有軟件倉庫。
倉庫裏放着:所有RPM軟件包的目錄索引,每個RPM軟件包的依賴性關係數據,該軟件倉庫中所有RPM軟件包。
用戶需要安裝某個軟件包時,可通過yum客戶端,查詢某個yum服務器上有無該軟件。
如有則下載軟件包的依賴關係數據,根據這些數據一次性的將其所依賴的軟件全部下載下來進行安裝。
· 使用YUM之前
建議先執行兩個步驟
1、使用yum命令的clean參數,清除yum原有的軟件包緩存數據
2、使用yum命令的makecache參數,將當前服務器上的軟件包相關信息存到本地以提高搜索軟件的速度。
[root@hanaii ~]# yum clean all
[root@hanaii ~]# yum makecache
· 軟件管理
1、安裝
命令:yum install package_names
[root@hanaii ~]# yum install gcc-c++
yum會檢查軟件的依賴關係,然後詢問是否安裝。
鍵入Y開始下載安裝。
2、查詢
命令:yum list package_names(支持通配符)
當軟件在本機上經安裝時,會提示Installed Package。
[root@hanaii ~]# yum list gcc-c++
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Installed Packages
gcc-c++.x86_64 4.8.5-28.el7_5.1 @updates
當軟件未在本機上安裝,且源的軟件倉庫中存在軟件包,會提示Available Packages。
[root@hanaii ~]# yum list bind
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Available Packages
bind.x86_64 32:9.9.4-61.el7_5.1 updates
當軟件不在軟件源中,會提示No matching Packages to list
[root@hanaii ~]# yum list xxx
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Error: No matching Packages to list
list後可跟:installed和available兩個參數。分別表示本機以安裝軟件,當前源可用軟件包。
由於這兩個命令的輸出較多,建議用管道結合less命令來進行查看。
3、查看軟件包的描述信息和概要信息
命令:rpm info package_names
[root@hanaii ~]# yum info gcc-c++
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Installed Packages
Name : gcc-c++
Arch : x86_64
Version : 4.8.5
Release : 28.el7_5.1
Size : 16 M
Repo : installed
From repo : updates
Summary : C++ support for GCC
URL : http://gcc.gnu.org
License : GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
Description : This package adds C++ support to the GNU Compiler Collection.
: It includes support for most of the current C++ specification,
: including templates and exception handling.
4、更新
命令:rpm update package_names
[root@hanaii ~]# rpm update pythron
...
Updated:
python.x86_64 0:2.7.5-69.el7_5
Dependency Updated:
python-libs.x86_64 0:2.7.5-69.el7_5
5、卸載
命令:rpm remove packages_names
[root@hanaii ~]# yum remove gcc-c++
...
Removed:
gcc-c++.x86_64 0:4.8.5-28.el7_5.1
Complete!
相關依賴也會被卸載
· 需要注意的
普通用戶只能用yum列出和查看軟件,無法用yum安裝、卸載軟件。
YUM配置第三方軟件源
· 默認軟件源
CentOS中的yum,默認使用的是CentOS提供的軟件源。
CentOS官方源十分審慎,其收錄的軟件包:
不包括任何有版權爭議的軟件包,其包裏的軟件不求新。一般爲較舊的穩定版本。
基於此,CentOS官方源中所包含的軟件包數量不會很多。
許多有用的軟件都不在CentOS的官方源中,如:Eclipse、mplayer等等。
所以需要通過額外的配置第三方軟件源,實現對更多軟件的管理。
· 推薦的第三方軟件源
以下軟件源是完全兼容CentOS紅帽等Linux系統的第三方源。
補充:阿里雲鏡像源https://opsx.alibaba.com/mirror
· 安裝與配置
以RepoForge源爲例。
1、下載安裝
下載適用於系統的軟件源安裝包。使用rpm或yum安裝。
[root@hanaii ~]# wget http://repository.it4i.cz/mirrors/repoforge/redhat/el7/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
[root@hanaii ~]# yum install rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
2、找到配置文件
進入/etc/yum.repos.d目錄,該目錄爲yum的配置目錄,放置的是軟件源的配置文件。
找到第三方軟件源對應的配置文件。如RepoForge源對應的就是rpmforge.repo。
[root@hanaii yum.repos.d]# ls -al
total 32
...
-rw-r--r-- 1 root root 1128 Jun 12 2014 rpmforge.repo
3、 優先級配置
安裝後的第三方源現還無法使用。
因爲存在一個官方源,在管理時,yum不知道從哪個源獲取軟件包。
所以要對源進行優先級的配置。
首先爲yum安裝一個優先級排序插件:yum-plugin-priorities
[root@hanaii yum.repos.d]# yum install yum-plugin-priorities
...
Installed:
yum-plugin-priorities.noarch 0:1.1.31-46.el7_5
Complete!
安裝成功後,進入官方源配置文件和第三方源配置文件,
分別在配置文件的每個軟件倉庫後,設置priority的值。(值越小,優先級越高)
官方源配置文件CentOS-Base.repo
[base]
...
priority=1
[updates]
...
priority=1
[extras]
...
priority=1
第三方源配置文件
[rpmforge]
...
priority = 10
[rpmforge-extras]
...
priority = 10
...
到此,源的優先級配置完成。yum會先到優先級高的源去獲取軟件,若不存在,再按優先級從高到低的順序去獲取軟件。
[root@hanaii yum.repos.d]# yum install mplayer
Loaded plugins: fastestmirror, priorities
base | 3.6 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
Loading mirror speeds from cached hostfile
164 packages excluded due to repository priority protections
No package mplayer available.
Error: Nothing to do