这个问题描述如何获取给定包的变更日志。但是,它是整个变更日志。
我希望能够看到即将升级的内容中会发生哪些变化。例如,我设想了这样的情况:
$ sudo apt-get upgrade --show-changelogs
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
foo
-- adds the bar feature for better snazziness
-- removes the deprecated baz feature
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 8,864 kB of archives.
After this operation, 285 kB disk space will be freed.
Do you want to continue [Y/n]?
不幸的是,我在 apt-get 的手册页中没有看到类似的东西。这个或类似的东西存在吗?
更新:我写过简短的博客文章更深入地讨论 apt-listchanges 和 Debian 变更日志,其中包含该问题中的一些反馈。
答案1
最接近您所寻找的东西是名为 的软件包apt-listchanges
,它会在您升级软件包时为您提供变更日志摘要。您可以将其设置为在apt-get
下载升级后但在安装之前直接在终端中显示变更日志说明(请参阅下面的说明和屏幕截图)。
您可以使用以下命令安装程序
sudo apt-get install apt-listchanges
然后设置它
sudo dpkg-reconfigure apt-listchanges
创建的安装文件是/etc/apt/listchanges.conf
。
我的设置将更改日志信息直接显示为终端 (stdout) 中的文本,这正是您想要的。我发现这比使用寻呼机加载信息要好。我只在 conf 文件中选择了更改日志,因此未显示有关该包的新闻。我还将其设置为通过电子邮件向 root 发送更改日志摘录。您需要通过引用设置本地电子邮件我的文章在这里如果您想使用此功能。
这是我的/etc/apt/listchanges.conf
:
[apt]
frontend=text
email_address=root
confirm=1
save_seen=/var/lib/apt/listchanges.db
which=changelogs
安装升级过程时的屏幕截图apt-listchanges
。我已将其设置为在阅读变更日志摘录后要求我确认安装。
有关详细信息,请man apt-listchanges
参阅Ubuntu 在线手册页。
答案2
答案3
$ apt changelog firefox
对我来说有效。对于外部 PPA,它失败了,即使这个是http://changelogs.ubuntu.com/changelogs/binary/p/plasma-framework/5.67.0-0ubuntu2/changelog
$ apt changelog plasma-framework
E: Ophalen van changelog:/plasma-framework.changelog is mislukt Logbestand met veranderingen niet beschikbaar voor plasma-framework=5.67.0-0ubuntu2~ubuntu19.10~ppa1
或者更有用的,通过 Synaptic:
This change is not coming from a source that supports changelogs.
Failed to fetch the changelog for plasma-framework
URI was: http://ppa.launchpad.net/pool/main/p/plasma-framework/plasma-framework_5.67.0-0ubuntu2~ubuntu19.10~ppa1_amd64.changelog
这是行不通的:
E: ERROR: couldn't open /root/.synaptic/synaptic.conf for writing - ofstream (5: Input/output error)
E: An error occurred while saving configurations.
答案4
你可以做这样的事情
fullList=$(apt list --upgradable 2> /dev/null)
shortList=$(echo "${fullList}" | cut -f1 -d"/" | sed s/Listing...//)
for pkg in $shortList ; do
echo "## ${pkg}"
apt-get changelog ${pkg}
done
按下q
即可读取每个包的更改日志;如果将寻呼机的输出重定向到文件,它将循环遍历列表直至最后,尽管速度很慢。