检查存储库中是否存在不在我的 sources.list 上的包?

检查存储库中是否存在不在我的 sources.list 上的包?

总结:

如何检查某个包是否存在于我不在的存储库中sources.list

我想要的是:

我找到的大多数答案都假设我需要检查的 repo 已经在我的 中了/etc/apt/sources.list

但是,在这种情况下,我需要查看特定存储库中是否存在尚未包含在我的sources.list文件中的特定包。这可能吗?

软件包php8.3-common和存储库是https://packages.sury.org/php/

我希望有类似的东西apt-cache show php8.3-common --repository=https://packages.sury.org/php/存在。或者,如果存储库遵循某种 Debian 标准文件系统结构(我假设如此),也许有一个 URL 可以让我点击并以此方式获得答案。

我为什么想要它:

我有一个脚本,它首先收集用户输入,然后进行实际的服务器设置。它必须提示用户需要安装哪些 PHP 版本,然后检查给定的版本是否可用。此时,https://packages.sury.org/php/服务器上尚未配置存储库 - 这在稍后的设置过程中发生。因此,将根据主 Debian 存储库检查给定的 PHP 版本,其中大多数最新版本尚不可用。

我能想到的唯一解决方法是过早地将 sury repo 添加到 sources.list,但这会破坏逻辑和脚本结构。有没有更好的方法?

答案1

获得一些外部帮助——当然,除非有更好的方法

# Download the Packages file
wget -qO "/tmp/Packages.gz" "https://packages.sury.org/php/dists/$(lsb_release -sc)/main/binary-$(dpkg --print-architecture)/Packages.gz"

# Check for the package in /tmp/Packages.gz
if zgrep -q 'Package: example-package' /tmp/Packages.gz; then
    echo "Package example-package is available."
else
    echo "Package example-package is not available."
fi

相关内容