1. 程式人生 > 實用技巧 >CentOS7.4使用本地yum源升級到7.6遇到的問題以及解決辦法

CentOS7.4使用本地yum源升級到7.6遇到的問題以及解決辦法

一、場景說明

客戶環境有三臺伺服器都是CentOS 7.4.1708的作業系統,現要升級為Centos 7.6 1810。
但是由於客戶環境伺服器不能聯網,所以只能以掛載ISO映象作為本地yum源的方式進行升級,下面來講升級步驟和過程中遇到的問題
阿里雲CentOS 7.6 1810的下載地址:
https://mirrors.aliyun.com/centos-vault/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso

二、開始升級

1.使用ssh工具並使用root使用者登陸作業系統

2.檢查CentOS版本

cat /etc/redhat-release

3.使用ftp工具將CentOS-7-x86_64-DVD-1810.iso檔案上傳到/root目錄

4.掛載iso檔案

mkdir /mnt/cdrom
cd /root
mount ./CentOS-7-x86_64-DVD-1810.iso /mnt/cdrom

5.備份系統repo檔案,備份完成後/root目錄檔案如下圖所示

6.編輯本地源repo檔案,以下是一條命令,請注意複製整體,按回車執行

cat << EOF > /etc/yum.repos.d/CentOS-Media.repo 
[Media] 
name=CentOS Media 
baseurl=file:///mnt/cdrom 
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 
enabled=1 
EOF

7.更新yum快取

yum clean all

yum makecache

8.更新系統

yum update





9.檢查CentOS版本,正常情況下如下圖已經更新到Centos 7.6 1810

cat /etc/redhat-release


10.重啟伺服器,重啟好後參考單機環境和叢集環境的服務驗證流程進行驗證

reboot

三、問題來了

正常情況下,使用第二部分的操作是可以直接升級作業系統的,但是由於伺服器上部署的程式使用了自己的rpm包,導致這部分rpm包的某些包和CentOS 7.6的包存在衝突。
衝突大概有一下兩種:

錯誤現象一:

錯誤:軟體包:xxxx(installed)
      需要:xxxx
      正在刪除:xxxx
      更新:xxxx


解決思路就是先解除安裝,升級完作業系統後再安裝新版本
以上圖為例我們需要先解除安裝ntp包

# 解除安裝ntp
yum remove -y ntp-4.2.6p5-22.el7.centos.x86_64
# 升級作業系統
yum update
# 安裝新版本ntp
yum install -y ntp-4.2.6p5-28.el7.centos.x86_64

具體每個伺服器都不一樣,總體思路就是先解除安裝,解除安裝到yum update可以正常執行即可,系統升級完成後再將需要安裝的新版本安裝即可。

錯誤現象二:

錯誤:軟體包:xxxx
      需要:xxxx


這種由於沒有指定具體版本的衝突,我這邊沒有處理,還是按照現象一的方案解除安裝掉在更新作業系統,只不過沒辦法安裝指定的新版本

錯誤現象三:openssl衝突


openssl是一個比較核心的系統執行庫,還是一樣的方案,先解除安裝。

yum remove -y openssl-1.0.2q-1.x86_64

但是解除安裝完成後出現了一個很嚴重的問題,yum命令直接用不了了,不要急,由於我們掛載的是DVD版本的系統映象,我們可以從映象的Packages中找到對應的rpm包直接安裝

cd /mnt/cdrom/Packages
rpm -ivh openssl-1.0.2k-16.el7.x86_64.rpm openssl-libs-1.0.2k-16.el7.x86_64.rpm

此時yum命令已經恢復了,但是新的問題來了,如果此時重啟作業系統會發現ssh連不上了,不要問我為什麼知道。其實解除安裝openssl的時候已經告訴我們openssh已經連著一塊解除安裝了,只是當時沒有注意看。
所以我們現在要將openssh先安裝回來在重啟伺服器驗證

# 安裝openssh
yum install -y openssh-server
# 啟動ssh
systemctl enable sshd
service sshd start 

此時就可以重啟伺服器了。其實應該是不用重啟伺服器的,但是為了保險還是做了一下重啟(不然ssh連線不了的問題就發現不了了0.0)

cat /etc/redhat-release
reboot