是否可以提供 aptitude 以及非 Debian 软件包的变更日志?

是否可以提供 aptitude 以及非 Debian 软件包的变更日志?

当尝试查看 apt 软件包的变更日志时,aptitude经常会出现错误Cannot display changelog: Origin of <package> is unknown (maybe not an official Debian package ...)。这里的“Debian”这个词有点误导,因为到目前为止,在我看来,只有来自主文件中列出的源的软件包/etc/apt/sources.list才能有“变更日志”。就我而言,这些是 Ubuntu 软件包,尽管它们源自相应的 Debian 软件包,但它们来自http://archive.ubuntu.com/ubuntu/并且经常出现ubuntu在软件包的版本中,这表明 Ubuntu 维护者重建了分布式二进制文件。

man aptitude在两个地方提到了变更日志:

  1. 在命令的描述中changelog

    变更日志

    下载并显示每个给定源代码或二进制包的 Debian 变更日志。

  2. 在环境变量的描述中$PAGER

    寻呼机

    如果设置了此环境变量,则调用“aptitude Changelog”时,aptitude 将使用它来显示更改日志。如果未设置,则默认为more

有什么方法可以aptitude显示非 Debian 软件包的更改日志吗?是否有一些神奇的行可以添加到/etc/apt/sources.list.d/*文件中以使其这样做?

非“Debian”软件​​包提供商是否有办法向用户提供变更日志?

PS 同样的情况也适用于apt changelog,它失败并显示错误消息:

E: Failed to fetch changelog:/<package>.changelog  Changelog unavailable for <package>-<version>

显然,aptitudeapt changelog、 和apt-listchanges都使用相同的文件进行输出。

答案1

如果它们在本地不完整可用,则分别从元数据服务检索更改日志https://metadata.ftp-master.debian.org/changelogs/对于 Debian 和https://changelogs.ubuntu.com/changelogs/pool对于Ubuntu。该行为取决于配置的源,可以使用以下命令查看

apt-config dump Acquire::Changelogs

其他存储库可以提供适当的服务和配置片段,但我不知道有任何这样做。

在 Ubuntu 上,软件包会发送被截断的变更日志,因此apt changelog将始终尝试从服务器检索变更日志。

用于检索给定包的更改日志的 URL 可以通过以下方式获取

apt changelog --print-uris ...

aptitude使用不同的配置指令,并且APT::Changelogs::Server是指向元数据服务器的关键。它也不按起源来区分。这使得外部存储库更难以提供适当的配置。

apt-listchanges从已下载的软件包文件中提取变更日志。如果不可用,它将返回apt-get changelog(与 相同apt changelog)。

答案2

Anapt changelog tar将读取该文件/usr/share/doc/tar/changelog.Debian。那么如果一个数据包不遵循changelog.Debian约定,apt changelog那么它就毫无用处。

答案3

我发现“aptchangelogcurl”命令总是从互联网站点查找更改日志,而不是本地changelog.gz文件,详细检查发现curlpacakge的更改日志文件附加了两个以“#”开头的特殊行,这不是正确的方法(例如不符合惯例)。如果删除这两行或者在“#”前添加一个空格,则会查找本地的changelog.gz文件。

相关内容