dpkg 在 PATH 變數中找不到 ldconfig/start-stop-daemon

dpkg 在 PATH 變數中找不到 ldconfig/start-stop-daemon

我試圖安裝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 秒後崩潰。

相關內容