我已经知道我可以通过运行以下命令来检查我的存储库中是否存在在 Debian 或 Ubuntu 中安装软件包所需的多个依赖项:
apt policy first-package second-package ... last-package
该命令还告诉我当前是否安装了每个软件包。
我的问题是如何快速检查我当前未安装的受支持版本的 Debian 或 Ubuntu 中是否存在多个依赖包。因为我当前没有安装该操作系统,所以无法检查依赖包是否本地和离线存在,但我想从终端检查默认存储库中是否存在所需的依赖包。
此信息的一种可能用途是在安装最新版本的 Ubuntu 或将现有操作系统升级到最新版本之前检查 Ubuntu 中安装的应用程序是否也可以安装在最新版本的 Ubuntu 中。
答案1
理想的工具是rmadison
,这是一个简单的 Perl 脚本,几乎没有依赖项(URI
模块 和wget
或curl
),因此它几乎可以在任何地方运行。它询问 Debian 和 Ubuntu 托管的 Madison 服务以确定软件包的可用性:
rmadison gcc-7
告诉您各个 Debian 套件中可用的 GCC 7 版本,
rmadison -u ubuntu gcc-7
对于 Ubuntu 也是如此。
您可以将输出限制为特定版本:
rmadison -u ubuntu -s bionic gcc-7
答案2
雷麦迪逊可以同时搜索 Debian 和 Ubuntu 软件包,并且还搜索 End Of Life (12.04) 和未发布 (18.10) Ubuntu 版本中的软件包。这些都是很棒的功能,但 rmadison 无法在我的计算机上进行部分关键字搜索。有时我记不起我正在搜索的整个包名称。我只记得其中的一部分,下面的说明在这种情况下也适用。否则使用 rmadison,它可以sudo apt-get install devscripts
在 Ubuntu 和 Debian 中通过命令安装。
创建一个名为 Open-multiple-URLs-in-Firefox.sh 的 shell 脚本来查询是否存在多个包。该脚本包含以下代码:
#!/bin/bash while read line; do firefox --new-tab "https://packages.ubuntu.com/$line" done < packages.txt
使脚本可执行。
chmod +x Open-multiple-URLs-in-Firefox.sh
创建一个名为packages.txt 的文件,其中包含所有必需的依赖项包的名称,每个包占单独的一行。将packages.txt 保存在与Open-multiple-URLs-in-Firefox.sh 相同的目录中。
运行脚本。
./Open-multiple-URLs-in-Firefox.sh
包含每个所需依赖包信息的网页将在 Firefox 中的单独选项卡中打开。
为了搜索多个包德班https://packages.ubuntu.com/
在 shell 脚本中替换为https://packages.debian.org/search?keywords=
当您仅搜索 1 或 2 个包时,此命令是上述 shell 脚本的更简单的替代方案。
firefox --new-tab https://packages.ubuntu.com/first-package https://packages.ubuntu.com/next-package https://packages.ubuntu.com/last-package