Rocky Linux/Centos的跨大版本直接yum/dnf更新

理论上redhat系列较新的版本都可以这样更新,使用旧版本yum的发行版大概也可以。下面以 rocky linux 8.x 直接更新成rocky linux 9.x 示例

1. 先安装上基础包(release,repos,gpg-key)其包文件名,可以到该目录下查看,因为这几个包名里的版本号会随时更新。

dnf install https://download.rockylinux.org/pub/rocky/9/BaseOS/x86_64/os/Packages/r/rocky-release-9.2-1.6.el9.noarch.rpm
dnf install --skip-broken https://download.rockylinux.org/pub/rocky/9/BaseOS/x86_64/os/Packages/r/rocky-repos-9.2-1.6.el9.noarch.rpm
dnf install --skip-broken https://download.rockylinux.org/pub/rocky/9/BaseOS/x86_64/os/Packages/r/rocky-gpg-keys-9.2-1.6.el9.noarch.rpm

2.执行更新

dnf --releasever=9 --allowerasing --setopt=deltarpm=false distro-sync

如果期间有报 GPG 错误,可以在本行命令中加上 --nogpgcheck 参数,不检查 gpg

3. 重建rpm数据库

rpm --rebuilddb

4. 重启 reboot

参考  https://www.starwindsoftware.com/blog/upgrade-from-rocky-linux-8-x-to-rocky-linux-9-0

可能存在的问题

a. 如果yum报如下的警告消息

 Problem 1: conflicting requests
- nothing provides module(platform:el8) needed by module mysql:8.0:8080020230517025647:fd72936b.x86_64
Problem 2: conflicting requests
- nothing provides module(platform:el8) needed by module perl:5.26:8050020211109115414:b4937e53.x86_64
...
 Problem 6: conflicting requests
- nothing provides module(platform:el8) needed by module python36:3.6:8080020230329212447:683b2e54.x86_64
Problem 7: conflicting requests
- nothing provides module(platform:el8) needed by module python38:3.8:8080020230625053205:0d9ba776.x86_64
Problem 8: conflicting requests
- nothing provides module(platform:el8) needed by module python39:3.9:8080020230703194939:aed85c85.x86_64

应该是以前设置过一些 yum module,这些module在新版本里已经无效,也就是在 /etc/dnf/modules.d/ 下有相关模块的配置文件,删掉对应的文件就是了,再运行 yum check 时就没了。或者 运行 module reset mysql 等相应的模块也可。

CentOS服务器安装后一系列配置参考(CentOS 6.x/CentOS 7)

iptables

CentOS 官方iptables规则:开启ssh端口,允许icmp/ping,不接受其它连接;拒绝FORWARD转发。这是科学的,如果有需要开放的端口再做手工开启。

如果没有默认规则文件 /etc/sysconfig/iptables ,可见自行yum安装 yum install iptables-services,然后 service iptables restartsystemctl restart iptables 加载默认规则,通过iptables命令修改过规则后  service iptables save 保存规则。默认配置文件如下,可参考使用。

# Generated by iptables-save v1.4.7 on Sat Dec 17 10:11:38 2011
# Manual customization of this file is not recommended.
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

sshd: 端口

ssh的服务器端,重要性不需多讲。

其主配置文件 /etc/ssh/sshd_config  (注意不是 /etc/ssh/ssh_config),下面sshd相关配置都在该文件上修改

改一下监听端口,虽然刻意扫描你,还是没的跑,但起码隐藏了一点点。大概13行,Port指令,默认是注释掉的,取消注释,将其后端口号22改成你想要改的,下面以12345为例。注意不要超过65535,不要使用其它已监听端口

Port 12345

[至关重要] iptables里打开相关端口,不要断开当前连接、重启sshd 服务,保存iptables配置到磁盘(以备下次开机时自动生效)

# iptables -I INPUT 4 -m state --state NEW -p tcp --dport 12345 -j ACCEPT

再开一个ssh客户端测试连接,确保改后的端口可以连接。(即使已改过端口,当前连接也还是会保持的)

指定自定义端口的ssh连接: ssh -p 12345  username@your.host.ip

sshd: 用户白名单

限制一下允许通过ssh远程登录的用户名(白名单),可以在文件结尾增加如下一行

AllowUsers user1 user2 user3

其中的user1 user2 user3 是允许通过ssh远程登录的用户,多个用户使用空格分隔。当然,你要事先创建这些普通用户,不然下次就连不上了。

sshd: 禁止root用户直接通过ssh登录

被暴力破解root密码是一件经常遇到的事情,所以严重推荐禁止掉,尤其是使用默认22端口时。增加下一行配置

PermitRootLogin no

日期时间的自动同步

首先确保rdate已安装,使用美国授时中心服务器,加入到crontab,每周日同步一次

# crontab -e
* * * * 0 rdate -s time.nist.gov

详细可参考 linux下日期时间自动同步设置(rdate,ntpdate两种方法)

yum源

开启epel源

CentOS官方yum默认包含了epel-release的yum源,直接安装即可。

yum install epel-release

排除某些rpm包

编辑yum主配置文件 /etc/yum.conf ,在[main] 节点里增加一行exclude指令。比如启用第三方内核时,运行yum更新时,若kernel*有更新,默认内核就会变成官方内核;为避免这个麻烦,可以把kernel*包从yum更新中排除掉。排除多个包可以空格隔开列在同一行,示例如下

exclude=kernel* httpd*

nginx

如果使用nginx的话,可以使用nginx的官方yum源。当然里面只有nginx,没有别的包,所以不会破坏centos原装包的依赖关系。创建/etc/yum.repos.d/nginx.repo内容如下

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key

详细参考nginx官方yum源说明 

 

SELinux

这货很强悍,然而有时也很麻烦,尤其是不够熟的时候,可以考虑关闭,配置在文件 /etc/sysconfig/selinux 中设置 SELINUX=disabledSELINUX=permissive

Grub 2 及第三方内核相关的设置

CentOS 7的Grub2 改变有点大,设置被拆到个文件中,比如 /boot/grub2/grub.cfg, /etc/default/grub/boot/grub2/grubenv 等。注意不要手工编辑grub.cfg。

如果使用的第三方内核,要注意指定默认启动的内核。默认情况下/etc/default/grub里设置了 GRUB_DEFAULT=saved ,要通过/boot/grub2/grubenv指定,但也不要手工修改该文件,而是使用 grub2-set-default 命令的设置。如下三行 1) 列出grub.cfg里的menuentry名称,  2) 设置默认项 grub2-set-default   3) 查看grubenv确认默认项saved_entry

grep "^menuentry" /boot/grub2/grub.cfg |cut -d "'" -f2
grub2-set-default "{menuentry 名称}"
grub2-editenv list

Grub2 参考CentOS 官方文档: https://wiki.centos.org/zh/HowTos/Grub2

开启BBR

实体机/KVM/Xen的VPS下,使用第三方内核开启BBR

本节适用实体机或KVM、Xen虚拟化下的VPS(此方法不支持OpenVZ)。CentOS7官方内核较老,不支持BBR,可使用 ELRepo Project 预编译的内核。其中rpm包url可能会不定期更新,以官方最新为准。(另CentOS6可使用Fedora Copr上项目kernel-el6/

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml -y

参考上节Grub2默认内核做设置,完成后重启,确认内核生效无误。然后再继续。这里最好。

echo 'net.core.default_qdisc=fq' | tee -a /etc/sysctl.conf
echo 'net.ipv4.tcp_congestion_control=bbr' | tee -a /etc/sysctl.conf
sysctl -p

完成后,下面命令确认生效

sysctl net.ipv4.tcp_available_congestion_control
sysctl -n net.ipv4.tcp_congestion_control
lsmod | grep bbr

其输出应该是 net.ipv4.tcp_available_congestion_control = bbr cubic renobbr 及 tcp_bbr 16384 0 (后一行输出的数字可能不同)。

至此bbr启用完成。但,强烈推荐,参考前节“排除某些rpm包”,把kernel* 包从yum更新中排除掉;否则,下次yum更新后,grub默认内核将换成centos官方内核,bbr就没了。

详细可参看 https://www.vultr.com/docs/how-to-deploy-google-bbr-on-centos-7

魔改版BBR(OpenVZ VPS下可用)

基于OpenVZ的 VPS上面方法不支持,得使用魔改版BBR,要求CentOS 7以上(事实上CentOS 6(x64)也可以,但必须升级glibc),一键安装脚本,照提示操作即可。

curl https://raw.githubusercontent.com/linhua55/lkl_study/master/get-rinetd.sh | bash

运行中会提示输入端口号,如有多个端口号用空格隔开(不支持端口段)。如需要增减端口,可修改配置文件 /etc/rinetd-bbr.conf

详细参看作者的github项目

MySQL-Server

配置参考 一份生产环境下MySQL服务配置优化参考样本 (请按硬件及负载酌情修改)

备份脚本,加入到crontab中,定时执行。注意其中备份存储目录、待备份数据库列表、及备份用户账号密码

#!/bin/bash
# Program:
#      auto backup mysql database
# History:
# 2012/05/14    fengyqf First release
#backup folder, with the last slash "/"
backup_folder="/home/user/backup/mysql/"
filename=`date +_%Y%m%d_%N`

for db in db1 db2 db3
do
mysqldump -hlocalhost --opt -e --max_allowed_packet=1048576 --net_buffer_length=16384 -uroot -pYourMysqlRootPassword $db |gzip > $backup_folder$db$filename.sql.gz
done

其它置参考

ulimit, 文件描述符 http://www.path8.net/tn/archives/2024

sysctl, 内核优化 #TODO#

 

供centos用的yum源(redhat, scientific)/不定期更新

简介

redhat/centos系列是追求稳定性的改造版,官方收纳的软件包很有限。实际使用中,我们要么自己编译,要么使用第三方编译好的二进制版;为简便起见我们常常选择后者。第三方yum源纳入包的标准不一,有些追求稳定,像epel,有些则求新。对于求稳定的朋友,建议安装过需要的软件后,卸载(可以将.epo文件改名备份)这些第三源,以免造成系统包被替换。像epel这样连centos官方都推荐的源,还有nginx官方源这种只有单一少数几个包的源,可以长期保留。

epel

这个不用多说了。

sclo(sclo-rh)

redhat/centos本身附带的一个源,不过默认没有安装。  yum install centos-release-scl

它包含了一系列版本较新的软件包,将安装在/opt/rh目录中,因此可以不影响系统本身的包。比如python, nodejs, perl, go等,可参看 http://mirrors.ustc.edu.cn/centos/7/sclo/x86_64/rh/Packages/r/

elrepo

elrepo 支持centos/redhat 5,6,7系列,大量的内核模块源,如hfsplus支持等。

在yum.repo配置里,部分选项默认没有启用,需要自行启用

http://elrepo.org/tiki/About

li.nux.ro/nux

目前有rhel/centos6及7两个版本的rpm/yum源,它需要依赖epel源。

使用说明,简洁,不啰嗦,http://li.nux.ro/repos.html

rpmfusion

(待补充)

atrpms

据说atrpms会替换系统包,毕竟rhel/epel的版本经常太老

更多参考CentOS官方wiki文档 https://wiki.centos.org/zh/AdditionalResources/Repositories

yum更新遇到依赖错误的处理经验总结

redhat系列linux系统的yum,有时会出现错误的依赖,用linux早期,遇到该类问题简直是束手无策,无奈之下会在yum的“教唆“下使用“--skip-broken”参数,有时确实可以解决问题,但有时的后果,可以把系统玩儿坏,下次启动无法启动,或出现其它莫名其妙的问题。

列一个典型的错误依赖消息如下:

--> 正在处理依赖关系 /usr/sbin/ldconfig,它被软件包 libva1-1.3.1-11.el7.x86_64 需要
--> 正在处理依赖关系 /usr/sbin/ldconfig,它被软件包 libmad0-0.15.1b-4.el7.x86_64 需要
--> 正在处理依赖关系 /usr/sbin/ldconfig,它被软件包 librtmp0-2.3-1.el7.x86_64 需要
--> 正在处理依赖关系 /usr/sbin/ldconfig,它被软件包 libx264_142-0.142-20_20140406.2245.el7.x86_64 需要
--> 正在处理依赖关系 /usr/sbin/ldconfig,它被软件包 libxvidcore4-1.3.2-15.el7.x86_64 需要
.......
错误:软件包:libmad0-0.15.1b-4.el7.x86_64 (@atrpms)
          需要:/usr/sbin/ldconfig
          正在删除: glibc-2.17-55.el7_0.1.i686 (@updates)
              未找到
          更新,由: glibc-2.17-55.el7_0.3.i686 (updates)
              未找到
错误:软件包:librtmp0-2.3-1.el7.x86_64 (@atrpms)
          需要:/usr/sbin/ldconfig
          正在删除: glibc-2.17-55.el7_0.1.i686 (@updates)
              未找到
          更新,由: glibc-2.17-55.el7_0.3.i686 (updates)
              未找到
 您可以尝试添加 --skip-broken 选项来解决该问题
 您可以尝试执行:rpm -Va --nofiles --nodigest

看到了最后两行了吧,通常别听信它,小心!

为了优雅的处理类似错误依赖的问题,要搞先了解一下该问题的原因。通常是在自己手动安装了一些非官方rpm包,或使用了多个yum源所致。尤其是升级安装了新版本的包。例如,在centos里为了安装某些软件而使用fedora里的包升级了系统自带的包。

个人经验如下:

先移除/etc/yum.repo.d/下非系统官方的源,备份到其它目录里,处理好问题后还移回来继续用。

yum list 查看系统都有哪些源的包,除了@base @anaconda @updates 之外的,都要留意一下,按“靠谱”程度从低到高逐渐移除。这里的“靠谱程度”,要凭一些经验的。 如本文前面列出错误依赖的这个例子,本人用了好多个源的包,@epel @atrpms  @nux-dextop @google-chrome 等这几个第三方源,epel是很高质量的,google-chrome 只有chrome浏览器,其它几个就是不太靠谱的,先移除它们。

检查yum list列出的包名,是否用了fedora,或非本机架构的等的包(如x64系统下686的包),yum erase移除它们。卸载包时,注意着,别把重要的系统包卸载了。千万别这样带-y 参数据 yum erase  {包名}  -y,yum erase 卸载某个包时,系统提示会提示都移除哪些包,如果看着不对劲就按 N

最后,你会找到出问题的那个包名,即提示错误依赖的信息
--> 正在处理依赖关系 /usr/sbin/ldconfig,它被软件包 libbluray1-0.4.0-6.el7.x86_64 需要
--> 解决依赖关系完成
错误:软件包:libbluray1-0.4.0-6.el7.x86_64 (@atrpms)
          需要:/usr/sbin/ldconfig
          正在删除: glibc-2.17-55.el7_0.1.x86_64 (@updates)
              未找到
          更新,由: glibc-2.17-55.el7_0.3.x86_64 (updates)
              未找到
 您可以尝试添加 --skip-broken 选项来解决该问题
 您可以尝试执行:rpm -Va --nofiles --nodigest

会类似上面所示,只是少数一两个包,尝试卸载一下看看

[root@fsc ~]# rpm -e libbluray1-0.4.0-6.el7.x86_64
错误:依赖检测失败:
    libbluray.so.1()(64bit) 被 (已安裝) gvfs-1.16.4-7.el7.x86_64 需要
    libbluray.so.1()(64bit) 被 (已安裝) gvfs-fuse-1.16.4-7.el7.x86_64 需要
    libbluray.so.1()(64bit) 被 (已安裝) gvfs-afc-1.16.4-7.el7.x86_64 需要
    libbluray.so.1()(64bit) 被 (已安裝) gvfs-gphoto2-1.16.4-7.el7.x86_64 需要
    libbluray.so.1()(64bit) 被 (已安裝) gvfs-goa-1.16.4-7.el7.x86_64 需要
    libbluray.so.1()(64bit) 被 (已安裝) gvfs-mtp-1.16.4-7.el7.x86_64 需要
    libbluray.so.1()(64bit) 被 (已安裝) gvfs-smb-1.16.4-7.el7.x86_64 需要
    libbluray.so.1()(64bit) 被 (已安裝) gvfs-afp-1.16.4-7.el7.x86_64 需要
    libbluray.so.1()(64bit) 被 (已安裝) gvfs-archive-1.16.4-7.el7.x86_64 需要
    libbluray.so.1()(64bit) 被 (已安裝) libbluray-0.4.0-6.el7.x86_64 需要
    libbluray1 = 0.4.0-6.el7 被 (已安裝) libbluray-0.4.0-6.el7.x86_64 需要

那查查系统里该包是什么版本吧 rpm -q {包名}

上面例子里,该包是atrpms源的包,比centos源里的包新。回忆时当时为了安装smplayer,装了一系列atrpms的包。而印象中,atrpms源有时会升级centos的包,所以就造成了yum update 升级系统时造成错误依赖。到centos镜像里下载这个rpm包,rpm --force  -Uvh {包文件路径}覆盖安装一下,然后再yum更新试试。

如果没有问题,那就好了。再把yum 源的配置文件移回去,重新yum makecache,然后根据刚才卸载的包的记录,把它们安装上;可参考history 命令的记录.

大概就是这样,写得有点乱。

centos 6下通过yum安装apache模块mod_h264_streaming, mod_flvx, mod_xsendfile等

centos因为上游redhat ep的原因,自带的包相对少一些,centos官方也建议可以安装一些第三方的yum源,如rpmfusion,epel等,本文所说的apache模块,rpmfusion,epel是支持的。

安装epel, rpmfusion源。

参看rpmfusion官方的“重要提示” (http://rpmfusion.org/Configuration) 说,安装rpmfusion前要先启用epel源

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

yum makecache

rpm -ivh http://download1.rpmfusion.org/free/el/updates/6/i386/rpmfusion-free-release-6-1.noarch.rpm

rpm -ivh http://download1.rpmfusion.org/nonfree/el/updates/6/i386/rpmfusion-nonfree-release-6-1.noarch.rpm

h264模块是非自由(nonefree)软件,要启用nonefree源才可以。不是“非免费”,不收钱的~~

上面的rpm文件,可能会随着新版本的出现而有所改变,因此,请参看其官方的安装说明操作。

装过上述两个yum源后,然后直接yum install即可

yum install mod_xsendfile

yum install mod_h264_streaming

yum install mod_flvx

 

 

 

 

yum依赖错误处理:清理重复的rpm包

使用fedora/redhat/centos系列的linux发行版,有时会因为某些非正常原因(异常断电居多)造成yum/rpm错误,表现是在运行yum时出现依赖包错误,仔细查看其相关包,会发现这些包是矛盾的版本号依赖。这种情况下,通常就是本机rpm数据库里记录了某个rpm包多个版本(可能事实上只装了一个版本),通过rpm -q {包名} 会查出来多个版本,例如

[root@fscfedora feng]# rpm -q audit
audit-2.3.2-1.fc20.x86_64
audit-2.3.3-1.fc20.x86_64

我们需要删除其中一个包,通常删除旧版本的包,命令: rpm -e {带版本号的完整包名}。

但这时通过yum或rpm -e移除该包时,有时仍旧出现依赖错误。

这是可以通过rpm 的 --noscript参数,硬性移除该包(指定完整的版本号),例如

[root@fscfedora feng]# rpm -e --noscripts audit-2.3.2-1.fc20.x86_64

然后再检查该包,会发现少了已删除的那个。然后继续yum吧,如果还有类似情况,同法处理之。

tips,我们还可以运行 yum check 检查是否有类似的错误包。

------------------------

参考脚本:

[root@fscfedora feng]# rpm -q audit
audit-2.3.2-1.fc20.x86_64
audit-2.3.3-1.fc20.x86_64
[root@fscfedora feng]# rpm -e --noscripts audit-2.3.2-1.fc20.x86_64
[root@fscfedora feng]# rpm -q audit
audit-2.3.3-1.fc20.x86_64
[root@fscfedora feng]#

典型错误示例:

--> 解决依赖关系完成
错误:软件包:glibc-devel-2.18-11.fc20.x86_64 (@anaconda)
需要:glibc-headers = 2.18-11.fc20
正在删除: glibc-headers-2.18-11.fc20.x86_64 (@anaconda)
glibc-headers = 2.18-11.fc20
更新,由: glibc-headers-2.18-12.fc20.x86_64 (updates)
glibc-headers = 2.18-12.fc20
 您可以尝试添加 --skip-broken 选项来解决该问题
** 发现 19 个已存在的 RPM 数据库问题, 'yum check' 输出如下:
1:NetworkManager-0.9.9.0-24.git20131003.fc20.x86_64 有缺少的需求 NetworkManager-glib(x86-64) = ('1', '0.9.9.0', '24.git20131003.fc20')
1:NetworkManager-0.9.9.0-28.git20131003.fc20.x86_64 是 1:NetworkManager-0.9.9.0-24.git20131003.fc20.x86_64 的副本
audit-2.3.2-1.fc20.x86_64 有缺少的需求 audit-libs = ('0', '2.3.2', '1.fc20')

 

centOS 6下通过yum安装php-mssql以使php支持microsoft sql server连接

centos 6下,安装fedoraproject的epel-release源,即可以安装php的mssql模块。

注:epel是fedora开发组为centos开发的附加软件yum源,可以弥补centos上游redhat里缺少的软件包。epel的质量还是相当之高的。

[root@c12 html]# rpm -ivh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
[root@c12 html]# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
[root@c12 html]# yum install php-mssql
[root@c12 html]# /etc/init.d/httpd graceful

完成。

phpinfo中可以看到mssql的信息

mssql模块实际还是FreeTDS,其功能主要是在Liunx下能够访问Sybase及MS SQL,官方网站是:http://www.freetds.org/ 。当然也可以手工编译mssql模块到php中,不过通过yum更简单一点。

关于epel源,参看这里 http://fedoraproject.org/wiki/EPEL/zh-cn

本方法来源于centOS 6更新yum以便可裝php-mssql (http://blog.hubin411.com/2011/10/13/centos-6%e6%9b%b4%e6%96%b0yum%e4%bb%a5%e4%be%bf%e5%8f%af%e8%a3%9dphp-mssql/) 阅读该页面请自备梯子。或参看如下转录的核心部分:

tep 1:
# wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm    //取得rpm檔案

step 2:
# rpm -ivh epel-release-6-5.noarch.rpm    //安裝取得的rpm檔案

step 3:
# yum update    //更新yum的資源庫

step 4:
# yum install php-mssql    //安裝php-mssql

step 5:
# service httpd restart    //重啟apache伺服器

centos 6.2 yum 升级时提示no module named yum

很怪的问题,同一个iso镜像,昨天安装好好的,这次安装后,运行yum update时,报错了 no module named yum

消息内容说是python的问题,看网上别人是使用过程中突然出现了 no module named yum 这样问题,而我是刚安装就被报 no module named yum,难道是人品问题?

参考网上的说法,把iso镜像挂上,到里面的rpm目录里,把rpm-xxxxxx.rpm的几个包重新安装一遍,rpm -ivh xxxxxxx,然后再运行yum update 就好了。

很是怪异的问题。

RPMforge, 很不错的centos RPM/yum源

centos下使用rpmfusion,好像没有smpalyer,使用fedora的rpm包应该是可以的,但一个一个包下载,还得手工处理包依赖关系,非常麻烦。

发现一个RPMforge的源 http://apt.sw.be/,centos官方也有推荐使用;不过它没有国内镜像,速度可能不能保证。但还是值得一试。

以下来自centos官方wiki: http://wiki.centos.org/AdditionalResources/Repositories/RPMForge?action=show&redirect=Repositories%2FRPMForge

RPMforge is a collaboration of Dag and other packagers. They provide over 5000 packages for CentOS, including wine, vlc, mplayer, xmms-mp3, and other popular media tools. It is not part of Red Hat or CentOS but is designed to work with those distributions. See also Using RPMforge and Repoforge.

 Note: Because this repository is NOT part of CentOS, you should direct support questions to its maintainers at the Repoforge Users mailing list.

Packages are supplied in RPM format and in most cases are ready to use. The default RPMforge repository does not replace official CentOS base packages.

centos 6 中添加rpmforge源

 rpm -ivh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
 yum clean all
 yum makecache

更多参考http://wiki.centos.org/AdditionalResources/Repositories/RPMForge?action=show&redirect=Repositories%2FRPMForge#head-f0c3ecee3dbb407e4eed79a56ec0ae92d1398e01