在更新.deb软件包之前,是否需要先卸载它呢?

偶尔我会安装一些不在软件包存档中的.deb包(例如:dpkg -i some-package-v1.deb)。
我想知道在更新之前是否应该卸载这些软件包,以保持干净。我的意思是,当我执行dpkg -i some-package-v2.deb时,之前安装的v1版本的文件会自动删除吗?

取决于制作这些包装的人是否制作了合理的包装。正确制作的包装不应该有任何问题。 - muru
@muru dpkg会进行正常的升级。我不认为软件包会有什么问题。 - Pilot6
@Pilot6我曾见过维护人员在相关的软件包之间移动文件,而没有声明任何冲突。当新的软件包A1尝试覆盖旧的软件包A2的文件时,dpkg会报错。 - muru
在这种情况下,如果依赖关系未满足等问题,错误将显示问题。如果没有错误,则应该没问题。 - Pilot6
2个回答

不,你不需要删除先前安装的软件包。
然而,这取决于软件包的质量。就我个人而言,只有在遇到问题后才会卸载先前的软件包。
正常的更新安装只会删除先前的软件包并保留配置文件,然后安装新的软件包。如果配置文件位于/etc目录下且与先前的配置文件不同,dpkg将询问您是否要覆盖或保留先前的配置文件。
如果我打算先删除第一个软件包,那么我会使用"purge"命令,它将删除所有文件,包括配置文件。
此帖子显示了升级流程图:https://askubuntu.com/a/1116587/26246 上游文档在这里:https://www.debian.org/doc/debian-policy/ap-flowcharts.html

您无需卸载该软件包。如果您运行
dpkg -i some-package-v2.deb

旧版本将被新版本替换。所有文件将被覆盖。这是一种在不使用软件仓库的情况下升级软件包的常规方式。

3这通常适用于来自同一打包者的软件包,但如果您使用的是ppa或其他非标准仓库,最好先卸载以确保安全。 - Amias