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