首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Linux 下 MySQL RPM 包衝突徹底解決:從依賴地獄到乾淨重裝

     編輯:MySQL 綜合教學

在 CentOS/RHEL 系統上以 RPM 方式升級 MySQL 時,常遭遇「MySQL conflicts with mysql-5.0.22」等依賴衝突,甚至因共享庫 libmysqlclient.so.15 被多個套件依賴而無法直接移除。本文記錄一次完整的衝突排查與清理實戰,提供可復用的標準化流程。

衝突現場


rpm -Uvh MySQL-server-community-5.0.67-0.rhel5.i386.rpm
error: Failed dependencies:
 MySQL conflicts with mysql-5.0.22-2.1.0.1.x86_64
 MySQL conflicts with mysql-5.0.22-2.1.0.1.i386
 MySQL-server conflicts with mysql-server-5.0.22-2.1.0.1.x86_64

分階段清理流程

階段一:查詢現有套件


rpm -q mysql
# 輸出兩行:mysql-5.0.22-2.1.0.1 (x86_64 / i386 並存)

階段二:嘗試常規移除(失敗)


rpm -e --nodeps mysql-5.0.22-2.1.0.1
error: "mysql-5.0.22-2.1.0.1" specifies multiple packages

階段三:強制移除所有同名套件(再次失敗)


rpm -e --allmatches mysql-5.0.22-2.1.0.1
error: Failed dependencies:
 libmysqlclient.so.15()(64bit) is needed by perl-DBD-MySQL-3.0007-1.fc6.x86_64
 libmysqlclient.so.15()(64bit) is needed by mysql-server-5.0.22-2.1.0.1.x86_64
 ...(共 20+ 個依賴項)

階段四:遞歸清理依賴鏈(關鍵突破)


# 逐個移除依賴該共享庫的套件
rpm -e perl-DBD-MySQL-3.0007-1.fc6.x86_64
rpm -e mysql-server-5.0.22-2.1.0.1.x86_64
rpm -e libdbi-dbd-mysql-0.8.1a-1.2.2.x86_64
rpm -e dovecot-1.0-1.2.rc15.el5.x86_64
rpm -e mysql-connector-odbc-3.51.12-2.2.x86_64
rpm -e MySQL-python-1.2.1-1.x86_64
# 最後清理核心套件
rpm -e --allmatches mysql-5.0.22-2.1.0.1
# 輸出:成功

階段五:安裝新版本


rpm -Uvh MySQL-server-community-5.0.67-0.rhel5.i386.rpm
# 輸出:成功

最佳實踐總結

  1. 優先使用 YUM/DNF:yum remove mysql* 會自動處理依賴拓撲,避免手動遞歸。
  2. 備份資料目錄:操作前 tar czf /backup/mysql-$(date +%F).tar.gz /var/lib/mysql。
  3. 記錄移除順序:便於新環境按序安裝相容套件(如 perl-DBD-MySQL 新版)。
  4. 考慮二進制包/源碼編譯:彈性更大,不受系統套件管理器約束。

避坑提醒: 生產環境嚴禁直接 rpm -e --nodeps 核心庫套件,極易導致殘留檔案污染新安裝。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved