有沒有辦法區分 Linux 中的系統軟體包和手動安裝的軟體包?

有沒有辦法區分 Linux 中的系統軟體包和手動安裝的軟體包?

我正在嘗試編寫一個腳本,在其中可以判斷該軟體包是預先安裝的還是由用戶安裝的。

我們還可以有辦法知道以下是套件「X」的依賴關係嗎

答案1

rpm在你無法真正知道的層面上。根據您使用的套件管理器,可能會儲存一些資訊。

請注意,這僅在使用者使用 執行安裝命令時才有效sudo。如果他成為 root,你將永遠不知道是誰幹的。

百勝

yum history

為您提供事務清單以及哪個使用者啟動了該命令。

地下城

dnf history

為您提供交易列表,但預設不列出用戶。但是您可以運行:

dnf history info <ID>

然後你會看到啟動指令的用戶

齊普

沒有辦法知道這一點。

答案2

您的標籤不清楚,我們不知道您使用哪個套件管理器。但既然你使用了 arch-linux 標籤,我就用 pacman 來回答。

嗯,第一個問題是一個難題,據我所知,這實際上是不可能的,並且在很大程度上取決於您的安裝。沒有一種標準的 Linux 安裝,因為有許多不同的發行版、桌面環境、安裝程式選項…但一種方法是查找隨您的設定安裝了哪些軟體包組並取得其他軟體包(可能是由用戶安裝)使用以下命令:comm -23 <(pacman -Qeq | sort) <(pacman -Qgq base | sort)其中 base 是您預先安裝的群組之一。

對於問題的第二部分:您可以使用以下命令獲取有關包的信息pacman -Si <yourpackage>,如果您想將輸出簡化為僅依賴項,請查看這個線程

答案3

安裝時在發行版網站上檢查相關發行版中包含的軟體包。這些都是預先安裝的;其他所有內容都是在 insta 後添加的;;/

相關內容