咱們近期發佈了一篇關於批量程序包安裝的文章。在此同時,關於如何獲取系統上已安裝了的程序包信息,我也作了些調查而後找到了些方法。我會把這些方法分享在咱們的網站上,但願能幫助到其餘人。linux
有不少種方法能夠檢查程序包是否已安裝,我找到了 7 種命令,你能夠從中選擇你喜歡的使用。git
以下:github
apt-cache
:可用於查詢 APT 緩存或程序包的元數據。apt
:是基於 Debian 的系統中的安裝、下載、刪除、搜索和管理包的強有力的工具。dpkg-query
:一個查詢 dpkg 數據庫的工具。dpkg
:基於 Debian 的系統的包管理工具。which
:返回在終端中輸入命令時執行的可執行文件的全路徑。whereis
:可用於搜索指定命令的二進制文件、源碼文件和幫助文件。locate
:比 find
命令快,由於其使用 updatedb
數據庫搜索,而 find
命令在實際系統中搜索。apt-cache
命令用於從 APT 內部數據庫中查詢APT 緩存和包的元數據,將會搜索和顯示指定包的信息,包括是否安裝、程序包版本、源碼倉庫信息等。數據庫
下面的示例清楚的顯示 nano
包已經在系統中安裝了以及對應安裝的版本號。ubuntu
# apt-cache policy nano
nano:
Installed: 2.9.3-2
Candidate: 2.9.3-2
Version table:
*** 2.9.3-2 500
500 http://in.archive.ubuntu.com/ubuntu bionic/main amd64 Packages
100 /var/lib/dpkg/status
複製代碼
apt
是一個功能強大的命令行工具,可用於安裝、下載、刪除、搜索、管理程序包以及查詢關於程序包的信息,相似對於 libapt-pkg
庫的全部功能的底層訪問。其包含一些與包管理相關的但不多用到的命令行功能。緩存
# apt -qq list nano
nano/bionic,now 2.9.3-2 amd64 [installed]
複製代碼
dpkg-query
是顯示 dpkg
數據庫中程序包信息列表的一個工具。bash
下面示例中的輸出的第一列 ii
,表示查詢的程序包已安裝了。ionic
# dpkg-query --list | grep -i nano
ii nano 2.9.3-2 amd64 small, friendly text editor inspired by Pico
複製代碼
dpkg
(debian package)是一個安裝、構建、刪除和管理 Debian 包的工具,但和其餘包管理系統不一樣的是,其不能自動下載和安裝包或包依賴。工具
下面示例中的輸出的第一列 ii
,表示查詢的包已安裝了。網站
# dpkg -l | grep -i nano
ii nano 2.9.3-2 amd64 small, friendly text editor inspired by Pico
複製代碼
which
命令返回在終端中輸入命令時執行的可執行文件的全路徑。這對於你想要給可執行文件建立桌面快捷方式或符號連接時很是有用。
which
命令僅在當前用戶 PATH
環境變量配置的目錄列表中搜索,而不是在全部用戶的目錄中搜索。這意思是當你登入你本身帳號時,其不會在 root
用戶文件或目錄中搜索。
若是對於指定的程序包或可執行文件路徑有以下輸出,則表示已安裝了,不然沒有。
# which nano
/bin/nano
複製代碼
whereis
命令用於針對指定命令搜索對應的程序二進制文件、源碼文件以及幫助文件等。
若是對於指定的程序包或可執行文件路徑有以下輸出,則表示已安裝了,不然沒有。
# whereis nano
nano: /bin/nano /usr/share/nano /usr/share/man/man1/nano.1.gz /usr/share/info/nano.info.gz
複製代碼
locate
命令比 find
命令快,由於其在 updatedb
數據庫中搜索,而 find
命令在實際系統中進行搜索。
對於獲取指定文件,其使用數據庫而不是在特定目錄路徑中搜索。
locate
命令不會預安裝在大多數系統中,須要手動安裝。
locate
使用的數據庫會根據定時任務按期更新。固然,咱們也能夠手動更新。
若是對於指定的程序包或可執行文件路徑有以下輸出,則表示已安裝了,不然沒有。
# locate --basename '\nano'
/usr/bin/nano
/usr/share/nano
/usr/share/doc/nano
複製代碼
via: www.2daygeek.com/how-to-chec…
做者:Magesh Maruthamuthu 選題:lujun9972 譯者:yizhuoyan 校對:wxy