Bash
如何從 bash 檢查 Debian 中是否存在軟體包
我想編寫一個安裝 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 package
where 包是虛擬包(不存在,但例如被其他包引用的包),您將獲得:N: Can't select versions from package 'package' as it is purely virtual N: No packages found
這個
exit code
是零(在我看來這有點誤導。)