Yum 是 Fedora 下的軟件包管理工具。經過它,你可以查詢軟件包信息、從軟件倉庫獲取軟件包、經過自動解析軟件包依賴性對軟件包進行安裝/卸載,以及將整個系統的軟件包進行升級。html
Yum 是 Fedora 下的軟件包管理工具。經過它,你可以查詢軟件包信息、從軟件倉庫獲取軟件包、經過自動解析軟件包依賴性對軟件包進行安裝/卸載,以及將整個系統的軟件包進行升級。node
當你升級、安裝或移除軟件包時,Yum 會自動解析軟件包的依賴性。所以,它可以自動決定和獲取全部必需和可用的依賴性軟件包。python
你還可以爲 Yum 配置新的軟件包倉庫 (repositories) 和軟件源 (package sources),從而增長 Yum 可以使用的軟件包的數量和種類。除此以外,你還經過爲 Yum 添加插件來加強和擴展它的功能。linux
Yum 可以實現許多 RPM 能實現 的功能,而且,兩都有許多類似的命令行選項。不過使用 Yum 是方便的選擇,它可以簡單迅速地在單臺或一組計算機中實現軟件包的管理工做。git
Yum 是一項值得花時間學習的工具,它是實現系統管理任務的最快捷方式,同時它還提供了許多 PackageKit 不具有的功能。 ( PackageKit 是 Fedora 中默認的圖形化軟件管理工具,可參考 《PackageKit 使用教程》 瞭解有關 PackageKit 的詳細信息。sql
經過使用 yum check-update 命令,可以查看到系統中的哪些軟件包存在能夠升級的新版本。shell
經過使用 yum check-update 命令,可以查看到系統中的哪些軟件包存在能夠升級的新版本。數據庫
以上輸出結果列出了能夠升級的軟件包的信息。以列表中的第一個軟件包 PackageKit 爲例,輸出結果中包含了如下信息:緩存
上例中,除了 PackageKit 軟件包,可以升級的軟件包還包括 Kernel (內核) 、Yum 和 RPM,以及它們所依賴的軟件包。學習如何升級軟件包,請看下一節《使用 Yum 升級軟件包》安全
使用 Yum 時,你能夠升級一個軟件包,或者多個軟件包,甚至能夠將整個系統中全部的軟件包一次性所有升級。若是被升級的軟件包所依賴的其它軟件包也可以升級,這些依賴性軟件包也將被升級。
使用 Yum 時,你能夠升級一個軟件包,或者多個軟件包,甚至能夠將整個系統中全部的軟件包一次性所有升級。若是被升級的軟件包所依賴的其它軟件包也可以升級,這些依賴性軟件包也將被升級。
要升級單個軟件包,只需輸入 yum update <package_name> 命令便可,如下以 glibc 軟件包爲例:
從以上輸出信息中,你須要瞭解這些信息:
1. Loaded plugins: presto, refresh-packagekit, security ── 這是 yum 加載已經安裝的插件的名稱,yum 總會在運行時顯示這些 yum 插件信息。在這個例子中,yum 使用的插件有 presto, refresh-packagekit 和 security。
2. glibc.x86_64 ── 你可以使用 yum 安全下載並安裝的新軟件
3. yum 顯示出升級信息,並提示你是否 ([y/N]) 但願執行升級操做。
升級全部軟件包 (以及相關依賴性軟件包)
要升級系統中全部的軟件包以及相關的依賴性軟件包,只需簡單地輸入 yum update 便可
更新與安全相關的軟件包
找出哪些軟件包存在安全性的更新,並對簡單迅速地完成這些更新對於系統的安全性是相當重要的。 Yum 爲實現這個目標提供了 security 插件,該插件爲 yum 擴展了許多以安全爲中心的實用命令、子命令和選項。有關 security 插件的更多信息可參考《Yum 經常使用插件功能介紹》
保護已更改的配置文件
在使用 Fedora (或其它任何) 操做系統時,你總會不可避免地改動程序的配置文件。yum 在升級軟件包時,使用 RPM 實現對系統的更改,而 RPM 對於應用程序的配置文件提供了至關有效的保持機制。有關 RPM 在升級軟件包的過程,如何作好配置文件管理的詳細狀況,可參考《使用 RPM 升級軟件包》
下一節 - 《使用 Yum 搜索、羅列和顯示軟件包信息》
使用 yum search <term> [more_terms] 命令,可以在已啓用的軟件包倉庫中,對全部軟件包的名稱、描述和概述中進行搜索,最後,yum 會以顯示符合合條件的搜索結果列表。
使用 yum search <term> [more_terms] 命令,可以在已啓用的軟件包倉庫中,對全部軟件包的名稱、描述和概述中進行搜索,最後,yum 會以顯示符合合條件的搜索結果列表。
若是你不記得軟件包的確切名稱,但瞭解軟件包的某些相關名詞時,yum search 命令可以有效地幫助你找到想要的軟件包。
軟件包列表
yum list 以及相關的一些命令則可以爲你提供有關軟件包、軟件包集和軟件倉庫的信息。
查看軟件包信息
使用 yum info <package_name> [more_names] 命令可查看一個或多個軟件包的信息 (此處一樣能夠應用 glob 表達式)。
yum info <package_name> 與 rpm -q --info <package_name> 命令十分類似, 不過 yum 還可以提供軟件包的軟件倉庫來源信息 (即輸出結果中的 From repo 行)。
下一節 - 《使用 Yum 安裝軟件包和軟件包集》
使用 Yum 安裝軟件包十分簡單,只須要在 install 選項後面加上要安裝的軟件包的名稱便可,就像 yum install <package_name>,而後 Yum 就會幫你完成指定軟件包以及相關的依賴性軟件包的安裝。
使用 Yum 安裝軟件包十分簡單,只須要在 install 選項後面加上要安裝的軟件包的名稱便可,就像 yum install <package_name>,而後 Yum 就會幫你完成指定軟件包以及相關的依賴性軟件包的安裝。
經過增長軟件包的名稱,可以同時安裝多個軟件包 yum install <package_name> [more_names]
若是在 AMD64 或 Intel64 這類多運行庫 (multilib) 的系統上安裝軟件包,能夠在軟件包名稱後面加上平臺類型 (.arch) ,選擇特定平臺的軟件包。經常使用的軟件包平臺包括 i386, x86_68, i586, i686, 以及不區分平臺的 .noarch,如下以 i686 平臺的 totem 軟件包爲例:
若是要安裝多個名稱類似的軟件包,可使用 glob 表達式來簡化安裝命令,如:
除了經過提供軟件包的名稱進行軟件包的安裝,還可以經過提供文件名給 yum install 來實現包的安裝。好比你知道某個軟件包所包含的文件路徑,但不知道它的軟件包名稱,可使用 yum install <file_path> 進行安裝
上面這種安裝方式的原理很簡單,由 yum 去搜索全部的軟件包列表,尋找包含 /etc/samba/smb.conf 文件的軟件包,而後返回查詢結果。
若是你只知道文件的名稱,如 named,但不知它的具體位置。這時,可使用 yum provides 命令,並結合 glob 表達式進行查詢,例如使用如下命令查詢全部包含 named 文件的軟件包
在輸出結果中找到合適的軟件包後,就能夠經過軟件包名稱,使用 yum install 進行安裝了
安裝軟件包(組)集
軟件包集實際上就是一些功能相同或相近的軟件包集合。軟件包集有名稱和組標識,使用 yum grouplist -v 命令可以列出全部可用的軟件包集的名稱和組標識 (組標識位於右則括號中,就像本例中的 kde-desktop 和 kde-software-development)
使用 yum groupinstall 命令,就可以經過名稱或者組標識對安裝軟件包集如
下一節 - 《使用 Yum 移除軟件包和軟件包集》
移除軟件包和安裝軟件包一樣簡單,只須要使用 yum remove <package_name> 命令就能夠移除指定的軟件包,以及全部依賴於這個軟件包的其它軟件包。
移除軟件包和安裝軟件包一樣簡單,只須要使用 yum remove <package_name> 命令就能夠移除指定的軟件包,以及全部依賴於這個軟件包的其它軟件包。經過在命令後面增長軟件包的名稱,可以一次性卸載多個軟件包,如
如同 install 選項同樣,remove 也可以使用參數、軟件包名稱、 glob 表達式對軟件包進行移除,具體用法可參考《使用 Yum 安裝軟件包和軟件包集》
移除軟件包集
移除軟件組的命令與安裝軟件組類似,如下三種方式都可以實現軟件組的卸載。
下一節 - 《配置 Yum 和 Yum 軟件包倉庫》
/etc/yum.conf 文件中包含的 [mian] 片斷,使用戶可以設置 yum 選項。[main] 片斷中設置的值,對 yum 有全局影響,但能夠被單獨的 [repository] 片斷中的值覆蓋。
本部份內容包含
/etc/yum.conf 文件中包含的 [mian] 片斷,使用戶可以設置 yum 選項。[main] 片斷中設置的值,對 yum 有全局影響,但能夠被單獨的 [repository] 片斷中的值覆蓋。儘管能夠在 /etc/yum.conf 文件中添加 [repository] 片斷,但最好的方式仍是在 /etc/yum.repos.d/ 目錄中,建立新的或編輯已經存在的 .repo 文件。若是須要添加或編輯指定的軟件倉庫信息,情參考《設置 [repository] 選項》
/etc/yum.conf 配置文件中只包含一個 [main] 片斷,用戶能夠向其中添加許多附加選項。其中一些選擇的值影響 yum 的操做方式,一些影響 yum 對待軟件倉庫的方式。
/etc/yum.conf 配置文件中只包含一個 [main] 片斷,用戶能夠向其中添加許多附加選項。其中一些選擇的值影響 yum 的操做方式,一些影響 yum 對待軟件倉庫的方式。
瞭解有關 yum.conf 文件中的各個選項的值和說明信息,最好的方法是參考 yum.conf 的 man 文件,查看的命令爲 man yum.conf
如下是 /etc/yum.conf 配置文件的示例:
有關 [main] 片斷中經常使用的選項及說明
cachedir=/var/cache/yum
選項指定 yum 存儲 (軟件包) 緩存和數據庫文件的默認位置。其默認值爲 /var/cache/yum
keepcache=[1 or 0]
設置 keepcache=1,yum 在成功安裝軟件包以後保留緩存的頭文件 (headers) 和軟件包。默認值爲 keepcache=0
reposdir=[包含 .repo 文件的目錄的絕對路徑]
該選項用戶指定 .repo 文件的絕對路徑。.repo 文件包含軟件倉庫的信息 (做用與 /etc/yum.conf 文件中的 [repository] 片斷相同)。
yum 從全部 .repo 文件以及 /etc/yum.conf 文件的 [repository] 片斷中收集軟件倉庫的信息,並依此建立一個主倉庫列表,用於請求傳輸軟件包。
有關 .repo 文件和 [repository] 片斷中能用到的選項的信息,請參考《配置 Yum 配置文件中的 [repository] 選項》
gpgcheck=[1 or 0];
該選項爲全部軟件倉庫中 (及本地) 的軟件包啓用或禁用 GPG 簽名驗證。默認值爲1,即啓用 GPG 簽名檢測。
assumeyes=[1 or 0]
該選項決定 yum 對於危險操做時是否給出提示。默認值爲0,即不提示。當 assumeyes=1 時,在不該用 -y 選項時,yum 會給出提示。
exclude="[package_name] [more_names]"
選項容許用戶在安裝/升級的過程當中,排除指定的軟件包。排除多個軟件包時應該使用引號("")包起來。這裏一樣容許使用 glob 表達式。
retries=[number_of_retries]
該選項設置返回錯誤消息前,yum 重試的次數。0 表示一直重試,默認值爲 6。
能夠經過向 /etc/yum.conf 文件中添加 [repository] 片斷 (其中 repository 爲軟件倉庫標識,如 fedora),或者經過向 /etc/yum.repos.d/ 目錄中添加 .repo 文件,實現單獨軟件倉庫的定義。
能夠經過向 /etc/yum.conf 文件中添加 [repository] 片斷 (其中 repository 爲軟件倉庫標識,如 fedora),或者經過向 /etc/yum.repos.d/ 目錄中添加 .repo 文件,實現單獨軟件倉庫的定義。
/etc/yum.repos.d/ 中的全部 .repo 文件都會在 yum 下次運行時被讀取。
最簡單的 .repo 文件樣式以下
每一個 [repository] 片斷必須包含如下幾部分
[軟件包倉庫標識]
軟件包倉庫標識是被方括號包圍的單個單詞(沒有空格,沒有下劃線),而且不能與其它軟件包倉庫重名。
name=[軟件包倉庫名]
設置軟件倉庫的描述性信息
baseusrl=http://path/to/repo, ftp://path/to/repo, file://path/to/local/repo
設置軟件倉庫的 URL 目錄,該目錄包含軟件倉庫的倉庫數據(repodata)目錄,這個 URL 一般是 HTTP 連接,如 baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/
若是軟件包倉庫使用 FTP 地址,使用 ftp://path/to/repo
若是軟件包倉庫使用本地地址,使用 file://path/to/local/repo
若是軟件包倉庫使用基本的 HTTP 驗證,能夠在 baseurl 前擴展用戶名和密碼進行身份驗證,如 baseurl=http://user:password@www.example.com/repo/
可選配置選項
enabled=[1 or 0]
當某個軟件倉庫被配置成 enabled=0 時,yum 在安裝或升級軟件包時不會將該倉庫作爲軟件包提供源。使用這個選項,能夠啓用或禁用軟件倉庫。
經過 yum 的 --enablerepo=[repo_name] 和 --disablerepo=[repo_name] 選項,或者經過 PackageKit 的"添加/刪除軟件"工具,也可以方便地啓用和禁用指定的軟件倉庫。參考《刷新 PackageKit 軟件源 (Yum 軟件倉庫)》
在《Yum 配置文件 - [repository] 選項的設置》中,提到 yum 命令和 yum 配置文件中須要使用到的一些變量,如 $releasever, $arch 和 $basearch,本節主要說明這些變量的來源及做用。
在《Yum 配置文件 - [repository] 選項的設置》中,提到 yum 命令和 yum 配置文件中須要使用到的一些變量,如 $releasever, $arch 和 $basearch,本節主要說明這些變量的來源及做用。
$releasever
此變量表示 Fedora 的發行版,yum 經過 /etc/yum.conf 文件,從 distrooverpky=<value> 行取得 $releasever 的值。若是 /etc/yum.conf 文件中沒有這一行,yum 則從 redhat-release (應該是 fedora-release) 軟件包中推算出正確的值.
$arch
此變量用於標識系統所用的 CPU 平臺,變量的值經過 uname 命令得出,$arch 的有效值爲 i586, i686 和 x86_64
$basearch
此變量用於參照系統的基本平臺,例如,i686 和 i586 機器的基本平臺是 i 386,AMD64 和 Intel64 機器的基本平臺是 x86_64
$YUM0-9
$YUM0 ~ $YUM9 這十個變量分別被 shell 環境中的同名變量的值所替代。若是 /etc/yum.conf 文件中設置了這些變量,而 shell 環境中沒有同名變量,它的值則不被代替。
按照如下步驟,便可以完成建立 Yum 軟件包倉庫的操做。這些命令會爲你建立 Yum 軟件包倉庫必須的元數據,以及用於加速 yum 操做的 sqlite 數據庫
按照如下步驟,便可以完成建立 Yum 軟件包倉庫的操做
1.安裝 createrepo 軟件包
2.將全部軟件包複製到某個目錄下,如 /mnt/local_repo/
3.將第2步中使用的目錄做爲 createrepo --database 參數,執行命令
以上命令會爲你建立 Yum 軟件包倉庫必須的元數據,以及用於加速 yum 操做的 sqlite 數據庫
經過安裝 Yum 插件,可以擴展及增強 Yum 的功能。當你使用 yum 命令的時候,yum 老是會向你顯示已啓用的插件信息。
經過安裝 Yum 插件,可以擴展及增強 Yum 的功能。當你使用 yum 命令的時候,yum 老是會向你顯示已啓用的插件信息。
要啓用 yum 插件,確認 /etc/yum.conf 配置文件的 [main] 片斷中存在以 plugins=1 的選項
將 plugins 的值設置爲 0 便可禁用 yum 插件。
每一個已安裝的 yum 插件都有本身的配置文件,文件位於 /etc/yum/pluginconf.d/ 目錄下,你能夠在這些配置文件中設置與插件相關的選項,例如如下是 security 插件的配置文件 security.conf 文件中的內容
與 yum.conf 相同,插件配置文件老是包含一個 [main] 片斷,其中包含 enable=<value> 選項,這個選項的值決定插件是否被啓用。
若是 /etc/yum.conf 文件中配置了 enable=0,只有當插件在單獨的配置文件中設置了啓用,運行 yum 命令時,插件纔會被使用。
若是你只是想在某個 yum 命令執行時禁用全部插件,可以使用 --noplugins 選項。
若是你只是想在某個 yum 命令執行時禁用某個插件,可使用 --disableplugin=<plugin_name>
若是禁用多個插件,插件名稱之間用逗號分隔。使用插件名稱時也支持 glob 表達式
通常而言,Yum 插件軟件包的名稱都遵尋 yum-plugin-<plugin_name> 這樣的格式,但也並不是全部的插件都是如此,例如 presto 插件的軟件包名稱是 yum-presto。
通常而言,Yum 插件軟件包的名稱都遵尋 yum-plugin-<plugin_name> 這樣的格式,但也並不是全部的插件都是如此,例如 presto 插件的軟件包名稱是 yum-presto。
在對經常使用的 Yum 插件進行介紹以前,仍是先向你說明如何安裝 Yum 插件。實際上,安裝 Yum 插件十分簡單,就和安裝其它軟件同樣,例如要安裝 yum-plugin-security 插件,只需執行如下命令便可。
presto (yum-presto)
presto 插件讓 yum 在升級時可以下載差別 RPM 軟件包(delta RPM packages) 。差別軟件包僅包含了已安裝軟件包與升級軟件包二者之間不一樣的內容,經過下載差別軟件包,可以大大下降下載時間、加快下載速度。
不過使用差別軟件包須要對已經安裝的軟件包進行重建 (rebuild),即將不一樣中的內容應用到已經安裝的軟件包中,這須要必定的時間。
所以,使用 presto 插件是在下載時間和安裝時間中作出選擇,對於網絡較慢機器較快的狀況,presto 插件可以迅速下載差別軟件包並安裝。另外一方面,網速快而機器慢,則能夠禁用 presto 下載完整軟件包並安裝 (安裝完整軟件包比應用差別軟件包所需時間較少)。 presto 插件默認安裝並啓用。
protect-packages (yum-plugin-protect-packages)
protect-packages 插件用於避免 yum 軟件包或其它 yum 所依賴的軟件包被移除,它也能避免許多系統運行所必要的軟件包被移除。另外,你能夠編輯 /etc/sysconfig/protected-packages 配置文件 (若是不存在能夠本身建立) ,向其中添加的軟件包都將受保護不被移除,添加時每行一個。
若是要臨時取消軟件包保護,執行 yum 命令時加上 --override-protection 選項
refresh-packagekit (PackageKit-yum-plugin)
當 yum 運行時,這個插件爲 PackageKit 更新元數據,該插件默認安裝並被啓用。
security (yum-plugin-security)
對於系統管理員而言,方便且常常發現安全更新信息十分重要。出於這個目的,yum 提供了 security 插件,它爲 yum 擴展了一系列以安全爲中心的實用命令、子命令和選項。
經過運行 man yum-security 能夠查看 security 插件爲 yum 增長的新功能及它們的詳細用法。