方法一:
解決了什麼問題:一鍵式更新yum源,省去了複雜的指令和步驟
注:所有執行的腳本都需要root身份來執行,執行方法:以root身執行指令:bash xxx.sh
功能:更新系統的yum源為163的yum源
适用系統版本:線上centos5/6系列,redhat5系列,相容32位和64位
vim update_yum_source.sh
#!/bin/bash
#########################################
#Function: update yum source
#Usage: bash update_yum_source.sh
#Author: Customer service department
#Company: Alibaba Cloud Computing
#Version: 2.1
check_os_release()
{
while true
do
os_release=$(grep "Red Hat Enterprise Linux Server release" /etc/issue 2>/dev/null)
os_release_2=$(grep "Red Hat Enterprise Linux Server release" /etc/redhat-release 2>/dev/null)
if [ "$os_release" ] && [ "$os_release_2" ]
then
echo "$os_release"
break
fi
os_release=$(grep "CentOS release" /etc/issue 2>/dev/null)
os_release_2=$(grep "CentOS release" /etc/*release 2>/dev/null)
break
done
}
modify_rhel5_yum()
rpm --import http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-5
cd /etc/yum.repos.d/
wget http://mirrors.163.com/.help/CentOS-Base-163.repo -O CentOS-Base-163.repo
sed -i '/mirrorlist/d' CentOS-Base-163.repo
sed -i 's/\$releasever/5/' CentOS-Base-163.repo
yum clean metadata
yum makecache
cd ~
modify_rhel6_yum()
rpm --import http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6
sed -i '/\[addons\]/,/^$/d' CentOS-Base-163.repo
sed -i 's/\$releasever/6/' CentOS-Base-163.repo
sed -i 's/RPM-GPG-KEY-CentOS-5/RPM-GPG-KEY-CentOS-6/' CentOS-Base-163.repo
##########start######################
#check lock file ,one time only let the script run one time
LOCKfile=/tmp/.$(basename $0)
if [ -f "$LOCKfile" ]
then
echo -e "\033[1;40;31mThe script is already exist,please next time to run this script.\n\033[0m"
exit
else
echo -e "\033[40;32mStep 1.No lock file,begin to create lock file and continue.\n\033[40;37m"
touch $LOCKfile
fi
#check user
if [ $(id -u) != "0" ]
echo -e "\033[1;40;31mError: You must be root to run this script, please use root to install this script.\n\033[0m"
rm -rf $LOCKfile
exit 1
os_type=$(check_os_release)
if [ "X$os_type" == "X" ]
echo -e "\033[1;40;31mOS type is not RedHat or CentOS,So this script is not executede.\n\033[0m"
exit 0
echo -e "\033[40;32mThis OS is $os_type.\033[40;37m"
echo "$os_type" |grep 5 >/dev/null
if [ $? -eq 0 ]
modify_rhel5_yum
rm -rf $LOCKfile
exit 0
echo "$os_type"|grep 6 >/dev/null
modify_rhel6_yum
rm -rf $LOCKfile
執行方法:以root身執行指令,bash update_yum_source.sh
附 加:
Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
在網上查了查,解決辦法都是編輯/etc/yum.repos.d/epel.repo,把基礎的恢複,鏡像的位址注釋掉
#baseurl
mirrorlist
改成
baseurl
#mirrorlist
##本文内容摘自:
<a href="http://blog.chinaunix.net/uid-26642180-id-3486741.html" target="_blank">http://blog.chinaunix.net/uid-26642180-id-3486741.html</a>
方法二:
1. cd /etc/yum.repos.d
2. mv CentOS-Base.repo CentOS-Base.repo.backup
3. wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
4. mv CentOS6-Base-163.repo CentOS-Base.repo
5.yum clean all
本文轉自奔跑在路上部落格51CTO部落格,原文連結http://blog.51cto.com/qiangsh/1565082如需轉載請自行聯系原作者
qianghong000