让CentOS yum源支持第三方软件库EPEL、RPMForge与RPMFusion

[ 2012-03-30 00:04:01 | 作者: admin ]
字号: | |
让CentOS yum源支持更多rpm(第三方软件库EPEL、RPMForge与RPMFusion)


        在CentOS下运行yum install flash-plugin或yum install mplayer的时候,提示库里没有找到这个软件?为什么会这样?因为CentOS是RHEL编译过来的,去掉了所有关于版权问题的东西。因此,在没有使用第三方软件库的情况下,很多软件无法用yum install来直接安装。

         

        EPEL(Extra Packages for Enterprise Linux)软件库提供为RHEL系列(4.x、5.x、6.x等等)重新编译的Fedora组件。这个软件库在不替换系统组件方面下了功夫。在某些情况下它尝试直接针对CentOS兼容性的问题,但坚决否定软件库间的兼容性是目标之一。当它与其它第三方软件库混合使用时,问题可能会出现。故此,当你使用 EPEL时,尤其是当你亦会运用其它件库的组件时,请确保你使用yum的Priorities插件。

         

        RPMForge库现在已经拥有超过10000种的CentOS的软件包,被CentOS社区认为是最安全也是最稳定的一个第三方软件库。

         

        下面讲解下如何使用EPEL与RPMForge、RPMFusion软件仓库:

         

        一、安装yum-priorities插件。

         

        这个插件是用来设置yum在调用软件源时的顺序的。因为官方提供的软件源,都是比较稳定和被推荐使用的。因此,官方源的顺序要高于第三方源的顺序。如何保证这个顺序,就需要安装yum-priorities这插件了。

         

        [root@CentOS ~]# yum install 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配置为(CentOS 6.0):

        # 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://mirror.centos.org/centos/$releasever/os/$basearch/

        gpgcheck=1

        gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

        priority=1

         

        #released updates

        [updates]

        name=CentOS-$releasever - Updates

        mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates

        #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/

        gpgcheck=1

        gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

        priority=1

         

        #packages used/produced in the build but not released

        [addons]

        name=CentOS-$releasever – Addons

        mirrorlist=http://mirrorlist.CentOS.org/?release=$releasever&arch=$basearch&repo=addons

        #baseurl=http://mirror.CentOS.org/CentOS/$releasever/addons/$basearch/

        gpgcheck=1

        gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

        priority=1

         

        #additional packages that may be useful

        [extras]

        name=CentOS-$releasever - Extras

        mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras

        #baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/

        gpgcheck=1

        gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

        priority=1

         

        #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://mirror.centos.org/centos/$releasever/centosplus/$basearch/

        gpgcheck=1

        enabled=0

        gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

        priority=2

         

        #contrib - packages by Centos Users

        [contrib]

        name=CentOS-$releasever - Contrib

        mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib

        #baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/

        gpgcheck=1

        enabled=0

        gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

        priority=2

         

        二、下载与安装相应EPEL的rpm文件包

         

        1、下载与安装EPEL的rpm文件包

         

        32位系统

        [root@CentOS ~]# rpm -ivh http://download.fedora.redhat.com/pub/epel/6/i386/epel-release-6-5.noarch.rpm

         

        64位系统

        [root@CentOS ~]# rpm -ivh http://download.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm

         

        如果您不清楚您的系统内核,请使用uname -a命令来查看您的内核信息。

         

        2、导入DAG的PGP Key

         

        [root@CentOS ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

         

        3、设置/etc/yum.repos.d/epel.repo文件中源的级别,就是添加priority=11这句。

        如我的epel.repo文件内容:

        [epel]

        name=Extra Packages for Enterprise Linux 6 - $basearch

        #baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch

        mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch

        failovermethod=priority

        enabled=1

        gpgcheck=1

        gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

        priority=11

         

        [epel-debuginfo]

        name=Extra Packages for Enterprise Linux 6 - $basearch - Debug

        #baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch/debug

        mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch

        failovermethod=priority

        enabled=0

        gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

        gpgcheck=1

         

        [epel-source]

        name=Extra Packages for Enterprise Linux 6 - $basearch - Source

        #baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS

        mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch

        failovermethod=priority

        enabled=0

        gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

        gpgcheck=1

         

        三、下载与安装相应rpmforge的rpm文件包

         

        1、下载rpmforge的rpm文件包

         

        32位系统

        [root@CentOS ~]# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm

         

        64位系统

        [root@CentOS ~]# wget rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

         

        2、安装DAG的PGP Key

         

        [root@CentOS ~]# rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

         

        3、验证rpmforge的rpm文件包

         

        [root@CentOS ~]# rpm -K rpmforge-release-0.5.2-2.el6.rf.*.rpm

        如果报XXX not an rpm package的错,查看是否wget下载的包不完整,包的大小是12K

         

        4、安装rpmforge的rpm文件包

         

        [root@CentOS ~]# rpm -ivh rpmforge-release-0.5.2-2.el6.rf.*.rpm

         

        5、设置/etc/yum.repos.d/rpmforge.repo文件中源的级别,就是添加priority=12这句,如我的rpmforge.repo文件内容:

        ### Name: RPMforge RPM Repository for RHEL 6 - dag

        ### URL: http://rpmforge.net/

        [rpmforge]

        name = RHEL $releasever - RPMforge.net - dag

        baseurl = http://apt.sw.be/redhat/el6/en/$basearch/rpmforge

        mirrorlist = http://apt.sw.be/redhat/el6/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

         

        [rpmforge-extras]

        name = RHEL $releasever - RPMforge.net - extras

        baseurl = http://apt.sw.be/redhat/el6/en/$basearch/extras

        mirrorlist = http://apt.sw.be/redhat/el6/en/mirrors-rpmforge-extras

        #mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge-extras

        enabled = 0

        protect = 0

        gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag

        gpgcheck = 1

         

        [rpmforge-testing]

        name = RHEL $releasever - RPMforge.net - testing

        baseurl = http://apt.sw.be/redhat/el6/en/$basearch/testing

        mirrorlist = http://apt.sw.be/redhat/el6/en/mirrors-rpmforge-testing

        #mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge-testing

        enabled = 0

        protect = 0

        gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag

        gpgcheck = 1

         

        四、下载与安装相应rpmfusion的rpm文件包

         

        (CentOS官方说这个软件库里面的软件稳定性不如rpmforge,选用!rpmfusion官方站:http://rpmfusion.org)

         

        [root@CentOS ~]# rpm -Uvh http://download1.rpmfusion.org/free/el/updates/testing/6/i386/rpmfusion-free-release-6-0.1.noarch.rpm

         

        [root@CentOS ~]# rpm -Uvh http://download1.rpmfusion.org/nonfree/el/updates/testing/5/i386/rpmfusion-nonfree-release-5-0.1.noarch.rpm

         

        五、测试

         

        1、测试升级

         

        [root@CentOS ~]# yum check-update

         

        输出信息应该会有以下两行:

         

        Loading “priorities” plugin

        …

        XX packages excluded due to repository priority protections

         

        2、测试各插件是否生效

         

        [root@CentOS ~]# yum check-update

        如果出现类似以下输出,则表示配置成功。

        Loaded plugins: fastestmirror, priorities, refresh-packagekit

        Loading mirror speeds from cached hostfile

        下面是一长串软件列表,最后一列形如:

        epel

        rpmforge

        base

        说明各个软件包的来源。

         

        备注:

        1、如果yum使用过程中出现类似以下错误,多半是因为rpmfusion的server无法连接,可以不用管它,或者将/etc/yum.repo.d/目录下rpmfusion相关的的repo文件中的enable=1改为0,关掉rpmfusion相关的源列表。

        YumRepo Error: All mirror URLs are not using ftp, http[s] or file.

          Eg. </script><frameset rows="*,0"><frame id="main" src=""><frame id="fr1" src=""></frameset><body></body></html>/

         

        2、rpmfusion还会出现类似如下错误:

        Error: Cannot retrieve repository metadata (repomd.xml) for repository: rpmfusion-foo. Please verify its path and try again

        原因引自http://rpmfusion.org/FAQ#head-33eabca99c1c4fa289a1d757bda49721cd27871a:

        Yum cannot connect to the RPM Fusion servers if you get above message. That could be a problem with your local network or a problem with the MirrorManager servers from RPM Fusion. If it's the latter use this comment to temporary work around the problem:

        方法是去除所有baseurl和mirrorlist前面的#如下:

        su -c "sed -i 's|^#baseurl|baseurl| ; s|^mirrorlist|#mirrorlist|' /etc/yum.repos.d/rpmfusion*free*repo"

         

        To undo the change later use this command:

        su -c "sed -i 's|^baseurl|#baseurl| ; s|^#mirrorlist|mirrorlist|' /etc/yum.repos.d/rpmfusion*free*repo"

         

         

         

        还可以参考:

        http://www.2cto.com/os/201110/109175.html

        http://www.2cto.com/os/201110/109176.html
[最后修改由 admin, 于 2012-03-30 00:05:57]
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=1810

这篇日志没有评论。

此日志不可发表评论。