我正在尝试将 MySQL 从 4.1.20 升级到 5.1.39。v4.1 通过 RPM 安装时没有任何问题,但尝试升级时会引发几个看似错误的警告,例如:
# rpm --升级 MySQL-client-5.1.39-0.glibc23.i386.rpm 警告:MySQL-client-5.1.39-0.glibc23.i386.rpm:V3 DSA 签名:NOKEY,密钥 ID 5072e1f5 错误:依赖项失败: MySQL-client-5.1.39-0.glibc23 需要 libncursesw.so.5 #
即使我已将其安装在 /usr/lib/libncurses.so.5
我还得到了:
# rpm --升级 MySQL-server-5.1.39-0.glibc23.i386.rpm 警告:MySQL-server-5.1.39-0.glibc23.i386.rpm:V3 DSA 签名:NOKEY,密钥 ID 5072e1f5 错误:依赖项失败: MySQL-server-5.1.39-0.glibc23 需要 perl(DBI) #
即使报告的版本是 1.609:
# perl -M'DBI 999' -e1 需要 DBI 版本 999——这仅仅是版本 1.609。
我如何让 RPM 知道它们已安装?或者现在是时候恢复从源代码构建了?
编辑: 顺便说一下,这是一个相当老的 Redhat 盒子(i686,尽管我尝试过 i386 RPM)
答案1
一些问题/评论:
- 你使用哪种操作系统?
- 哪个 arch?如果您有 64 位操作系统和 64 位 ncurses,它将不适合这个 32 位 MySQL rpm。
- 你从哪里获得 rpm?我猜这是来自 mysql.com 的 vanilla 版本。你检查过他们的系统要求吗?你为你的发行版/操作系统选择了正确的软件包吗?请参阅http://dev.mysql.com/downloads/mysql/5.1.html适用于所有受支持的操作系统的软件包。确保 arch 和 OS 版本都匹配!
libncursesw.so.5
!=libncurses.so.5
- 命令的结果是什么
rpm -qf /usr/lib/libncurses.so.5
?这将显示您从哪里获取了 libncurses.so.5 文件。然后您可以使用来rpm -qlv <PKG>
检查此包的内容libncursesw.so.5
。 - 我建议获取您的操作系统发行版的 MySQL 版本,而不是第三方版本,因为包依赖关系不会出现问题。
- 如果您对 rpm 不太熟练,我建议直接使用 yum/apt-get 而不是 rpm,因为它会自动为您解决所需的依赖关系。
- rpm 不会查看硬盘上已安装的文件以解决依赖关系。它只会查看已安装的 rpm(在 rpm 自己的数据库中注册)。这意味着要满足依赖关系,您必须安装正确的 rpm - 在没有 rpm 的情况下仅安装正确的文件是不够的。
答案2
你的依赖数据库乱了。
如果使用 yum 请尝试:
yum clean all
如果没有,请尝试:
rpm --rebuilddb
如果仍然失败,您可以尝试手动重建数据库:
http://www.informatimago.com/linux/rpm-rebuilddb.html
免责声明:我尚未测试本指南中的步骤,因此,就像您在网上找到的任何内容一样,请谨慎操作。步骤中的某些部分可能已过时,不符合当前版本的 rpm 工具集。
答案3
如果你使用的是 CentOS 或 RedHat,我建议使用 rackspace 的 mysql 包iuscommunity 存储库。您可以找到最新版本的 mysql (5.1.39),它们非常稳定。