Synaptic 如何准确跟踪“存储库中的新”包?

int*_*_ua 5 package-management aptitude synaptic apt

此信息是 APT 缓存的一部分还是创建一个单独的文件来与新缓存进行比较?那它存放在哪里呢?

Pav*_*l A 1

如果我没记错的话,您要查找的文件是:

  • /var/cache/apt/pkgcache.bin
  • /var/cache/apt/srcpkgcache.bin

这是分别用于二进制包和源包的本地包数据库。每次您运行apt-get update或像 Synaptic 这样的程序以某种方式执行此操作时,它都会更新。

  • @int_ua,从一开始就不明白你的意思。是的,当然 - /var/cache/* 是 APT 缓存的一部分:) 我怀疑您即使在文档中也能找到问题的答案。要确定 Synaptic 是否使用此文件,您可能需要查看代码。互联网上的人们说确实如此(好吧,我也看不出有任何理由不这样做 - 但这只是一个假设)。至于如何解析它。它是一个二进制文件,因此也只能以编程方式。我想看看一些 APT 库。 (2认同)

cha*_*kes 1

要从 apt 缓存中提取信息,您可以使用apt-cacheaptitude 等其他 Debian/Ubuntu 工具。有关说明和示例,请参阅man apt-cacheDebian软件包管理手册

例如:

apt-cache show software-center
Run Code Online (Sandbox Code Playgroud)

将列出完整的包信息。

Synaptic 本质上是 apt 的 GUI 包装器,因此 apt 会跟踪存储库和包信息,而 Synaptic 会查询它。

包含在 bash 脚本中的 apt-cache 可能是您自己执行类似操作的最简单方法。Synaptic 通过 C++ 使用 libapt-pkg*,但也有适用于 Perl 和 Python 的库。

在 aptitude 中查找新包

aptitude search '~N'
Run Code Online (Sandbox Code Playgroud)