如何在安装之前检查 Linux 软件包版本

你们中的大多数人都会知道如何 查找已安装软件包的版本 在 Linux 中。 但是,你会怎么做才能找到一开始没有安装的包的版本呢? 没问题! 本指南介绍了如何在 Debian 及其衍生产品(如 Ubuntu)中安装 Linux 软件包之前检查它的版本。 这个小技巧可能对那些想知道在安装软件包之前会获得什么版本的人有所帮助。

在 Linux 中检查软件包版本

有很多方法可以找到一个包的版本,即使它还没有安装在基于 DEB 的系统中。 这里我给出了一些方法。

方法 1 – 使用 Apt

检查软件包版本的快速而肮脏的方法,只需运行:

$ apt show <package-name>

例子:

$ apt show vim

样本输出:

Package: vim
Version: 2:8.0.1453-1ubuntu1.1
Priority: optional
Section: editors
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Debian Vim Maintainers <[email protected]>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 2,852 kB
Provides: editor
Depends: vim-common (= 2:8.0.1453-1ubuntu1.1), vim-runtime (= 2:8.0.1453-1ubuntu1.1), libacl1 (>= 2.2.51-8), libc6 (>= 2.15), libgpm2 (>= 1.20.7), libpython3.6 (>= 3.6.5), libselinux1 (>= 1.32), libtinfo5 (>= 6)
Suggests: ctags, vim-doc, vim-scripts
Homepage: https://vim.sourceforge.io/
Task: cloud-image, server
Supported: 5y
Download-Size: 1,152 kB
APT-Sources: https://archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages
Description: Vi IMproved - enhanced vi editor
 Vim is an almost compatible version of the UNIX editor Vi.
 .
 Many new features have been added: multi level undo, syntax
 highlighting, command line history, on-line help, filename
 completion, block operations, folding, Unicode support, etc.
 .
 This package contains a version of vim compiled with a rather
 standard set of features.  This package does not provide a GUI
 version of Vim.  See the other vim-* packages if you need more
 (or less).

N: There is 1 additional record. Please use the '-a' switch to see it

正如您在上面的输出中看到的那样,“apt show”命令显示了该软件包的许多重要细节,例如,

  1. 包裹名字,
  2. 版本,
  3. 起源(vim 的来源),
  4. 维护者,
  5. 包的主页,
  6. 依赖,
  7. 下载大小,
  8. 描述,
  9. 和许多。

因此,Ubuntu 存储库中可用的 Vim 包版本是 8.0.1453. 如果我将它安装在我的 Ubuntu 系统上,这是我得到的版本。

或者,使用 “贴切政策” 如果您更喜欢短输出,请使用命令:

$ apt policy vim
vim:
  Installed: (none)
  Candidate: 2:8.0.1453-1ubuntu1.1
  Version table:
     2:8.0.1453-1ubuntu1.1 500
        500 https://archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages
        500 https://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages
     2:8.0.1453-1ubuntu1 500
        500 https://archive.ubuntu.com/ubuntu bionic/main amd64 Packages

甚至更短:

$ apt list vim
Listing... Done
vim/bionic-updates,bionic-security 2:8.0.1453-1ubuntu1.1 amd64
N: There is 1 additional version. Please use the '-a' switch to see it

易于 是最近 Ubuntu 版本中的默认包管理器。 所以,这个命令足以找到一个包的详细信息。 是否安装了给定的软件包都没有关系。 该命令将简单地列出给定包的版本以及所有其他详细信息。

方法 2 – 使用 Apt-get

要在不安装的情况下查找包版本,我们可以使用 apt-get 命令与 -s 选项。

$ apt-get -s install vim

样本输出:

NOTE: This is only a simulation!
      apt-get needs root privileges for real execution.
      Keep also in mind that locking is deactivated,
      so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Suggested packages:
  ctags vim-doc vim-scripts
The following NEW packages will be installed:
  vim
0 upgraded, 1 newly installed, 0 to remove and 45 not upgraded.
Inst vim (2:8.0.1453-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Conf vim (2:8.0.1453-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])

这里,-s 选项表示 模拟. 正如您在输出中看到的,它不执行任何操作。 相反,它只是执行一个模拟,让您知道安装 Vim 包时会发生什么。

您可以将“安装”选项替换为“升级”选项,以查看升级软件包时会发生什么。

$ apt-get -s upgrade vim

方法 3 – 使用 Aptitude

资质 是 Debian 及其衍生产品中基于 ncurses 和命令行的 APT 包管理器前端。

要使用 Aptitude 查找软件包版本,只需运行:

$ aptitude versions vim
p   2:8.0.1453-1ubuntu1                                                              bionic                                                        500 
p   2:8.0.1453-1ubuntu1.1                                                            bionic-security,bionic-updates                                500

您还可以使用模拟选项(-s) 看看如果你安装或升级包会发生什么。

$ aptitude -V -s install vim
The following NEW packages will be installed:
  vim [2:8.0.1453-1ubuntu1.1]  
0 packages upgraded, 1 newly installed, 0 to remove and 45 not upgraded.
Need to get 1,152 kB of archives. After unpacking 2,852 kB will be used.
Would download/install/remove packages.

这里, -V flag 用于显示包版本的详细信息。

同样,只需将“安装”替换为“升级”选项,看看升级软件包会发生什么。

$ aptitude -V -s upgrade vim

使用 Aptitude 命令查找未安装软件包版本的另一种方法是:

$ aptitude search vim -F "%c %p %d %V"

这里,

  • -F 用于指定应该使用哪种格式来显示输出,
  • %C – 给定包的状态(已安装或未安装),
  • %p – 包裹的名称,
  • %d – 包装说明,
  • %V – 包的版本。

当您不知道完整的包名称时,这很有帮助。 此命令将列出所有包含给定字符串的包(即 vim)。

以下是上述命令的示例输出:

[...]
p vim                                                           Vi IMproved - enhanced vi editor                                         2:8.0.1453-1ub
p vim-tlib                                                      Some vim utility functions                                               1.23-1        
p vim-ultisnips                                                 snippet solution for Vim                                                 3.1-3         
p vim-vimerl                                                    Erlang plugin for Vim                                                    1.4.1+git20120
p vim-vimerl-syntax                                             Erlang syntax for Vim                                                    1.4.1+git20120
p vim-vimoutliner                                               script for building an outline editor on top of Vim                      0.3.4+pristine
p vim-voom                                                      Vim two-pane outliner                                                    5.2-1         
p vim-youcompleteme                                             fast, as-you-type, fuzzy-search code completion engine for Vim           0+20161219+git

方法 4 – 使用 Apt-cache

apt缓存 命令用于在基于 Debian 的系统中查询 APT 缓存。 它对于在 APT 的包缓存上执行许多操作很有用。 一罚款 example 我们可以吗 列出来自某个存储库/ppa 的已安装应用程序.

不只是安装的应用程序,即使没有安装,我们也可以找到一个包的版本。 例如,以下命令将查找 Vim 包的版本:

$ apt-cache policy vim

样本输出:

vim:
  Installed: (none)
  Candidate: 2:8.0.1453-1ubuntu1.1
  Version table:
     2:8.0.1453-1ubuntu1.1 500
        500 https://archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages
        500 https://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages
     2:8.0.1453-1ubuntu1 500
        500 https://archive.ubuntu.com/ubuntu bionic/main amd64 Packages

正如你在上面的输出中看到的,没有安装 Vim。 如果你想安装它,你会得到版本 8.0.1453. 它还显示 vim 包来自哪个存储库。

我们的一位读者在下面的评论部分建议了以下命令。

$ apt-cache madison vim

样本输出:

vim | 2:8.0.1453-1ubuntu1.1 | https://it-mirrors.evowise.com/ubuntu bionic-updates/main amd64 Packages
vim | 2:8.0.1453-1ubuntu1.1 | https://it-mirrors.evowise.com/ubuntu bionic-security/main amd64 Packages
vim | 2:8.0.1453-1ubuntu1 | https://it-mirrors.evowise.com/ubuntu bionic/main amd64 Packages

方法 5 – 使用 Apt-show-versions

apt-show-versions 命令用于列出 Debian 和基于 Debian 的系统中已安装和可用的软件包版本。 它还显示所有可升级软件包的列表。 如果您有一个混合的稳定/测试环境,这将非常方便。 例如,如果您同时启用了稳定和测试存储库,您可以轻松地从测试中找到应用程序列表,并且您可以升级测试中的所有包。

默认情况下不安装 Apt-show-versions。 您需要使用以下命令安装它:

$ sudo apt-get install apt-show-versions

安装后,运行以下命令来查找包的版本,对于 example 维姆:

$ apt-show-versions -a vim
vim:amd64 2:8.0.1453-1ubuntu1   bionic          archive.ubuntu.com
vim:amd64 2:8.0.1453-1ubuntu1.1 bionic-security security.ubuntu.com
vim:amd64 2:8.0.1453-1ubuntu1.1 bionic-updates  archive.ubuntu.com
vim:amd64 not installed

这里, -一种 switch 打印给定包的所有可用版本。

如果给定的包已经安装,则不需要使用 -一种 选项。 在这种情况下,只需运行:

$ apt-show-versions vim

就这样。 如果您知道任何其他方法,请在下面的评论部分分享。 我将检查并更新本指南。