使用 dnf 安裝時 sudo 的必要性
我正在使用 Fedora 33。我可能對一個簡單的事實感到困惑。
如果我嘗試執行一個未安裝的程序,dnf 將搜尋 repos 並建議安裝它。如果我回答是,它將被安裝並且我可以正常使用它。
如果我要嘗試安裝該軟體 (
dnf install <package>
),我會被要求輸入超級使用者密碼。對於我的範例,我嘗試兩種方式安裝“遊俠”,但似乎找不到區別。兩者都位於同一個 bin 目錄中,並且都在程序中的使用者下執行。
我的問題如下:如果可以簡單地安裝沒有密碼的軟體,為什麼 dnf 要求它?
在您描述的場景中,“您”沒有安裝已安裝的軟體包 - PackageKit服務(已經以 root 身份執行)正在代表您進行安裝。PackageKit 使用 PolicyKit 來確定允許或不允許誰安裝包 - 如果您不希望非特權使用者能夠安裝軟體,您可以更改 PolicyKit 策略以禁止它。PackageKit 存在的原因之一是使用者不必知道正在使用的任何發行版上的包管理系統的詳細資訊(無論是
dnf
, 或yum
, 或apt
, 或pacman
, 或其他) - 他們只需要讓 PackageKit 安裝包,PackageKit 處理該特定發行版上包管理和安裝的細節。當您dnf
在 Fedora 上手動使用安裝包時,您是在直接與包管理系統互動 - PackageKit 不會代表您執行此操作 - 這就是為什麼您需要以 root 身份執行(或提供 root 密碼)才能執行在該級別安裝軟體包。但是,作為普通使用者,您可以pkcon install <packagename>
請求 PackageKit 代表您進行安裝(只要 PolicyKit 中配置的系統策略允許您這樣做),而不必以 root 身份執行(通過su
或sudo
等)。 ),或提供 root 密碼。您正在談論的行為,如果您嘗試在命令行上執行由您尚未安裝的軟體包提供的某些內容,則會提示您安裝軟體包,這是由名為“ PackageKit-command-未找到”。我絕對討厭這種行為,我在任何新安裝的 Linux 系統上做的第一件事就是刪除
PackageKit-command-not-found
包,所以這沒有完成….