如何在zypper中更新之前获取软件包更改

时间:2018-01-29 21:19:50

标签: package updates opensuse zypper

是否为apt-listchanges存在来自debian / ubuntu的zypper功能的副本?

目前我必须手动为每个更新的软件包执行以下操作:1)使用zypper进行安装,2)使用rpm -q --changelog PACKAGE_NAME检查更改,并且它远离方便的方式完成按apt-listchanges。对我来说最重要的是,如何在安装之前进行更改(有可能中止)?

3 个答案:

答案 0 :(得分:0)

不使用zypper,但是如果您可以同时下载rpm(旧版本和新版本),则可以使用pkgdiff来检查差异。

答案 1 :(得分:0)

我无法找到一种方法,无需下载就可以查看对单个软件包所做的更改。 OpenSUSE收集“补丁”中的软件包,因为错误经常需要更改几个软件包。要查看补丁中的内容,

  • 使用zypper list-patches
  • 获取可用补丁的名称/ ID
  • 使用zypper info -t patch $ID获取有关补丁集的信息,其中$ID是上一条命令输出的ID。

如果您要查看某个软件包,可以使用zypper download来下载它,而无需安装。之后,您可以使用rpm -q --changelog -p $PATH$PATH上查看下载文件的变更日志。

答案 2 :(得分:-1)

(我不知道apt-listchanges输出的内容)

主要问题是从zypper获取易于解析的输出。这并不完美,但它可能会让你在路上:

首先从zypper输出中获取补丁的简单名称,省略标题和尾部行:

zypper -t lp | awk -F'|' '/^---/ { OK=1; next } OK && NF == 7 { gsub(" ", "", $2); print $2 }'

例如,你可以得到:

openSUSE-2018-172
openSUSE-2018-175
openSUSE-2018-176
openSUSE-2018-178

然后再次将该输出反馈到zypper,如下所示:

zypper patch-info $(zypper -t lp | awk -F'|' '/^---/ { OK=1; next } OK && NF == 7 { gsub(" ", "", $2); print $2 }')

输出将包括这样的信息(为简洁而截断):

Summary     : Security update for ffmpeg     
Description :                                
    This update for ffmpeg fixes the following issues:

    Updated ffmpeg to new bugfix release 3.4.2

      * Fix integer overflows, multiplication overflows, undefined
        shifts, and verify buffer lengths.