如何在安裝之前檢查 Linux 軟體包的版本?

2019-08-18 11:15:00

大多數人都知道如何在 Linux 中查詢已安裝軟體包的版本,但是,你會如何查詢那些還沒有安裝的軟體包的版本呢?很簡單!本文將介紹在 Debian 及其衍生品(如 Ubuntu)中,如何在軟體包安裝之前檢查它的版本。對於那些想在安裝之前知道軟體包版本的人來說,這個小技巧可能會有所幫助。

在安裝之前檢查 Linux 軟體包版本

在基於 DEB 的系統中,即使軟體包還沒有安裝,也有很多方法可以檢視他的版本。接下來,我將一一介紹。

方法 1 – 使用 Apt

檢查軟體包的版本的懶人方法:

$ apt show <package-name>

範例:

$ apt show vim

範例輸出:

Package: vimVersion: 2:8.0.1453-1ubuntu1.1Priority: optionalSection: editorsOrigin: UbuntuMaintainer: Ubuntu Developers <[email protected]>Original-Maintainer: Debian Vim Maintainers <[email protected]>Bugs: https://bugs.launchpad.net/ubuntu/+filebugInstalled-Size: 2,852 kBProvides: editorDepends: 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-scriptsHomepage: https://vim.sourceforge.io/Task: cloud-image, serverSupported: 5yDownload-Size: 1,152 kBAPT-Sources: http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 PackagesDescription: 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 這個命令:

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

甚至更短:

$ apt list vimListing... Donevim/bionic-updates,bionic-security 2:8.0.1453-1ubuntu1.1 amd64N: There is 1 additional version. Please use the '-a' switch to see it

apt 是 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... DoneBuilding dependency treeReading state information... DoneSuggested packages:  ctags vim-doc vim-scriptsThe following NEW packages will be installed:  vim0 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 時會發生什麼。

你可以將 install 選項替換為 upgrade,以檢視升級包時會發生什麼。

$ apt-get -s upgrade vim

方法 3 – 使用 Aptitude

在 Debian 及其衍生品中,aptitude 是一個基於 ncurses(LCTT 譯註:ncurses 是終端基於文字的字元處理的庫)和命令列的前端 APT 包管理器。

使用 aptitude 來檢視軟體包的版本,只需執行:

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

你還可以使用模擬選項(-s)來檢視安裝或升級包時會發生什麼。

$ aptitude -V -s install vimThe 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 標誌用於顯示軟體包的詳細資訊。

$ aptitude -V -s upgrade vim

類似的,只需將 install 替換為 upgrade 選項,即可檢視升級包會發生什麼。

$ 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-1ubp vim-tlib                                                      Some vim utility functions                                               1.23-1p vim-ultisnips                                                 snippet solution for Vim                                                 3.1-3p vim-vimerl                                                    Erlang plugin for Vim                                                    1.4.1+git20120p vim-vimerl-syntax                                             Erlang syntax for Vim                                                    1.4.1+git20120p vim-vimoutliner                                               script for building an outline editor on top of Vim                      0.3.4+pristinep vim-voom                                                      Vim two-pane outliner                                                    5.2-1p vim-youcompleteme                                             fast, as-you-type, fuzzy-search code completion engine for Vim           0+20161219+git

方法 4 – 使用 Apt-cache

apt-cache 命令用於查詢基於 Debian 的系統中的 APT 快取。對於要在 APT 的包快取上執行很多操作時,它很有用。一個很好的例子是我們可以從某個倉庫或 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 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages        500 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages     2:8.0.1453-1ubuntu1 500        500 http://archive.ubuntu.com/ubuntu bionic/main amd64 Packages

正如你在上面的輸出中所看到的,Vim 並沒有安裝。如果你想安裝它,你會知道它的版本是 8.0.1453。它還顯示 vim 包來自哪個倉庫。

方法 5 – 使用 Apt-show-versions

在 Debian 和基於 Debian 的系統中,apt-show-versions 命令用於列出已安裝和可用軟體包的版本。它還顯示所有可升級軟體包的列表。如果你有一個混合的穩定或測試環境,這是非常方便的。例如,如果你同時啟用了穩定和測試倉庫,那麼你可以輕鬆地從測試庫找到應用程式列表,還可以升級測試庫中的所有軟體包。

預設情況下系統沒有安裝 apt-show-versions,你需要使用以下命令來安裝它:

$ sudo apt-get install apt-show-versions

安裝後,執行以下命令查詢軟體包的版本,例如 Vim:

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

這裡,-a 選項列印給定軟體包的所有可用版本。

如果已經安裝了給定的軟體包,那麼就不需要使用 -a 選項。在這種情況下,只需執行:

$ apt-show-versions vim

差不多完了。如果你還了解其他方法,在下面的評論中分享,我將檢查並更新本指南。