如何查看 debian/ubuntu deb 包的更新日志?

如何查看 debian/ubuntu deb 包的更新日志?

我正在运行 Ubuntu,并且安装了一个 deb 文件。我之前制作过 deb 软件包,所以我知道有一个 debian 变更日志 (debchange)。有没有办法查看我安装的任何软件包的 debian 变更日志?假设我无法访问此软件包的 deb 源文件,并且我没有可用的 deb 文件。如果需要,我可以安装额外的软件包。

答案1

或者,如果 deb 也在存储库中,并且您想要了解旧版本的变更日志,则可以使用 来apt-get changelog package读取所有变更日志。例如对于 openssl:

apt-get changelog libssl1.0.0

答案2

apt-listchanges是一个很好的软件包,但如果没有 deb 文件,你最好的选择很可能是阅读 Debian 更新日志/usr/share/doc/somepackage/changelog.Debian.gz

使用以下命令创建 shell 函数:

function debchanglog () {
  zless "/usr/share/doc/$1/changelog.Debian.gz"
}

答案3

延续 Janne Pikkarainen 的回答,这里有一个别名,可以用来读取任何给定包的 changelog.Debian.gz:

alias changelog="xargs -I% -- zless /usr/share/doc/%/changelog.Debian.gz <<<"

它可以像这样使用:

changelog PACKAGE

但请注意,这是一个非常不成熟的解决方案,在大多数情况下不推荐使用。函数或独立脚本是更好的解决方案。

这是一个读取 PACKAGE 所有可用更改日志的函数:

changelog(){
    if (( $# != 1 )); then
        echo "Usage: ${FUNCNAME[0]} PACKAGE"
        return 1
    fi

    find -L "/usr/share/doc/$1" -type f -name 'changelog*.gz' -exec zless {} \; 2>/dev/null
}

这个函数可以打印出 PACKAGE 的所有可用更改日志的列表,并询问用户选择要读取的更改日志:

changelog(){
    if (( $# != 1 )); then
        echo "Usage: ${FUNCNAME[0]} PACKAGE"
        return 1
    fi

    local changelog changelogs

    readarray -t changelogs < <(find -L "/usr/share/doc/$1" -type f -name 'changelog*.gz' 2>/dev/null)

    if (( ${#changelogs[@]} == 0 )); then
        return 0
    elif (( ${#changelogs[@]} == 1 )); then
        zless "${changelogs[0]}"
        return $?
    fi

    select changelog in "${changelogs[@]}" EXIT; do
        case $changelog in
            '')
                echo "ERROR: Invalid selection" >&2
                continue
                ;;
            EXIT)
                return 0
                ;;
            *)
                zless "$changelog"
                return $?
                ;;
        esac            
    done
}

答案4

在 Ubuntu 18.04+ 中,的现代版本apt可以执行以下操作(而不是apt-get):

ubuntu18-04:~% apt changelog nginx
nginx (1.14.0-0ubuntu1.9) bionic-security; urgency=medium

  * SECURITY UPDATE: DNS Resolver issues
    - debian/patches/CVE-2021-23017-1.patch: fixed off-by-one write in
      src/core/ngx_resolver.c.
    - debian/patches/CVE-2021-23017-2.patch: fixed off-by-one read in
      src/core/ngx_resolver.c.
    - CVE-2021-23017
...

相关内容