超詳細的 Linux CentOS yum 源的配置與使用【轉發+新增】

来源:https://www.cnblogs.com/sunshine-H/archive/2017/12/26/8116701.html
-Advertisement-
Play Games

一、yum 簡介 yum,是Yellow dog Updater, Modified 的簡稱,是杜克大學為了提高RPM 軟體包安裝性而開發的一種軟體包管理器。起初是由yellow dog 這一發行版的開發者Terra Soft 研發,用python 寫成,那時還叫做yup(yellow dog up ...


一、yum 簡介

  yum,是Yellow dog Updater, Modified 的簡稱,是杜克大學為了提高RPM 軟體包安裝性而開發的一種軟體包管理器。起初是由yellow dog 這一發行版的開發者Terra Soft 研發,用python 寫成,那時還叫做yup(yellow dog updater),後經杜克大學的Linux@Duke 開發團隊進行改進,遂有此名。yum 的宗旨是自動化地升級,安裝/移除rpm 包,收集rpm 包的相關信息,檢查依賴性並自動提示用戶解決。yum 的關鍵之處是要有可靠的repository,顧名思義,這是軟體的倉庫,它可以是http 或ftp 站點,也可以是本地軟體池,但必須包含rpm 的header,header 包括了rpm 包的各種信息,包括描述,功能,提供的文件,依賴性等。正是收集了這些header 並加以分析,才能自動化地完成餘下的任務。

  yum 的理念是使用一個中心倉庫(repository)管理一部分甚至一個distribution 的應用程式相互關係,根據計算出來的軟體依賴關係進行相關的升級、安裝、刪除等等操作,減少了Linux 用戶一直頭痛的dependencies 的問題。這一點上,yum 和apt 相同。apt 原為debian 的deb 類型軟體管理所使用,但是現在也能用到RedHat 門下的rpm 了。

  yum 主要功能是更方便的添加/刪除/更新RPM 包,自動解決包的倚賴性問題,便於管理大量系統的更新問題。

  yum 可以同時配置多個資源庫(Repository),簡潔的配置文件(/etc/yum.conf),自動解決增加或刪除rpm 包時遇到的依賴性問題,保持與RPM 資料庫的一致性。

二、yum 安裝

CentOS 預設已經安裝了yum,不需要另外安裝,這裡為了實驗目的,先將yum 卸載再重新安裝。

1、查看系統預設安裝的yum

# rpm -qa|grep yum

2、卸載yum

# rpm -e yum-fastestmirror-1.1.16-14.el5.centos.1 yum-metadata-parser-1.1.2-3.el5.centos yum-3.2.22-33.el5.centos

3、重新安裝yum

這裡可以通過wget 從網上下載相關包安裝,也可以掛載系統安裝光碟進行安裝,這裡選擇掛載系統安裝光碟進行安裝。

# mount /dev/cdrom /mnt/cdrom/

# rpm -ivh yum-3.2.22-33.el5.centos.noarch.rpm yum-fastestmirror-1.1.16-14.el5.centos.1.noarch.rpm yum-metadata-parser-1.1.2-3.el5.centos.i386.rpm

# yum -v

yum 的基礎安裝包包括:

  • yum  //RPM installer/updater
  • yum-fastestmirror  //Yum plugin which chooses fastest repository from a mirrorlist
  • yum-metadata-parser  //A fast metadata parser for yum

其他安裝包根據自己需要安裝。

三、yum 配置

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

  • main 部分定義了全局配置選項,整個yum 配置文件應該只有一個main。常位於/etc/yum.conf 中。
  • repository 部分定義了每個源/伺服器的具體配置,可以有一到多個。常位於/etc/yum.repo.d 目錄下的各文件中。

yum.conf 文件一般位於/etc目錄下,一般其中只包含main部分的配置選項。

# cat /etc/yum.conf

複製代碼
[main]
cachedir=/var/cache/yum
  //yum 緩存的目錄,yum 在此存儲下載的rpm 包和資料庫,預設設置為/var/cache/yum keepcache=0
  //安裝完成後是否保留軟體包,0為不保留(預設為0),1為保留 debuglevel=2
  //Debug 信息輸出等級,範圍為0-10,預設為2 logfile=/var/log/yum.log
  //yum 日誌文件位置。用戶可以到/var/log/yum.log 文件去查詢過去所做的更新。 pkgpolicy=newest
  //包的策略。一共有兩個選項,newest 和last,這個作用是如果你設置了多個repository,而同一軟體在不同的repository 中同時存在,yum 應該安裝哪一個,如果是newest,則yum 會安裝最新的那個版本。如果是last,則yum 會將伺服器id 以字母表排序,並選擇最後的那個伺服器上的軟體安裝。一般都是選newest。
distroverpkg=redhat-release
  //指定一個軟體包,yum 會根據這個包判斷你的發行版本,預設是redhat-release,也可以是安裝的任何針對自己發行版的rpm 包。 tolerant=1
  //有1和0兩個選項,表示yum 是否容忍命令行發生與軟體包有關的錯誤,比如你要安裝1,2,3三個包,而其中3此前已經安裝了,如果你設為1,則yum 不會出現錯誤信息。預設是0。 exactarch=1
  //有1和0兩個選項,設置為1,則yum 只會安裝和系統架構匹配的軟體包,例如,yum 不會將i686的軟體包安裝在適合i386的系統中。預設為1。 retries=6
  //網路連接發生錯誤後的重試次數,如果設為0,則會無限重試。預設值為6.
obsoletes=1
  //這是一個update 的參數,具體請參閱yum(8),簡單的說就是相當於upgrade,允許更新陳舊的RPM包。 plugins=1
  //是否啟用插件,預設1為允許,0表示不允許。我們一般會用yum-fastestmirror這個插件。 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum # Note: yum-RHN-plugin doesn't honor this. metadata_expire=1h installonly_limit = 5 # PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum.repos.d
複製代碼

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

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

四、配置本地yum源

1、掛載系統安裝光碟

# mount /dev/cdrom /mnt/cdrom/

2、配置本地yum源

# cd /etc/yum.repos.d/

# ls

會看到四個repo 文件

CentOS-Base.repo 是yum 網路源的配置文件

CentOS-Media.repo 是yum 本地源的配置文件

修改CentOS-Media.repo

# cat CentOS-Media.repo

複製代碼
# CentOS-Media.repo
#
# This repo is used to mount the default locations for a CDROM / DVD on
#  CentOS-5.  You can use this repo and yum to install items directly off the
#  DVD ISO that we release.
#
# To use this repo, put in your DVD and use it with the other repos too:
#  yum --enablerepo=c5-media [command]
#  
# or for ONLY the media repo, do this:
#
#  yum --disablerepo=\* --enablerepo=c5-media [command]
 
[c5-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
        file:///mnt/cdrom/
        file:///media/cdrecorder/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
複製代碼

在baseurl 中修改第2個路徑為/mnt/cdrom(即為光碟掛載點)

將enabled=0改為1

3、禁用預設的yum 網路源

將yum 網路源配置文件改名為CentOS-Base.repo.bak,否則會先在網路源中尋找適合的包,改名之後直接從本地源讀取。

4、執行yum 命令

# yum install postgresql

關於repo 文件的格式

所有repository 伺服器設置都應該遵循如下格式:

[serverid]
name=Some name for this server
baseurl=url://path/to/repository/
  • serverid 是用於區別各個不同的repository,必須有一個獨一無二的名稱;
  • name 是對repository 的描述,支持像$releasever $basearch這樣的變數;
  • baseurl 是伺服器設置中最重要的部分,只有設置正確,才能從上面獲取軟體。它的格式是:
baseurl=url://server1/path/to/repository/
     url://server2/path/to/repository/
     url://server3/path/to/repository/

其中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/

其中url 指向的目錄必須是這個repository header 目錄的上一級,它也支持$releasever $basearch 這樣的變數。
url 之後可以加上多個選項,如gpgcheck、exclude、failovermethod 等,比如:

複製代碼
[updates-released]
name=Fedora Core $releasever - $basearch - Released Updates
baseurl=http://download.atrpms.net/mirrors/fedoracore/updates/$releasever/$basearch
     http://redhat.linux.ee/pub/fedora/linux/core/updates/$releasever/$basearch
     http://fr2.rpmfind.net/linux/fedora/core/updates/$releasever/$basearch
gpgcheck=1
exclude=gaim
failovermethod=priority
複製代碼

其中gpgcheck,exclude 的含義和[main] 部分相同,但只對此伺服器起作用,failovermethode 有兩個選項roundrobin 和priority,意思分別是有多個url可供選擇時,yum 選擇的次序,roundrobin 是隨機選擇,如果連接失敗則使用下一個,依次迴圈,priority 則根據url 的次序從第一個開始。如果不指明,預設是roundrobin。

五、配置國內yum源

系統預設的yum 源速度往往不盡人意,為了達到快速安裝的目的,在這裡修改yum源為國內源。

上海交通大學yum源

a. 修改/etc/yum.repos.d/CentOS-Base.repo為:

複製代碼
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#

[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

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

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
baseurl=http://ftp.sjtu.edu.cn/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
baseurl=http://ftp.sjtu.edu.cn/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
baseurl=http://ftp.sjtu.edu.cn/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
複製代碼

關於變數

  • $releasever:代表發行版的版本,從[main]部分的distroverpkg獲取,如果沒有,則根據redhat-release包進行判斷。
  • $arch:cpu體系,如i686,athlon等
  • $basearch:cpu的基本體系組,如i686和athlon同屬i386,alpha和alphaev6同屬alpha。

b. 導入GPG KEY

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

c. 執行yum 命令

其他國內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/

六、使用第三方軟體庫

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

1、安裝yum-priorities插件

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

# yum -y install yum-priorities

2、安裝完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
複製代碼

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

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

4、安裝DAG的PGP Key

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

5、驗證rpmforge的rpm文件包

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

6、安裝rpmforge的rpm文件包

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

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

[root@TS-DEV 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
複製代碼

8、測試安裝

# yum install htop

參考 http://wiki.centos.org/AdditionalResources/Repositories/RPMForge#head-5aabf02717d5b6b12d47edbc5811404998926a1b

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

歡迎大家一起在下方討論。

 

尊重他人勞動成功,瀏覽的原址:https://www.cnblogs.com/mchina/archive/2013/01/04/2842275.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本頁內容都是本人系統化學習Linux 時整理出來的。這些文章中,絕大多數命令類內容都是翻譯、整理man或info文檔總結出來的,所以相對都比較完整。 本人的寫作方式、風格也可能會讓朋友一看就噁心到直接右上角叉叉,對此本人只能say sorry。但本人能自信的說,很多文章能算得上是查缺補漏和原理(機制 ...
  • 前言: 安裝完CentOS7後,執行#Python與#python -V,看到版本號是2.6,而且之前寫的都是跑在python3.X上面的,3.X和2.X有很多不同,在這裡我就不弊述兩者之間的區別了新python千萬不要把老版本的刪除!新老版本是可以共存的,很多基本的命令、軟體包都要依賴預裝的老版本 ...
  • 常用指令 ls 顯示文件或目錄 -l 列出文件詳細信息l(list) -a 列出當前目錄下所有文件及目錄,包括隱藏的a(all) mkdir 創建目錄 -p 創建目錄,若無父目錄,則創建p(parent) cd 切換目錄 touch 創建空文件 echo 創建帶有內容的文件。 cat 查看文件內容 ...
  • ALL-IN-ONE安裝openstack 操作系統安裝 *************************************************************************************系統:centos7.0記憶體:4G硬碟:80GCPU:4核最小安裝方式安 ...
  • 一不小心把Ubuntu刪東西刪壞了 嗚~ 剛好跟可惡的 下載 文件夾告別了 現在百度上的相關教程多多少少有些問題,多數過時了。 +++++++++++++++++++++說正事專用分隔符+++++++++++++++++++++++++ 我選擇的ibus 框架 然後右上角輸入法設置添加Chinese ...
  • 很無語,CentOS居然php版本才5.1.6,很多開源的CMS無法安裝。 查看php版本命令: #php -v 下麵的命令是刪除不幹凈的 #yum remove php 因為使用這個命令以後再用 #php -v 還是會看到有版本信息的。。。。。 必須強制刪除,使用下麵命令查看全部php軟體包 #r ...
  • echo:Display a line of text,預設會加換行。 -e:escape轉義特殊字元 -n:不要在最後自動換行 no LR cp:文件複製,規則:只有最後一個為目標,複製一個文件到一個文件 或者 多個文件到一個目錄! -r:遞歸複製目錄 -i:互動式顯示覆制 -f:強制複製,覆蓋 ...
  • [20171225]變態的windows批處理4.txt--//昨天學習windows 批處理的echo &.使用它可以實現類似回車換行的功能.例子:1.echo &.R:\>echo 1111 & echo 222211112222--//但是如果寫成如下:R:\>echo 1111 & echo ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...