#!/bin/bash
#此脚本借鉴吴雪龙的部分优化脚本,仅针对yum源更新部分做了部分修改

#修改内容如下:

#一、创建了备份目录,将原有的repo文件备份到了该目录下
#二、给源添加了优先级插件,并定义了优先级(三方的定义为12,sohu和163的定义为1)
#三、添加了第三方源RPMforge
#四、删除了原脚本中两个无效的源
#五、修正了因CentOS大版本变更(CentOS5->CentOS6)后,uname -r | awk -F. '{print $NF}'取值错误的问题
#六、优化添加dag、epel源时的方法

#此版本仅适用于CentOS5或CentOS6,7暂时没有用到

#可以直接复制文本后保存,赋予执行权限即可


#定义基础目录
REPODIR=/etc/yum.repos.d
#创建备份目录
mkdir $REPODIR/bak
#进入repo存放目录
cd $REPODIR
#备份现有默认的网络源repo文件
cp $REPODIR/CentOS-Base.repo $REPODIR/bak/CentOS-Base.repo.bak.`date +"%Y%m%d"`
#修改网络源repo配置文件
sed -i 's/mirrorlist/#mirrorlist/g' CentOS-Base.repo
sed -i 's/#baseurl/baseurl/g' CentOS-Base.repo
sed -i 's/mirror.centos.org/mirrors.163.com/g' CentOS-Base.repo

#安装yum-priorities插件,进行repo优先级的配置
#安装完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)
yum -y install yum-priorities

#给CentOS-Base.repo文件添加优先级
if [ `cat CentOS-Base.repo | grep priority | wc -l ` -le 3 ]
then
sed -i '/gpgcheck/a priority=1' CentOS-Base.repo
fi

#修改yum的配置文件
cp /etc/yum.conf /etc/yum.conf-`date +"%Y%m%d"`
#取消gpg校验
sed -i 's/gpgcheck=1/gpgcheck=0/' /etc/yum.conf
#修改源更新期限
sed -i 's/metadata_expire=1h/metadata_expire=24h/' /etc/yum.conf

#添加dag sohu源
if ! [ -f dag-sohu.repo ]
then
cat > dag-sohu.repo <<EOF
[dag-sohu]
name = Red Hat Enterprise \$releasever – sohu.com – dag
baseurl = http://mirrors.sohu.com/dag/redhat/`uname -r | awk -F. '{print substr($4,1,3)}'`/en/\$basearch/dag
enabled = 1
gpgcheck = 0
priority=2
EOF

fi

# 添加epel@sohu源
if ! [ -f epel-sohu.repo ]
then
cat > epel-sohu.repo <<EOF
# Name: SOHU RPM Repository for Red Hat Enterprise – EPEL
# URL: http://mirrors.sohu.com/fedora-epel/
[epel-sohu]
name = Fedora EPEL \$releasever - sohu.com
baseurl = http://mirrors.sohu.com/fedora-epel/\$releasever/\$basearch
enabled = 1
gpgcheck = 0
priority=2
EOF
fi

#添加第三方源RPMforge,先判断是否已安装
#先确认是否已安装rpmforge
if [ `rpm -qa | grep rpmforge | wc -l` -gt 0 ] && [ -f rpmforge.repo ]
then
    echo "rpmforge is installed!"
elif ! [ -f rpmforge.repo ]
then
#下载与安装相应rpmforge的rpm文件包
yum -y install curl curl-devel
curl http://pkgs.repoforge.org/rpmforge-release/ >index
#获取系统大版本号
v1=`cat /etc/issue |grep CentOS| awk '{print substr($3,0,1)}'`
#获取rpm包的名称
v2=`cat index | grep CentOS-$v1 | grep x86_64 | sort -nr | sed -n '1p' | awk -Fhref\=\" '{print $2}' | awk -F\" '{print $1}'`
wget http://pkgs.repoforge.org/rpmforge-release/$v2
#安装DAG的PGP Key
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
#验证rpmforge的rpm文件包
rpm -K $v2
#安装rpm包
rpm -i $v2
#清除安装过程中产生的多余文件
rm -f mirrors*
rm -f $v2
rm -f index

fi

#清缓存,注意,如果升级过zlib包,请不要清缓存,否则会导致yum无法使用。
yum clean all
#重建cache
yum makecache
#确认repo列表
yum repolist all