Debian

列出獨立於發行版的已安裝軟體包

  • April 25, 2018

我正在尋找一些標準方法來在我的 Linux 機器中獲取所有已安裝的軟體包,但我想獨立於發行版來實現它。

對於一些特定的發行版,如 Debian/Ubuntu、Fedora/CentOS 等,我在這裡找到了一些非常 好的 答案,但我沒有以獨立於發行版的方式獲取這些資訊。

我的第一個選擇是:列出某些特定位置的所有目錄,例如/optor /usr/bin。但是使用這種方法,我沒有安裝版本的資訊。在最好的情況下,我可以獲得已安裝軟體包的名稱,僅此而已。

一些背景

我有一個 IP 地址和埠列表(在電子表格中),需要通過 SSH 連接到每個系統並獲取已安裝的軟體包及其版本,但發行版可能會有很大差異。

這將是一項一次性任務,但將來會出現其他電子表格,因此我將多次使用相同的解決方案。

由於我知道電子表格中的一些機器並根據客戶的資訊,我可以推斷該列表是針對伺服器的,只有幾個桌面。正如我之前所說,發行版可能會有很大差異,但可以肯定地說,我擁有大量的 Ubuntu、Debian 和 CentOS 機器。

對於台式機,大多數是帶有一些 macOS 的 Ubuntu。

如果有幫助,我可以使用一些 Bash、Python 或 PHP 腳本。

對於第一個版本,我決定忽略特定語言的包管理器,例如npmrvmcomposer等,即使這些包是全域安裝的。

簡而言之:是否有任何標準方法可以讓所有已安裝的軟體包獨立於發行版?

不完全是,因為今天的一些發行版tar用作他們的“包管理器”。但是,您通常可以查看/etc/issue相關係統的發行版和發布的名稱,並做出一些推論。或者,您可以簡單地檢查二進製文件的存在,例如yum, up2date, apt, emerge, pacman, brew, port, choco, 等等。然而,有趣的是,這可能會在(比如)一個 Debian 派生系統上失敗,因此有人決定嘗試開始yum工作。

您絕對可以開發一個可檢查機器/伺服器/主機的作業系統的 ansible playbook,然後使用相應的包管理器命令列出包名稱。

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