如果 .deb 安装包与包含相同包的 Ubuntu 版本更新一起更新,会发生什么情况?

如果 .deb 安装包与包含相同包的 Ubuntu 版本更新一起更新,会发生什么情况?

当你通过文件手动安装软件包时,.deb它不会被更新apt(另请参阅如何更新从 .deb 文件安装的程序问题),但是当您安装当前 Ubuntu 版本的存储库中没有的软件包,但该软件包包含在更高版本的 Ubuntu 中时会发生什么。当您升级到默认包含该软件包的新版本时,系统是否会:

  • 意识到该包已经安装并以适当的方式更新它。
  • 意识到包已经安装,但保留手动安装的版本。
  • 没有意识到已经安装而再次安装,导致同一个包被安装了两次。
  • 以其他方式崩溃和烧毁?

如果后面任何一个选项是正确答案,我该如何防止这种情况发生?

答案1

软件包管理器并不关心软件包是否已被dpkg或安装apt。如果它在存储库中找到软件包的较新版本,则会安装该较新版本。

就您而言,这意味着如果新 Ubuntu 版本中的软件包具有更高的版本号,您的软件包就会得到更新。

看 ”如何阻止特定包的更新?“如果您不想更新您的软件包。

答案2

也许只有某些来源才具有更新功能。您发布的链接指出,当您使用 dpkg 安装时,它会绕过 apt,因此不会更新。

作为测试,我搜索了 Utopic 中可用的 nodejs 版本(v0.10.25),然后使用 checkinstall 安装了 nodejs(v0.10.20)

我下载并解压然后运行:

./configure
 make
 sudo checkinstall -D

安装后我检查了版本,实际上是 0.10.20

然后我做了

  sudo apt-get update 
  sudo apt-get upgrade 

并被告知节点被阻止了

所以我尝试了

 sudo apt-get dist-upgrade

并且它更新了节点。我检查了之后的版本,它报告了 0.10.25(Utopic 可用的版本)

所以我不确定是否只有一些手动安装的软件包才会更新,或者是否因为我使用 checkinstall 来制作 deb/install。

唯一奇怪的是当我手动安装时我检查了版本

 node -v

但由于使用 apt 更新,现在我必须使用

nodejs -v

因此,我再次使用 checkinstall 从源代码构建了一个旧版本的 deb,然后使用

 sudo apt-get dist-upgrade

相关内容