天天看點

yum無法正常使用的解決辦法

方法一:

解決了什麼問題:一鍵式更新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

繼續閱讀