暂时覆盖系统包

暂时覆盖系统包

我正在使用一个需要高精度时间/时区的系统。

看着包裹tzdata有时它会在发布几天后更新互联网号码分配机构更新他们的数据库文件。

检查 的来源tzdata、从 IANA 下载并提取数据库并重新打包非常简单。

不过,我只想在没有官方更新的情况下覆盖该软件包。一旦tzdata存储库有正式更新,我希望它恢复到原来的状态。

如何最好地实现这一目标?

答案1

您需要使用一个版本号,该版本号排在打包版本最终将使用的版本号之前。对于本地版本执行此操作的规范方法是使用 ~ 后缀,因为它排在任何内容之前(因此被认为较旧):因此对于 2017a,您将使用版本号 2017a~-0.1(-0.1 因为它是新版本的非官方包)。这在当前版本之后排序:

$ dpkg --compare-versions 2016j-0ubuntu0.16.04 lt 2017a~-0.1
$ echo $?
0

因此它将被选为升级候选者,并且它会排在下一个版本之前:

$ dpkg --compare-versions 2017a~-0.1 lt 2017a-0ubuntu0.16.04
$ echo $?
0

所以下一个正式版本将会取代它。

无论下一个更新的来源如何tzdata(Debian 或 Ubuntu),此方案都有效。

Debian 政策关于版本的部分有所有详细信息。

答案2

您会想查看一下版本固定

这是另一个与之相关的问题

不过,在主要版本发布之前,很难使用固定来暂时阻止。

您可以使用 apthold 来阻止软件包更新,因此您可以添加一个保留 usingsudo apt-mark hold tzdata来将软件包保留在当前版本,直到您知道有您想要的更新,然后取消保留 usingsudo apt-mark unhold tzdata和 update

相关内容