在Debian或Ubuntu中安装软件包之前,请检查是否存在多个依赖项


8

我已经知道我可以通过运行以下命令来检查存储库中是否存在在Debian或Ubuntu中安装软件包所需的多个依赖关系:

apt policy first-package second-package ... last-package  

该命令还告诉我当前是否已安装每个软件包。

我的问题是如何快速检查在我当前未安装的受支持版本的Debian或Ubuntu中是否存在多个依赖包。因为我当前没有安装该操作系统,所以无法检查依赖包是否在本地和离线存在,但是我想检查所需的依赖包是否存在于终端的默认存储库中。

此信息的一种可能用途是在安装最新版本的Ubuntu或将现有操作系统升级到最新版本之前,检查是否也可以在最新版本的Ubuntu中安装在Ubuntu中安装的应用程序。

Answers:


10

理想的工具是rmadison,这是一个简单的Perl脚本,几乎没有依赖项(URI模块和wgetcurl),因此它几乎可以在任何地方运行。它询问Debian和Ubuntu托管的Madison服务,以确定软件包的可用性:

rmadison gcc-7

告诉您各种Debian套件中提供了哪些版本的GCC 7,

rmadison -u ubuntu gcc-7

对于Ubuntu也一样。

您可以将输出限制为特定版本:

rmadison -u ubuntu -s bionic gcc-7

@karel注意,后面的参数-u不是包名称,而是发行版(或可能是回购)名称
GnP

没错,它丢失了ubuntu,并且可以在我的示例文件中使用。实际上,它比我的脚本更好用,因为它还返回精确的软件包结果,这是生命周期终止的版本。
karel

3

rmadison可以同时搜索Debian和Ubuntu软件包,还可以搜索End Of Life(12.04)和未发行(18.10)Ubuntu版本的软件包。这些都是很棒的功能,但是rmadison不能在我的计算机上进行部分关键字搜索。有时,我不记得要搜索的整个程序包名称。我只记得其中的一部分,在这种情况下,以下说明也适用。否则,请使用rmadison,该命令可以sudo apt-get install devscripts在Ubuntu和Debian中通过命令进行安装。

  1. 创建一个Shell脚本以查询是否存在多个名为Open-multiple-URLs-in-Firefox.sh的软件包。该脚本包含以下代码:

    #!/bin/bash
    while read line; do
        firefox --new-tab "https://packages.ubuntu.com/$line"
    done < packages.txt
  2. 使脚本可执行。

    chmod +x Open-multiple-URLs-in-Firefox.sh
  3. 创建一个名为packages.txt的文件,其中包含所有必需的依赖程序包的名称,每个程序包都在单独的行上。将packages.txt与Open-multiple-URLs-in-Firefox.sh保存在同一目录中。

  4. 运行脚本。

    ./Open-multiple-URLs-in-Firefox.sh  

包含每个必需的依赖程序包信息的网页将在Firefox中的单独选项卡中打开。

为了在Debian中搜索多个软件包,请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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.