基於CentOS設置和使用Yum軟件倉庫


參考:How To Set Up and Use Yum Repositories on a CentOS 6 VPS

參考:CentOS yum 源的配置與使用

介紹

Yum倉庫是Linux軟件倉庫(保存RPM包)。 RPM包是Red Hat Package Manager管理的文件, RPM包可以在Red Hat / CentOS上快速輕松地安裝軟件。 YUM倉庫可以設置在本地(本地磁盤),也可以設置在或遠端(FTP,HTTP或HTTPS)。 Yum配置文件包含成功查找和安裝軟件(RPM包)所需的信息。

從YUM倉庫安裝軟件的優點:

  • 簡單的軟件管理:安裝,更新和刪除軟件包
  • 解析軟件依賴性:自動解決和安裝軟件依賴的軟件包
  • Yum是Red Hat / CentOS官方軟件包管理器

有時我們想在CentOS 上安裝的軟件可能無法從默認的官方CentOS軟件倉庫中中獲得。 在這種情況下,我們可以使用下面列出的其他(非官方)CentOS Yum存儲庫。 這些非官方倉庫有時比官方CentOS倉庫擁有更新版本的軟件包。

最常用的CentOS Yum倉庫

Yum倉庫配置文件

在Red Hat / CentOS Linux上,我們可以使用“yum install packagename”命令安裝軟件。運行此命令時,首先檢查/etc/yum.repos.d/目錄中的現有Yum倉庫配置文件。 它讀取每個Yum倉庫配置文件,以獲取下載和安裝新軟件所需的信息,解析軟件依賴性並安裝所需的RPM軟件包文件。

yum 的配置文件分為兩部分:main 和repository

Yum配置文件——main

main 部分定義了全局配置選項,整個yum 配置文件應該只有一個main。常位於/etc/yum.conf 中。yum.conf 文件一般位於/etc目錄下,一般其中只包含main部分的配置選項。

[root@localhost yum.repos.d]# cat /etc/yum.conf 
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
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
distroverpkg=centos-release


#  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
View Code

關鍵字段解析

cachedir:yum 緩存的目錄,yum 在此存儲下載的rpm 包和數據庫,默認設置為/var/cache/yum

keepcache:安裝完成后是否保留軟件包,0為不保留(默認為0),1為保留

debuglevel:Debug 信息輸出等級,范圍為0-10,缺省為2

logfile:yum 日志文件位置。用戶可以到/var/log/yum.log 文件去查詢過去所做的更新。

pkgpolicy:包的策略。一共有兩個選項,newest 和last,這個作用是如果你設置了多個repository,而同一軟件在不同的repository 中同時存在,yum 應該安裝哪一個,如果是newest,則yum 會安裝最新的那個版本。如果是last,則yum 會將服務器id 以字母表排序,並選擇最后的那個服務器上的軟件安裝。一般都是選newest。

distroverpkg:指定一個軟件包,yum 會根據這個包判斷你的發行版本,默認是redhat-release,也可以是安裝的任何針對自己發行版的rpm 包。

tolerant:有1和0兩個選項,表示yum 是否容忍命令行發生與軟件包有關的錯誤,比如你要安裝1,2,3三個包,而其中3此前已經安裝了,如果你設為1,則yum 不會出現錯誤信息。默認是0。

exactarch:有1和0兩個選項,設置為1,則yum 只會安裝和系統架構匹配的軟件包,例如,yum 不會將i686的軟件包安裝在適合i386的系統中。默認為1。

retries:網絡連接發生錯誤后的重試次數,如果設為0,則會無限重試。默認值為6.

obsoletes:這是一個update 的參數,具體請參閱yum(8),簡單的說就是相當於upgrade,允許更新陳舊的RPM包。

plugins:是否啟用插件,默認1為允許,0表示不允許。我們一般會用yum-fastestmirror這個插件。

除了上述之外,還有一些可以添加的選項,如:

exclude=selinux*  // 排除某些軟件在升級名單之外,可以用通配符,列表中各個項目要用空格隔開,這個對於安裝了諸如美化包,中文補丁的朋友特別有用。
gpgcheck=1  // 有1和0兩個選擇,分別代表是否是否進行gpg(GNU Private Guard) 校驗,以確定rpm 包的來源是有效和安全的。這個選項如果設置在[main]部分,則對每個repository 都有效。默認值為0。

如何導入GPG Key?

yum 可以使用gpg 對包進行校驗,確保下載包的完整性,所以我們先要到各個repository 站點找到gpg key,一般都會放在首頁的醒目位置,一些名字諸如RPM-GPG-KEY-CentOS-5 之類的純文本文件,把它們下載下來,然后用rpm --import RPM-GPG-KEY-CentOS-5 命令將key 導入。

Yum配置文件——repository

repository 部分定義了每個源/服務器的具體配置,可以有一到多個。常位於/etc/yum.repo.d 目錄下的各文件中,且必須以.repo作為擴展后綴

可用的Yum倉庫配置文件選項包括:

  • Repository ID - 用於區別各個不同的repository,必須有一個獨一無二的名稱 (example: [examplerepo])
  • Name - 是對repository 的描述,支持像$releasever $basearch這樣的變量(example: name=Example Repository)
  • Baseurl - 是服務器設置中最重要的部分,只有設置正確,才能從上面獲取軟件。它的格式是:
baseurl=url://server1/path/to/repository/
     url://server2/path/to/repository/
     url://server3/path/to/repository/
View Code

其中url 支持的協議有 http:// ftp:// file:// 三種。baseurl 后可以跟多個url,你可以自己改為速度比較快的鏡像站,但baseurl 只能有一個,也就是說不能像如下格式:

baseurl=url://server1/path/to/repository/
baseurl=url://server2/path/to/repository/
baseurl=url://server3/path/to/repository/
View Code

其中url 指向的目錄必須是這個repository header 目錄的上一級,它也支持$releasever $basearch 這樣的變量。

$releasever:代表發行版的版本,從[main]部分的distroverpkg獲取,如果沒有,則根據redhat-release包進行判斷。

$arch:cpu體系,如i686,athlon等

$basearch:cpu的基本體系組,如i686和athlon同屬i386,alpha和alphaev6同屬alpha

  • Enabled - Enable repository when performing updates and installs (example: enabled=1)
  • Gpgcheck - Enable/disable GPG signature checking (example: gpgcheck=1)
  • Gpgkey - 和[main]部分相同
  • Exclude - 和[main]部分相同
  • Includepkgs - List of the packages to include (example: include=kernel)
  • failovermethode - 有兩個選項roundrobin 和priority,意思分別是有多個url可供選擇時,yum 選擇的次序,roundrobin 是隨機選擇,如果連接失敗則使用下一個,依次循環,priority 則根據url 的次序從第一個開始。如果不指明,默認是roundrobin。

綠色是必須要有的

步驟1:創建Yum倉庫配置文件

在/etc/yum.repos.d/目錄中創建一個擴展名為.repo的新Yum倉庫配置文件。

vi /etc/yum.repos.d/example.repo
View Code

步驟2:在配置文件中寫上配置文件選項

將所需的Yum倉庫選項插入新創建的配置文件並保存更改。舉個例子

/etc/yum.repos.d/example.repo

[examplerepo]
name=Example Repository
baseurl=http://mirror.cisp.com/CentOS/6/os/i386/
enabled=1
gpgcheck=1
gpgkey=http://mirror.cisp.com/CentOS/6/os/i386/RPM-GPG-KEY-CentOS-6
View Code

DVD ISO做Yum倉庫

CentOS DVD ISO擁有大量軟件(RPM包文件),可在Red Hat / CentOS安裝向導中安裝。 我們還可以使用CentOS DVD ISO的RPM包文件來創建CentOS DVD ISO Yum倉庫。 這樣,即使我們完成了Red Hat / CentOS安裝向導,我們也可以從ISO上所有可用軟件中安裝軟件包。

步驟1:掛載CentOS DVD ISO

要查看CentOS DVD ISO數據,首先需要將其掛載在所需位置。 我們通常將CD-ROM,USB設備或ISO文件安裝到/mnt目錄(如果還有空間可用)。 要掛載CentOS DVD ISO,執行以下命令(請相應地更改/path/to/iso和/mnt):

mount -o loop /path/to/iso /mnt

步驟2:創建Yum倉庫配置文件

要開始使用新創建的Custom YUM Repository,我們必須創建具有.repo擴展名的Yum倉庫文件,且該文件必須放在/etc/yum.repos.d/目錄中。 有關創建YUM存儲庫配置文件的說明參考上文Yum倉庫配置文件。舉個例子

/etc/yum.repos.d/centosdvdiso.repo

[centosdvdiso]
name=CentOS DVD ISO
baseurl=file:///mnt
enabled=1
gpgcheck=1
gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-6
View Code

自定義Yum倉庫

有時我們需要創建一個自定義Yum倉庫(當無法聯網時會很方便)。Yum倉庫包含那些rpm包由我們自己說了算,自定義Yum倉庫僅保存我們要包含的RPM包文件。

步驟1:安裝createrepo

要創建自定義Yum倉庫,我們需要在服務器上安裝名為“createrepo”的軟件。 

yum install createrepo

步驟2:創建倉庫目錄

我們需要創建一個新目錄,該目錄將成為自定義Yum倉庫的位置,並將保存所需的RPM包文件。 執行命令創建目錄(根據需要更改)

mkdir /repository1

步驟3:將RPM文件放到倉庫目錄

使用“wget”命令將RPM軟件包文件直接下載到服務器(需要聯網)

wget http://mirror.lihnidos.org/CentOS/6/os/i386/Packages/NetworkManager-0.8.1-43.el6.i686.rpm
View Code

步驟4:運行createrepo

createrepo命令讀取“步驟2”創建的Yum倉庫目錄,並在其中創建一個名為“repodata”的新目錄。 repodata目錄保存新創建的存儲庫的元數據信息。 每次我們將RPM包添加到自定義Yum倉庫時,我們都需要使用“createrepo”命令重新創建倉庫元數據。 

createrepo /repository1

步驟5:創建Yum倉庫配置文件

創建具有.repo擴展名的配置文件,且該文件必須放在/etc/yum.repos.d/目錄下。 舉個例子

/etc/yum.repos.d/custom.repo

[customrepo]
name=Custom Repository
baseurl=file:///repository1/
enabled=1
gpgcheck=0
View Code

使用第三方Yum倉庫

Centos/RHEL默認的yum軟件倉庫非常有限,僅僅限於發行版本那幾張盤里面的常規包和一些軟件包的更新,利用RpmForge,可以增加非常多的第三方rpm軟件包。RpmForge庫現在已經擁有超過10000種的CentOS的軟件包,被CentOS社區認為是最安全也是最穩定的一個第三方軟件庫。

①安裝yum-priorities插件

這個插件是用來設置yum在調用軟件源時的順序的。因為官方提供的軟件源,都是比較穩定和被推薦使用的。因此,官方源的順序要高於第三方源的順序。如何保證這個順序,就需要安裝yum-priorities這插件了。

yum -y install yum-priorities
View Code

②更改優先級

安裝完yum-priorities插件后需要設置/etc/yum.repos.d/ 目錄下的.repo相關文件(如CentOS-Base.repo),在這些文件中插入順序指令:priority=N (N為1到99的正整數,數值越小越優先)

一般配置[base], [addons], [updates], [extras] 的priority=1,[CentOSplus], [contrib] 的priority=2,其他第三的軟件源為:priority=N (推薦N>10)。以CentOS-Base.repo 為例:

[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://ftp.sjtu.edu.cn/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1
View Code

③下載與安裝相應rpmforge的rpm文件包

# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
View Code

④安裝DAG的PGP Key

# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
View Code

⑤驗證rpmforge的rpm文件包

# rpm -K rpmforge-release-0.5.2-2.el5.rf.*.rpm
View Code

⑥安裝rpmforge的rpm文件包

# rpm -i rpmforge-release-0.5.2-2.el5.rf.i386.rpm
View Code

⑦設置/etc/yum.repos.d/rpmforge.repo文件中源的級別

[root@localhost yum.repos.d]# cat rpmforge.repo 
### Name: RPMforge RPM Repository for RHEL 5 - dag
### URL: http://rpmforge.net/
[rpmforge]
name = RHEL $releasever - RPMforge.net - dag
baseurl = http://apt.sw.be/redhat/el5/en/$basearch/rpmforge
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1
priority=12
View Code

⑧測試安裝

# yum install htop
View Code

其他第三方軟件庫如 EPEL(Extra Packages for Enterprise Linux ) 和 RPMFusion 的安裝與使用和RPMForge類似,可自行查找資料安裝。

國內Yum源

1. 企業貢獻:

搜狐開源鏡像站:http://mirrors.sohu.com/
網易開源鏡像站:http://mirrors.163.com/

2. 大學教學:

北京理工大學:

http://mirror.bit.edu.cn (IPv4 only)
http://mirror.bit6.edu.cn (IPv6 only)

北京交通大學:

http://mirror.bjtu.edu.cn (IPv4 only)
http://mirror6.bjtu.edu.cn (IPv6 only)
http://debian.bjtu.edu.cn (IPv4+IPv6)

蘭州大學:http://mirror.lzu.edu.cn/
廈門大學:http://mirrors.xmu.edu.cn/
清華大學:

http://mirrors.tuna.tsinghua.edu.cn/ (IPv4+IPv6)
http://mirrors.6.tuna.tsinghua.edu.cn/ (IPv6 only)
http://mirrors.4.tuna.tsinghua.edu.cn/ (IPv4 only)

天津大學:http://mirror.tju.edu.cn/
中國科學技術大學:

http://mirrors.ustc.edu.cn/ (IPv4+IPv6)
http://mirrors4.ustc.edu.cn/
http://mirrors6.ustc.edu.cn/

東北大學:

http://mirror.neu.edu.cn/ (IPv4 only)
http://mirror.neu6.edu.cn/ (IPv6 only)

電子科技大學:http://ubuntu.uestc.edu.cn/

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM