尝试升级MySQL时,RPM无法find依赖关系

我正在尝试将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看到他们安装? 或者现在是恢复从源代码构build的时候了?

编辑:为了logging,这是一个相当古老的红帽盒(i686,虽然我正在尝试i386 RPMs)

一些问题/评论:

  • 你在使用哪个操作系统?
  • 哪个拱? 如果你有64位ncurses的64位操作系统,它将不适合这个32位的MySQL rpm。
  • 你从哪里得到rpm? 我想这是从mysql.com的香草版本。 你有没有检查他们的系统要求? 你有没有为你的发行版/操作系统select正确的软件包? 请参阅http://dev.mysql.com/downloads/mysql/5.1.html以获取所有支持的操作系统的软件包。 确保匹配拱和操作系统版本!
  • libncursesw.so.5 != libncurses.so.5
  • 命令rpm -qf /usr/lib/libncurses.so.5的结果是rpm -qf /usr/lib/libncurses.so.5 ? 这将显示你从哪里得到你的libncurses.so.5文件。 然后可以使用rpm -qlv <PKG>来检查libncursesw.so.5的这个包的内容。
  • 我build议从第三方获取操作系统发行版的MySQL版本,而不是版本,因为软件包的依赖关系是没有问题的。
  • 如果你不太熟练使用rpm,我build议直接使用yum / apt-get而不是rpm,因为它会自动为你解决所需的依赖关系。
  • rpm不会查看硬盘上已安装的文件以进行依赖关系parsing。 它只查看安装的rpm(以rpm自己的数据库注册)。 这意味着要满足依赖关系,您必须安装正确的rpm – 仅在没有rpm的情况下安装正确的文件是不够的。

你的依赖数据库搞砸了。

如果使用百胜尝试:

 yum clean all 

如果不是,请尝试:

 rpm --rebuilddb 

如果仍然失败,您可以尝试手动重build数据库:

http://www.informatimago.com/linux/rpm-rebuilddb.html

免责声明:我没有testing这个howto的步骤,就像你在网上find的任何东西一样,谨慎行事。 可能有部分步骤与现代版本的rpm工具集过时了。

如果你使用的是CentOS或RedHat,我build议使用rackspace的iuscommunity存储库中的 mysql包。 你可以find最新版本的MySQL(5.1.39),它们非常稳定。