我最近一直在学习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 update
)将在http://archive.ubuntu.com/ubuntu/dists/jammy/main/apt-cache policy libuv1
上查找所有可用版本libuv1
$ 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 restricted
to 之类的条目感到紧张sources.list
,因为我担心我可能会忘记,然后不小心运行apt-get upgrade
- 那不是会冒创建FrankenDebian的风险吗?
我只想知道 - 如果只是出于好奇 - 较新版本的源代码/包是否libuv1
存在于我当前版本之外的版本中,而没有编辑带来的风险sources.list
- 有没有办法?换句话说:是否需要sources.list
同时进行编辑以查询可用性和安装软件包,或者是否可以在不编辑文件的情况下查询软件包可用性?
Constantine AB 的回答暗示了这一点,但没有详细说明;
rmadison
是您正在寻找的工具。安装
devscripts
包:(
devscripts
有很多可选依赖项,因此显式--no-install-recommends
;rmadison
needwget
,这是这些可选依赖项之一),然后运行rmadison
以查询在线数据库:语法非常简单,
rmadison
后面是您感兴趣的二进制文件和/或源代码包的名称。由于
libuv1
是直接从 Debian 导入的,大多数时候没有更改,您可能也想检查一下:所以
libuv
1.47.0还没有被打包,无论是Debian还是Ubuntu。(对于使用 Debian 的读者,默认设置是相反的:
rmadison
不带-u
选项查询 Debian,rmadison -u ubuntu
查询 Ubuntu。)那天我使用了
rmadison
devscripts 包中的 。这些天,我太懒了,做了一些过度的事情:
(很容易设置
$version
,$package
相应地从三行 shell 脚本中的 $1、$2 开始)。当然,这会启动(如果尚未存在,则下载)一个完整的 Linux 容器来回答一个简单的问题。但这样我就不必记住另一个工具的语法,并且可以使用相同的技巧来回答更复杂的问题,例如“在带有 xfce 的 Debian 13 上,安装 clementine 需要多少下载量?”...