如何通过OpenSUSE Build Service API获取软件包最新版本以自动下载二进制文件
获取openSUSE Build Service软件包最新版本的方法(无需添加PPA)
针对你需要自动化下载OBS上ueberzugpp这类Debian包的需求,有两种可靠的方法可以获取最新版本号,无需添加PPA:
方法1:调用OBS官方API获取元数据
OBS提供了直接返回软件包元数据的API端点,你可以通过它提取版本信息:
- 构造API请求路径,格式为:
https://api.opensuse.org/build/<项目名>/<发行版仓库名>/<架构>/<包名>/_meta
针对你的场景,完整路径是:https://api.opensuse.org/build/home:justkidding/xUbuntu_22.04/amd64/ueberzugpp/_meta - 用
curl请求并解析JSON中的版本字段,推荐配合jq工具:
执行后会直接返回最新版本号,比如curl -s https://api.opensuse.org/build/home:justkidding/xUbuntu_22.04/amd64/ueberzugpp/_meta | jq -r '.version'2.9.1-1这类格式。
方法2:解析Deb仓库的Packages文件
每个OBS的Deb仓库都会维护Packages.gz文件,里面包含所有包的详细信息:
- 构造Packages文件的下载路径,格式为:
https://download.opensuse.org/repositories/<项目名>/<发行版仓库名>/dists/<发行版代号>/main/binary-<架构>/Packages.gz
对应Ubuntu 22.04(代号jammy)的完整路径是:https://download.opensuse.org/repositories/home:/justkidding/xUbuntu_22.04/dists/jammy/main/binary-amd64/Packages.gz - 下载并解压后过滤出目标包的版本:
curl -s https://download.opensuse.org/repositories/home:/justkidding/xUbuntu_22.04/dists/jammy/main/binary-amd64/Packages.gz | gunzip | grep -A 20 "Package: ueberzugpp" | grep -E "^Version:" | awk '{print $2}'
构造下载链接
拿到版本号后,直接替换链接中的版本占位符即可生成最新包的下载地址:
VERSION=$(curl -s https://api.opensuse.org/build/home:justkidding/xUbuntu_22.04/amd64/ueberzugpp/_meta | jq -r '.version') wget "https://download.opensuse.org/repositories/home:/justkidding/xUbuntu_22.04/amd64/ueberzugpp_${VERSION}_amd64.deb"
内容的提问来源于stack exchange,提问作者bergercookie
相关产品推荐
相关产品推荐

