說明:經過網上抄襲和自己的總結加實驗,非常詳細,可留作參考。
yum的配置一般有兩種方式:
一種是直接配置/etc目錄下的yum.conf文件,
另外一種是在/etc/yum.repos.d目錄下增加.repo文件。
一、yum的配置文件yum.conf詳解
$ cat /etc/yum.conf [main] cachedir=/var/cache/yum #yum下載的RPM包的緩存目錄 keepcache=0 #緩存是否保存,1保存,0不保存。 debuglevel=2 #調試級別(0-10),默認為2(具體調試級別的應用,我也不了解)。 logfile=/var/log/yum.log #yum的日志文件所在的位置 exactarch=1 #在更新的時候,是否允許更新不同版本的RPM包,比如是否在i386上更新i686的RPM包。 obsoletes=1 #這是一個update的參數,具體請參閱yum(8),簡單的說就是相當於upgrade,允許更新陳舊的RPM包。 gpgcheck=1 #是否檢查GPG(GNU Private Guard),一種密鑰方式簽名。 plugins=1 #是否允許使用插件,默認是0不允許,但是我們一般會用yum-fastestmirror這個插件。 installonly_limit=3 #允許保留多少個內核包。 exclude=selinux* #屏蔽不想更新的RPM包,可用通配符,多個RPM包之間使用空格分離。 # This is the default, if you make this bigger yum won't see if the metadata # is newer on the remote and so you'll "gain" the bandwidth of not having to # download the new metadata and "pay" for it by yum not having correct # information. # It is esp. important, to have correct metadata, for distributions like # Fedora which don't keep old packages around. If you don't like this checking # interupting your command line usage, it's much better to have something # manually check the metadata once an hour (yum-updatesd will do this). # metadata_expire=90m # PUT YOUR REPOS HERE or IN separate files named file.repo # in /etc/yum.repos.d
二、*.repo文件詳解
什么是repo文件?
repo文件是Fedora中yum源(軟件倉庫)的配置文件,通常一個repo文件定義了一個或者多個軟件倉庫的細節內容,例如我們將從哪里下載需要安裝或者升級的軟件包,repo文件中的設置內容將被yum讀取和應用!
我們以一份系統自帶的repo文件做為實例來探討(Fedora和redhat是一致的)(#號后面是我加的注釋):
我們以一份系統自帶的repo文件做為實例來探討(Fedora和redhat是一致的)(#號后面是我加的注釋):
[fedora] #方括號里面的是軟件源的名稱,將被yum取得並識別 name=Fedora $releasever - $basearch #這里也定義了軟件 倉庫的名稱,通常是為了方便閱讀配置文件,一般沒什么作用,$releasever變量定義了發行版本,通常是8,9,10等數字,$basearch變 量定義了系統的架構,可以是i386、x86_64、ppc等值,這兩個變量根據當前系統的版本架構不同而有不同的取值,這可以方便yum升級的時候選擇 適合當前系統的軟件包,以下同…… failovermethod=priority #failovermethod 有兩個值可以選擇,priority是默認值,表示從列出的baseurl中順序選擇鏡像服務器地址,roundrobin表示在列出的服務器中隨機選擇 exclude=compiz* *compiz* fusion-icon* #exclude這個選項是后來我自己加上去的,用來禁止這個軟件倉庫中的某些軟件包的安裝和更新,可以使用通配符,並以空格分隔,可以視情況需要自行添加 #baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/ #上面的一行baseurl第一個字符是'#'表示該行已經被注釋,將不會被讀取,這一行的意思是指定一個baseurl(源的鏡像服務器地址) #mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch #上面的這一行是指定一個鏡像服務器的地址列表,通常是開啟的,本例中加了注釋符號禁用了,我們可以試試,將$releasever和$basearch替換成自己對應的版本和架構,例如10和i386,在瀏覽器中打開,我們就能看到一長串鏡可用的鏡像服務器地址列表。 選擇自己訪問速度較快的鏡像服務器地址復制並粘貼到repo文件中,我們就能獲得較快的更新速度了,格式如下baseurl所示: baseurl= ftp://ftp.sfc.wide.ad.jp/pub/Linux/Fedora/releases/10/Everything/i386/os http://ftp.chg.ru/pub/Linux/fedora/linux/releases/10/Everything/i386/os http://ftp.yz.yamagata-u.ac.jp/pub/linux/fedora/linux/releases/10/Everything/i386/os http://mirror.nus.edu.sg/fedora/releases/10/Everything/i386/os http://mirror.yandex.ru/fedora/linux/releases/10/Everything/i386/os http://ftp.twaren.net/Linux/Fedora/linux/releases/10/Everything/i386/os http://ftp.itu.edu.tr/Mirror/Fedora/linux/releases/10/Everything/i386/os enabled=1 #這個選項表示這個repo中定義的源是啟用的,0為禁用 gpgcheck=1 #這個選項表示這個repo中下載的rpm將進行gpg的校驗,已確定rpm包的來源是有效和安全的 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch #定義用於校驗的gpg密鑰,就是數位簽章的公鑰檔所在位置! ##以下的軟件倉庫基本上用不到,選項含義同上 [fedora-debuginfo] name=Fedora $releasever - $basearch - Debug failovermethod=priority #baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/debug/ mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-debug-$releasever&arch=$basearch enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch [fedora-source] name=Fedora $releasever - Source failovermethod=priority #baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/source/SRPMS/ mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-source-$releasever&arch=$basearch enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch
下面看看rhel5.8自帶的repo文件
[root@10gasm yum.repos.d]# cat rhel-debuginfo.repo [rhel-debuginfo] name=Red Hat Enterprise Linux $releasever - $basearch - Debug baseurl=ftp://ftp.redhat.com/pub/redhat/linux/enterprise/$releasever/en/os/$basearch/Debuginfo/ enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
我自己設置的本地yum庫
[root@10gasm yum.repos.d]# cat dvd.repo [dvd] name=install dvd baseurl=file:///mnt/Server enabled=1 gpgcheck=0
非常簡單。
可以使用下面的命令查看所有的容器配置(Repository)是否生效
yum repolist all
使用all參數列出了所有的容器配置,如果不加all只列出可用的Repository,這個可用性取決於repo配置文件中的enabled參數,如果為0,則不可用,為1則可用
例如:
[root@10gasm yum.repos.d]# yum repolist all Loaded plugins: katello, product-id, security, subscription-manager Updating certificate-based repositories. Unable to read consumer identity repo id repo name status dvd install dvd enabled: 3,285 rhel-debuginfo Red Hat Enterprise Linux 5Server - x86_64 - Debug disabled repolist: 3,285
顯示出dvd這個repository是可用的,有3285個文件,rhel-debuginfo這個庫是不可用的。
如果修改rhel-debuginfo中enabled為1然后再次查看
[root@10gasm yum.repos.d]# yum repolist all Loaded plugins: katello, product-id, security, subscription-manager Updating certificate-based repositories. Unable to read consumer identity ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/x86_64/Debuginfo/repodata/repomd.xml: [Errno 4] IOError: <urlopen error (-3, 'Temporary failure in name resolution')> Trying other mirror. repo id repo name status dvd install dvd enabled: 3,285 rhel-debuginfo Red Hat Enterprise Linux 5Server - x86_64 - Debug enabled: 0 repolist: 3,285
0表示可用的包沒有