【Linux】yum(Yellow dog Updater Modified)使用簡介

Linux使用過程中非常重要的命令——yum。

大學期間剛開始跟着慕課網上的視頻學習Linux的時候下載安裝軟件總是先下載到Windows上然後上傳到虛擬機上,解壓後安裝報什麼錯解決什麼錯,缺什麼依賴安裝什麼依賴。2015年實習開始,第一個任務就是搭建Redis,第一次接觸了yum命令,從此除了必要的測試、梳理離線安裝步驟以外,剩下的東西都通過yum來安裝,一條yum -y install命令解決一切問題。

前一段時間,應該說是過去一年都在跟Zookeeper打交道,接下來會系統梳理Zookeeper的部分知識,特別是在配置文件管理,微服務管理方面,在此之前系統的梳理一下yum到底是個什麼樣的命令,通過什麼原理下載安裝軟件。

YUM的介紹

YUM全稱爲 Yellow dog Updater Modified,它是一個在線的軟件安裝命令。YUM是C/S架構,是RPM1的前端工具,依賴於RPM存在的。能夠從指定的服務器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。

例如我們需要安裝一個軟件A,而軟件A依賴B,而B可能還繼續依賴其他軟件,通過yum我們只需要安裝A,其他依賴包會自動安裝。

那麼YUM是如何下載安裝RMP包的呢?
yum運行過程
但是上述這種機制,也存在着一些問題,萬一服務器上的程序包或者依賴關係發生了變化,就會導致服務器和客戶端本地的元數據不一致。想解決這個問題,可以在每次使用YUM的時候,都向服務器請求元數據。但是這種方式浪費帶寬和時間,有的時候明明沒有變化,但還是需要下載。

如何解決這種問題呢?
YUM服務器上有一個特殊文件,文件中記錄了每一個元數據文件的校驗碼,實際上每次運行YUM的時候,都會向服務器請求這個文件(剛剛配置好YUM源的時候,本地沒有這個文件,這時候肯定是要下載元數據的),並和本地元數據中的校驗碼文件進行對比,如果一致則代表元數據沒有變化,本地元數據有效,否則就重新請求元數據。

YUM的安裝及配置

我們可以通過yum -y install安裝其他軟件,如果Linux服務器沒有yum,該如何安裝。

  1. 首先,通過網址http://yum.baseurl.org/download/3.4/yum-3.4.3.tar.gz下載yum-3.4.3。
  2. 解壓壓縮包
    tar xvf yum-3.4.3.tar.gz
    
  3. 執行安裝命令,更新yum catch
    #依次執行以下命令
    cd yum-3.4.3
    yummain.py install yum
    yum check-update  
    yum update  
    yum clean all  
    
  4. 配置國內鏡像源
#安裝wget
yum -y install wget

安裝wget

#備份之前的倉庫文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.back

back

#下載阿里雲的倉庫文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

配置阿里鏡像

#清除緩存
yum clean all
yum makecache
  • 主配置文件/etc/yum.conf
    yum.conf是yum的主配置文件,手動安裝yum時,需要手動創建改文件。
[root@Centos7 ~]# cat /etc/yum.conf         
##1表示使能,0表示不使能;
##等號左右不要有空格,否則可能出現語法錯誤;
[main]                                              ##倉庫ID
cachedir=/var/cache/yum/$basearch/$releasever       ##緩存文件存放目錄
keepcache=0                                         ##緩存文件是否保存下來
debuglevel=2                                        ##debug調試級別,默認爲2
logfile=/var/log/yum.log                            ##日誌文件路徑
exactarch=1                                         ##安裝程序包的時候,做精確地平臺匹配(例如:配置爲0則允許在i386上更新i686的RPM包)
obsoletes=1                                         ##僅在更新的時候生效,允許更新陳舊的RPM包
gpgcheck=1                                          ##安裝程序包的時候,檢查GPG(GNU Private Guard)
plugins=1                                           ##是否允許使用插件(我們一般會用yum-fastestmirror這個插件)
installonly_limit=5                                 ##同時安裝幾個程序包
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
												    ##追蹤BUG的URL
distroverpkg=centos-release                         ##指定基準包,yum會根據這個包判斷髮行版本
  • 倉庫文件
    yum倉庫文件指/etc/yum.repos.d/目錄下以,repo結尾的配置文件。
    repo文件是Fedora、Redhat和Centos中yum源(軟件倉庫)的配置文件,通常一個repo文件定義了一個或者多個軟件倉庫的細節內容,例如我們將從哪裏下載需要安裝或者升級的軟件包,repo文件中的設置內容將被yum讀取和應用。
  • 文件必須以.repo結尾,否則不會被YUM使用;
  • 一個repo文件可以指向一個倉庫,爲倉庫的指向提供配置信息;
  • 一個repo文件也可以指向多個倉庫,只不過爲了便於管理切割成了多個repo文件;
##1表示使能,0表示不使能;
##等號左右不要有空格,否則可能出現語法錯誤;
[repositoryID]##設定倉庫ID(main不能作爲ID,因爲它是公共的);
name=Some name for this repository                      
##設定YUM倉庫名;
baseurl=url://server1/path/to/repository/               
##設定YUM倉庫訪問路徑(指向repodata這個目錄的上級目錄);
            url://server2/path/to/repository/           
            ##第二行及其之後的URL不能頂格寫
            url://server3/path/to/repository/
mirrorlist=                                                 
##不能與baseurl同時使用,設定鏡像服務器地址URL(指向的是個文本文件,裏面存放多個指向倉庫的URL,YUM會將這個文件下載到本地然後連接倉庫);
enabled={1|0}                                               
##設定是否啓用倉庫,默認啓用;
gpgcheck={1|0}                                              
##設定是否在安裝此倉庫中的程序包時,進行GPG校驗,來RPM包的完整性和來源合法性;
repo_gpgcheck={1|0}                                         
##設置是否檢查倉庫元數據簽名信息;
gpgkey=URL                                                  
##指向GPG密鑰文件的訪問路徑(可能是倉庫或權威機構提供);
enablegroups={1|0}                                          
##設置是否在倉庫上使用組批量管理程序包;
failovermethod={roundrobin|priority}                        
##故障轉移方法(輪詢|優先級),默認爲roundrobin隨機挑選,priority是按順序選擇;
exclude=compiz* *compiz* fusion-icon*                       
##用來禁止這個軟件倉庫中的某些軟件包的安裝和更新,可以使用通配符,並以空格分隔,可以視情況需要自行添加;
keepalive={1|0}                                            
##是否當遠程服務器是HTTP/1.1時,保持連接功能;
username                                                    
##有些服務器不支持匿名訪問,需要指明要訪問服務器的用戶名;
password                                                    
##有些服務器不支持匿名訪問,需要指明要訪問服務器的密碼;
cost=                                                       
##訪問倉庫的開銷(默認爲1000),用數字表示;
group_package_types=default, mandatory, optional            
##安裝包組中指定類型的包;

YUM的使用

常用命令

##列出所有可更新的軟件清單命令
yum check-update
##更新所有軟件命令
yum update
##僅安裝指定的軟件命令
yum install <package_name>
##僅更新指定的軟件命令
yum update <package_name>
##列出所有可安裝的軟件清單命令
yum list
##刪除軟件包命令
yum remove <package_name>
##查找軟件包 命令
yum search <keyword>
##清除緩存命令:
yum clean packages 				##清除緩存目錄下的軟件包
yum clean headers 				##清除緩存目錄下的 headers
yum clean oldheaders 			##清除緩存目錄下舊的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) ##清除緩存目錄下的軟件包及舊的headers

常用選項

-q, --quiet:靜默模式
-v, --verbose:詳細模式
-y, --assumeyes:自動回答爲yes;
--assumeno:自動回答爲no
-R [minutes], --randomwait=[minutes]:最多等待時間
-x [package], --exclude=[package]:通配要排除的包
--noplugins:禁用所有插件;
--color=COLOR:帶顏色
--downloadonly:僅下載包,不安裝或升級。默認下載在yum的緩存目錄中,默認爲/var/cache/yum/$basearch/$releasever
--downloaddir=DLDIR:指定下載目錄

yum的使用相信大家都不陌生,更詳細的命令、選項合集可以從網上獲取。


  1. RPM:
    原本是 Red Hat Linux 發行版專門用來管理 Linux 各項套件的程序,由於它遵循 GPL2 規則且功能強大方便,因而廣受歡迎。逐漸受到其他發行版的採用。RPM 套件管理方式的出現,讓 Linux 易於安裝,升級,間接提升了 Linux 的適用度。 ↩︎

  2. GPL:五種常用開源協議之一,Linux就是基於此協議的開源操作系統。 ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章