是否可以在不编辑sources.list的情况下查询非我当前版本的APT软件包版本?

是否可以在不编辑sources.list的情况下查询非我当前版本的APT软件包版本?

最近在学习Linux包管理(https://superuser.com/questions/393681/how-to-find-out-which-versions-of-a-package-can-i-install-on-apt,https://askubuntu.com/questions/340530/how-can-i-check-the-available-version-of-a-package-in-the-repositories,为什么不同的 Linux 发行版有不同的包格式(和包管理器)?,https://itsfoss.com/ubuntu-repository-mechanism/,https://itsfoss.com/sources-list-ubuntu/

如果我理解正确的话,/etc/apt/sources.list(和.list/.sources中的文件/etc/apt/sources.list.d/)控制从何处apt-get(和相关实用程序)获取包/源代码。

由于我当前的版本是 jammy,因此我的条目sources.list如下:

deb http://archive.ubuntu.com/ubuntu/ jammy main restricted
deb-src http://archive.ubuntu.com/ubuntu/ jammy main restricted

...我认为这意味着(之后running apt-file updateapt-cache policy libuv1将查找libuv1at的所有可用版本http://archive.ubuntu.com/ubuntu/dists/jammy/main/

$ apt-cache policy libuv1
libuv1:
  Installed: 1.43.0-1
  Candidate: 1.43.0-1
  Version table:
 *** 1.43.0-1 500
        500 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages
        100 /var/lib/dpkg/status
$
$ apt-cache madison libuv1
    libuv1 |   1.43.0-1 | http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages
    libuv1 |   1.43.0-1 | http://archive.ubuntu.com/ubuntu jammy/main Sources
$

我的问题是:有没有办法libuv1在不进行编辑的情况下查询除 jammy 以外的版本的软件包的可用版本sources.list

从上面的apt-cache输出来看,1.43.0-1 似乎是唯一可用的版本 - 无论是作为包还是作为源。但我知道libuv 作者有更新的版本。我想了解是否可以查询非 Jammy 软件包存储库以获取较新的libuv1软件包或源代码的可用性。出于过度的谨慎,我对添加诸如deb-src http://archive.ubuntu.com/ubuntu/ mantic main restrictedto 之类的条目感到紧张sources.list,因为我担心我可能会忘记,然后不小心运行apt-get upgrade- 那岂不是冒着创建一个弗兰肯Debian

我只是想知道——如果只是出于好奇——无论新版本的libuv1源代码/包存在于除我当前版本之外的版本中,没有编辑带来的风险sources.list- 有没有办法?换句话说:是否需要sources.list同时进行编辑以查询可用性和安装软件包,或者是否可以在不编辑文件的情况下查询软件包可用性?

答案1

康斯坦丁AB的回答提及但未详细说明;rmadison是您正在寻找的工具。

安装devscripts包:

$ sudo apt install --no-install-recommends devscripts wget

devscripts有很多可选依赖项,因此显式--no-install-recommends; rmadisonneed wget,这是这些可选依赖项之一),然后运行rmadison以查询在线数据库:

$ rmadison libuv1
 libuv1 | 1.8.0-1           | xenial/universe | source, amd64, arm64, armhf, i386, powerpc, ppc64el, s390x
 libuv1 | 1.18.0-3          | bionic          | source, amd64, arm64, armhf, i386, ppc64el, s390x
 libuv1 | 1.34.2-1ubuntu1   | focal           | source, amd64, arm64, armhf, i386, ppc64el, riscv64, s390x
 libuv1 | 1.34.2-1ubuntu1.3 | focal-security  | source, amd64, arm64, armhf, i386, ppc64el, riscv64, s390x
 libuv1 | 1.34.2-1ubuntu1.3 | focal-updates   | source, amd64, arm64, armhf, i386, ppc64el, riscv64, s390x
 libuv1 | 1.43.0-1          | jammy           | source, amd64, arm64, armhf, i386, ppc64el, riscv64, s390x
 libuv1 | 1.44.2-1          | lunar           | source, amd64, arm64, armhf, i386, ppc64el, riscv64, s390x
 libuv1 | 1.44.2-1          | mantic          | source, amd64, arm64, armhf, i386, ppc64el, riscv64, s390x
 libuv1 | 1.46.0-2ubuntu1   | noble           | source, amd64, arm64, armhf, i386, ppc64el, riscv64, s390x
 libuv1 | 1.46.0-3          | noble-proposed  | source, amd64, arm64, i386, ppc64el, riscv64, s390x

语法非常简单,rmadison后面是您感兴趣的二进制文件和/或源代码包的名称。

由于是libuv1直接从 Debian 导入的,大多数时候没有更改,您可能也想检查一下:

$ rmadison -u debian libuv1
libuv1     | 1.24.1-1+deb10u1 | oldoldstable       | source, amd64, arm64, armel, armhf, i386, mips, mips64el, mipsel, ppc64el, s390x
libuv1     | 1.24.1-1+deb10u1 | oldoldstable-debug | source
libuv1     | 1.40.0-2         | oldstable          | source, amd64, arm64, armel, armhf, i386, mips64el, mipsel, ppc64el, s390x
libuv1     | 1.44.2-1         | stable             | source, amd64, arm64, armel, armhf, i386, mips64el, mipsel, ppc64el, s390x
libuv1     | 1.46.0-2         | testing            | source, amd64, arm64, armel, armhf, i386, mips64el, ppc64el, s390x
libuv1     | 1.46.0-3         | unstable           | source, amd64, arm64, armel, armhf, i386, mips64el, ppc64el, riscv64, s390x
libuv1     | 1.46.0-3         | unstable-debug     | source

所以libuv1.47.0还没有被打包,无论是Debian还是Ubuntu。

(对于使用 Debian 的读者,默认设置是相反的:rmadison不带-u选项查询 Debian,rmadison -u ubuntu查询 Ubuntu。)

答案2

那天我使用了rmadisondevscripts 包中的 。

这些天,我太懒了,做了一些过度的事情:

podman run -it --rm debian:$version sh -c "apt-get update > /dev/null; apt-get info $package"

(很容易设置$version$package相应地从三行 shell 脚本中的 $1、$2 开始)。

当然,这会启动(如果尚未存在,则下载)一个完整的 Linux 容器来回答一个简单的问题。但这样我就不必记住另一个工具的语法,并且可以使用相同的技巧来回答更复杂的问题,例如“在带有 xfce 的 Debian 13 上,安装 clementine 需要多少下载量?”...

相关内容