![为什么APT要升级已经是最新的软件包?](https://linux22.com/image/171486/%E4%B8%BA%E4%BB%80%E4%B9%88APT%E8%A6%81%E5%8D%87%E7%BA%A7%E5%B7%B2%E7%BB%8F%E6%98%AF%E6%9C%80%E6%96%B0%E7%9A%84%E8%BD%AF%E4%BB%B6%E5%8C%85%EF%BC%9F.png)
软件包版本1.14.2-2+deb10u1
已安装,并且1.14.2-2+deb10u1
是撰写本文时存储库中的最新版本。
dpkg -l | grep nginx-extras ii nginx-extras
1.14.2-2+deb10u1 amd64 nginx Web/代理服务器(扩展版本)
apt update
apt dist-upgrade --simulate
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
nginx-extras
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Inst nginx-extras [1.14.2-2+deb10u1] (1.14.2-2+deb10u1 Debian:10.3/stable, Debian-Security:10/stable [amd64])
Conf nginx-extras (1.14.2-2+deb10u1 Debian:10.3/stable, Debian-Security:10/stable [amd64])
然而,APT 想要升级。为什么?如何让APT知道系统已经升级了?
为什么不直接升级呢?我不想使用 APT 进行不必要的升级。因为这会覆盖我本地的更改。
背景:
我手动下载 ( apt source nginx-extras
)、编译、进行本地更改、使用 dpkg 和 apt 安装软件包。包源文件夹 debian/changelog 匹配Web 存储库存储库更改日志文件。
答案1
发生这种情况是因为您安装的软件包与存储库中可用的软件包不匹配,即使它们具有相同的版本。 (作为AB发现,这似乎是基于软件包的安装大小:如果安装的软件包的版本与存储库中可用的版本相同,但其安装大小不同,apt
则需要将软件包替换为存储库中可用的版本。Packages
对于远程软件包和已安装的软件包,列出了安装的大小/var/lib/dpkg/status
。当然,所有这些也都服从于封装引脚优先级。)
每当您在本地构建软件包时,尤其是对其进行更改时,最好更新更改日志,就像进行非维护者上传一样:
dch -n "Summary of your changes"
dch -r ignored
这样apt
就不会尝试用存储库中的包替换您的包,直到后者更新为止。