在 CentOS/RHEL 等 RPM 系系統上,嘗試安裝 MySQL-client-4.1.16 時遭遇檔案衝突:
file /usr/bin/mysql from install of MySQL-client-4.1.16-1.glibc23 conflicts with file from package mysql-3.23.54a-11
系統預裝的舊版 mysql-3.23.54a 與新版客戶端在二進制文件、man 頁等路徑上完全重疊,導致無法正常安裝或升級。
# 查詢已安裝的 MySQL 相關套件
rpm -qa | grep -i mysql
# 強制卸載(不檢查依賴)
rpm -e --nodeps mysql-3.23.54a-11
rpm -e --nodeps MySQL-server-3.23.54a-11
# ... 依次移除所有舊套件
# 強制重新安裝(覆蓋文件)
rpm -i --replacepkgs MySQL-client-4.1.16-1.glibc23.rpm
# 或忽略依賴直接安裝新版
rpm -i --nodeps MySQL-client-4.1.16-1.glibc23.rpm
風險提示: --nodeps 可能導致依賴 MySQL 庫的其他軟體(如 PHP、Perl DBD::mysql)運行異常,生產環境慎用。
# 測試升級可行性(不實際執行)
rpm -Uvh --test MySQL-*.rpm
# 正式升級全套件
rpm -Uvh MySQL-server-4.1.16.rpm MySQL-client-4.1.16.rpm MySQL-shared-4.1.16.rpm ...
-U 參數會自動處理「舊版移除 → 新版安裝」流程,並保留配置文件(通常備份為 .rpmsave)。
mysql-*,MySQL 官方 RPM 改為 MySQL-*(大小寫不同),RPM 視為不同套件,不自動替換。/usr/bin/、man 頁至 /usr/share/man/,無版本隔離機制。yum install mysql-community-server 自動解決依賴與升級路徑。mysql:8.0 映像,完全隔離宿主環境,版本切換零成本。.tar.xz 解壓至 /opt/mysql/,配置 my.cnf 與 systemd 單元,避開套件管理器限制。RPM 衝突本質是「同路徑不同版本文件無法共存」。生產環境首選 yum/dnf upgrade 或官方倉庫;若必須手動處理,請完整備份數據目錄(/var/lib/mysql)後,使用 rpm -e --nodeps 徹底清理舊套件再全新安裝,並同步升級所有 MySQL-* 相關套件以保持版本一致性。