Bash

如何從 bash 檢查 Debian 中是否存在軟體包

  • July 6, 2020

我想編寫一個安裝 bash 腳本,我想在其中安裝 MySQL 伺服器。

在 Linux Mint 上,我遵循了程式碼:

apt-get -y --force-yes install mysql-server-5.6

但我安裝了新的 Debian 8 並沒有mysql-server- 而是有mariadb.

如何確定包是否存在?

我只知道有dpkg -s哪個應該告訴是否安裝了一個包。

(以下來自 Ubuntu,但同樣的技術顯然也適用於 Debian)

$ apt-cache show screen
Package: screen
Priority: optional
Section: misc
Installed-Size: 950
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Axel Beckert <abe@debian.org>
Architecture: amd64
Version: 4.1.0~20120320gitdb59704-9
Depends: libc6 (>= 2.15), libpam0g (>= 0.99.7.1), libtinfo5
Suggests: iselect (>= 1.4.0-1) | screenie | byobu
Filename: pool/main/s/screen/screen_4.1.0~20120320gitdb59704-9_amd64.deb
Size: 645730
...

如果包存在,將顯示資訊。如果沒有,您會看到如下內容:

$ apt-cache show foobar
N: Unable to locate package foobar
E: No packages found

此外,如果沒有找到匹配的包,則退出程式碼apt-cache將為非零。

**附加說明:**如果您使用apt-cache show packagewhere 包是虛擬包(不存在,但例如被其他包引用的包),您將獲得:

N: Can't select versions from package 'package' as it is purely virtual
N: No packages found

這個exit code是零(在我看來這有點誤導。)

引用自:https://unix.stackexchange.com/questions/199633