全部博文(56)
分类: LINUX
2013-02-04 12:58:32
最近公司刚刚购买了一台阿里云的RHEL5.4的云主机,
但是在使用过程中发现yum 安装很多软件都无法使用,
最后找到很简单的官方的解决办法:
解决了什么问题:一键式更新yum源,省去了复杂的命令和步骤
注:所有执行的脚本都需要root身份来执行,执行方法:以root身执行命令:bash xxx.sh
执行方法:以root身执行命令,bash 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)
if [ "$os_release" ] && [ "$os_release_2" ]
then
echo "$os_release"
break
fi
break
done
}
modify_rhel5_yum()
{
rpm --import
cd /etc/yum.repos.d/
wget -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
cd /etc/yum.repos.d/
wget -O CentOS-Base-163.repo
sed -i '/mirrorlist/d' CentOS-Base-163.repo
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
yum clean metadata
yum makecache
cd ~
}
##########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" ]
then
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
fi
os_type=$(check_os_release)
if [ "X$os_type" == "X" ]
then
echo -e "\033[1;40;31mOS type is not RedHat or CentOS,So this script is not executede.\n\033[0m"
rm -rf $LOCKfile
exit 0
else
echo -e "\033[40;32mThis OS is $os_type.\033[40;37m"
echo "$os_type" |grep 5 >/dev/null
if [ $? -eq 0 ]
then
modify_rhel5_yum
rm -rf $LOCKfile
exit 0
fi
echo "$os_type"|grep 6 >/dev/null
if [ $? -eq 0 ]
then
modify_rhel6_yum
rm -rf $LOCKfile
exit 0
fi
fi
rm -rf $LOCKfile