我在几台 Ubuntu 12.04 服务器上安装了 Percona DB 5.6。在其中几台服务器上,我能够使用以下命令成功升级到最新版本(5.6.17):
apt-get update
apt-get upgrade
在其他几个程序上,apt-get update + upgrade 告诉我没有什么可做的,尽管那里安装的版本只有 5.6.15。为什么找不到最新版本?
已更新的服务器的最新版本:“服务器版本:5.6.17-65.0-587.precise-log(Ubuntu)”
未更新的服务器版本:“服务器版本:5.6.15-63.0-log Percona Server(GPL),版本 63.0”
我已确认所有服务器上的 /etc/apt/sources.list 中都有以下几行:
deb http://repo.percona.com/apt precise main
deb-src http://repo.percona.com/apt precise main
(并且它必须在某个时候起作用,因为它们最初都是使用 apt-get 安装的)
编辑:根据 estibordo 的建议,我添加了输出
apt-cache policy percona-server-server-5.6
(percona-server-common-5.6 和 percona-server-client-5.6 也与此相同)
从未升级的服务器:
percona-服务器-服务器-5.6: 已安装:1:5.6.15-rel63.0-519.precise 候选:1:5.6.15-rel63.0-519.precise 版本表: *** 1:5.6.15-rel63.0-519.precise 0 100 /var/lib/dpkg/状态 5.6.17-65.0-587.precise 0 500 http://repo.percona.com/apt/ precise/main amd64 软件包
在我确实升级的服务器上,这是输出:
percona-服务器-服务器-5.6: 安装:5.6.17-65.0-587.precise 候选:5.6.17-65.0-587.precise 版本表: *** 5.6.17-65.0-587.precise 0 500 http://repo.percona.com/apt/ precise/main amd64 软件包 100 /var/lib/dpkg/状态
为什么会有这种差异?或者更重要的是,我该如何修复卡在 5.6.15 上的问题?谢谢。
答案1
我觉得
apt-cache policy percona-server-server
就是您所需要的。它将提供有关已安装版本的信息以及是否还有其他要安装的候选版本。它还会告诉您软件包来自哪个存储库。
您可以使用带有通配符的相同命令,例如:
apt-cache policy percona*
答案2
目前,一些 Ubuntu PPA 也存在同样的问题:仔细查看已安装软件包的版本号。它的开头有一个前导 1:(“epoch” - 请参阅https://askubuntu.com/questions/441879/why-do-some-packages-have-extra-numbers-on-the-front-of-their-version-string),这导致 Apt 认为它的版本比存储库中实际的更高版本要高。旧安装是否来自 PPA,或者他们是否更改了版本号?
无论如何,由于输出没有说明当前安装的包来自哪里,因此存储库可能已从您的配置中删除。
我认为最好是删除(不是清除;删除应该保持所有配置不变;尽管如此,请确保备份 /etc 中的相应文件夹)当前软件包,然后(为了安全起见)再次执行apt-get update && apt-get clean
,然后使用 正常再次安装软件包apt-get install
。然后它应该会忘记带有 1: 前缀的版本并从存储库安装最新版本。