我試圖安裝bsd-mailx
已安裝的軟體包的實用程序,但我想知道該錯誤。
這是我得到的錯誤:
Preconfiguring packages ...
dpkg: warning: 'ldconfig' not found in PATH or not executable.
dpkg: warning: 'start-stop-daemon' not found in PATH or not executable.
dpkg: error: 2 expected programs not found in PATH or not executable.
Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin.
E: Sub-process /usr/bin/dpkg returned an error code (2)
答案1
首先,您真正感興趣的線路是:
dpkg: warning: 'ldconfig' not found in PATH or not executable.
dpkg: warning: 'start-stop-daemon' not found in PATH or not executable.
Debian 和 Ubuntu 用戶已多次報告這些錯誤(您實際上可以透過 Google 獲取更多資訊)。PATH
當使用者嘗試透過 執行命令時,變數似乎沒有正確設置sudo
,這可能是您想要做的。
解決方案1:設定sudo
預設安全路徑
/etc/sudoers
透過在終端機中運行來打開visudo
,並確保該檔案包含以下行:
Defaults env_reset
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
有關此問題的更多資訊可以找到這裡(問題與提示> PATH 未設定)。
方案二:直接使用root帳戶
不要使用sudo
,只需切換到 來root
運行命令。運行以下命令之一來執行此操作:
$ sudo -i
$ su
以 root 身分登入後,只需apt-get
再次執行命令:
# apt-get ...
不過,您可能必須先設定 root PATH
。編輯/root/.bashrc
(當然需要 root 權限),並新增以下行:
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
解決方案3:嘗試在執行時傳遞PATH
變數。sudo
只需sudo
在呼叫前加上變數的重新定義即可PATH
:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin sudo apt-get ...
答案2
不知何故我也遇到了同樣的問題。
請仔細閱讀您的錯誤訊息,您將找到解決方案。有一條註釋說:
注意:root 的 PATH 通常應包含 /usr/local/sbin、/usr/sbin 和 /sbin。
然後我檢查了我的路徑,不知何故我在路徑中丟失了 /sbin 。
回顯$PATH
然後我添加了,問題就消失了。 :)
導出 PATH="$PATH:/sbin"
查拉姆!
答案3
問題中缺乏描述使得很難確定這種情況下的確切問題,但我最近遇到了同樣的問題:
user@debian:su
Password:
root@debian:/home/user/Downloads# dpkg -i [Some package]
dpkg: warning: 'ldconfig' not found in PATH or not executable
dpkg: warning: 'start-stop-daemon' not found in PATH or not executable
dpkg: error: 2 expected programs not found in PATH or not executable
Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin
解決方案是使用su -
而不是su
(這通常更好,詳見這個問題的答案):
user@debian:su -
Password:
root@debian:~# cd /home/user/Downloads/
root@debian:/home/user/Downloads# dpkg -i [Some package]
答案4
這裡顯示的解決方案都沒有幫助我,所以我將解釋發生在我身上的事情以及我做了什麼來解決它:
我試圖在我的 Q4OS 系統中安裝 Insync,但無法安裝,因為該應用程式需要 libc6 >= 2.32,而 Q4OS 使用 2.31。我找到了一個 2.32 的 libc6 deb,然後噩夢就開始了。它已經破壞了我的整個系統。apt-get
停止工作,它說系統需要 libc6 2.31 才能正常工作。當時我不知道如何降版本。因此,重新啟動後,系統根本無法啟動並掛起,並顯示啟動訊息:
A start job is running for Hold until boot process finishes up (Xmin Xs/no limit)
我嘗試更改終端但沒有成功。希望我的 Linux 運行在 VMWare 下,並且我能夠使用 SSH 連接到機器。VM -> SSH -> Connect to SSH...
之後我嘗試了很多東西都沒有成功。我嘗試升級:
sudo apt install upgrade
該消息說我必須運行:
sudo apt --fix-broken install
但是當我嘗試運行它時,它說很多軟體包將被刪除,包括q4os-desktop
它本身。好吧,我接受了條件並嘗試了。我還能失去什麼?
之後,事情變得更糟。我無法運行任何東西。我在這個問題上遇到了類似的錯誤:
Preconfiguring packages ...
dpkg: warning: 'ldconfig' not found in PATH or not executable.
dpkg: warning: 'start-stop-daemon' not found in PATH or not executable.
dpkg: error: 2 expected programs not found in PATH or not executable.
Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin.
E: Sub-process /usr/bin/dpkg returned an error code (2)
但問題不在於 PATH 本身,而是 ldconfig 是 libc6 的一部分,並且已刪除。我無能為力,因為幾乎所有事情都取決於 libc6 和 ldconfig。我嘗試從原始碼編譯 libc6,但沒有成功。它有很多依賴項,當我嘗試安裝依賴項時,該庫嘗試使用 libc6 的某些內容。一種依賴循環。
因此,我使用 Q4OS live CD 重新啟動系統,然後將二進位 ldconfig 複製到/usr/sbin/ldconfig
.美好的!現在,它又apt-get
開始工作了(不完美,但...)。所以我發現如何降級庫:
sudo apt install libc6=2.31-13+deb11u3
如果您不確定要使用哪個版本,請執行:
apt list --installed | grep libc6
Live CD 內。輸出應該類似:
libc6/stable,now 2.31-13+deb11u3 amd64 [installed]
之後,我能夠再次安裝 Q4OS:
sudo apt install q4os-desktop
重啟後,一切恢復正常!
但現在當我運行 Insync 時,應用程式會在 5 秒後崩潰。