如何从不同版本升级软件包?

如何从不同版本升级软件包?

我将服务器从 16.04 升级到 18.04。

最后一次重启后,我重新激活了在更新期间被禁用的附加源列表。(它是 Zabbix 存储库)

然后我升级了系统,但没有通知有关新的升级。

但是安装的版本是用于 xenial 的,并且可以使用用于 bionic 的版本正常工作。(相同版本)。

当我尝试:

  • 更新:没有可用的新版本

  • 重新安装:无法找到包(这似乎合乎逻辑,因为我用 bionic 替换了 xenial)

  • 手动安装bionic版本:系统认为当前版本(xenial)是最新版本

我最终删除并安装了这些软件包。

但我想知道将软件包从一个 Ubuntu 版本升级到另一个版本并避免这种情况的正确方法是什么?

答案1

存储库维护人员错误地为软件包的 Xenial 和 Bionic 版本分配了相同的版本字符串,这正是您现在面临的原因。

您应该向他们报告该问题,同时您可以删除 Xenial 版本并安装 Bionic 版本,或者如果它没有引起问题,则暂时保留 Xenial 版本(当新版本发布时,将安装 Bionic 版本)。

答案2

虽然我知道这个问题并不新鲜,但我认为它总体上仍然有效,所以我想添加一个对我有用的替代方案供参考:

您可以明确定义命令的预期版本名称apt install。 在我的例子中(nginx=1.16.0-1~xenialvs. nginx=1.16.0-1~bionic),我遇到了同样的情况,Ubuntu 没有从 Xenial 包升级到 Bionic 包,因为它假设它是降级(可能与字母数字排序“x”与“b”有关?!)。 无论如何,这为我解决了这个问题:

$ dpkg -l | grep '^.i' | grep nginx
ii  nginx    1.16.0-1~xenial    amd64    high performance web server
$ sudo apt-get install nginx=1.16.0-1~bionic
$ dpkg -l | grep '^.i' | grep nginx
ii  nginx    1.16.0-1~bionic    amd64    high performance web server

希望这对任何人都有帮助。

相关内容