dpkg не может найти ldconfig / start-stop-daemon в переменной PATH

41

Я пытался установить 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)
user87142
источник
Можете ли вы опубликовать вывод echo, $PATHпожалуйста?
хаос
@ хаос, как это получить?
user87142
@ user87142 Просто введите echo $PATHв терминал.
Джон У. С. Смит
@ хаос, я понял ... / usr / local / bin: / usr / bin: / bin: / usr / games
user87142
А на выходе cat /etc/environment?
хаос

Ответы:

59

Прежде всего, линии, которые вас действительно интересуют:

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"

Более подробную информацию об этой проблеме можно найти здесь (Проблемы и советы> ПУТЬ не задана).

Решение 2: использовать учетную запись root напрямую

Не используйте sudo, просто переключитесь rootна запуск ваших команд. Для этого выполните одну из следующих команд:

$ sudo -i
$ su 

Как только вы войдете в систему как root, просто запустите ваши apt-getкоманды снова:

# apt-get ...

Возможно, вам придется PATHсначала установить root . Отредактируйте /root/.bashrc(конечно, с правами суперпользователя) и добавьте следующую строку:

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 ...
Джон У. Смит
источник
1
Я пытался использовать пользователя root, но не работал. Я также проверил путь.
user87142
@ user87142 Ну, вы не правильно проверили, так /sbinкак отсутствует. Попробуйте настроить его снова (решения 1 и / или 3). Я отредактировал решение 2, включив способ редактирования PATH root при интерактивном использовании учетной записи.
Джон У. С. Смит
Я проверил, что ...... По умолчанию env_reset По умолчанию secure_path = "/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin"
user87142
Вы нашли какое-нибудь решение этого?
Бриеш Валера
Вариант его 3-го решения - export PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/bin:/binсначала, а затем sudo -E apt install nginx. В -Eсредстве коммутации --preserve-envтаким образом экспортировать окр вары на sudoсессию.
Марк Хадсон
2

как-то у меня была такая же проблема.

Пожалуйста, внимательно прочитайте свое сообщение об ошибке, и вы найдете решение. Есть записка, в которой говорится:

Примечание: PATH root обычно должен содержать / usr / local / sbin, / usr / sbin и / sbin.

Затем я проверил свой путь и почему-то мне не хватало / sbin в моем пути.

echo $ PATH

Затем я добавил, и проблема исчезла. :)

экспорт PATH = "$ PATH: / sbin"

Tcharam!

Данило Соуза
источник
Уверен , это уже охватывается существующий ответ , хотя
Джефф Schaller
1

У меня была эта проблема сегодня, и я решил ее, закомментировав строку (используя #)

Defaults    exempt_group=sudo

из моего файла / etc / sudoers, используя

# visudo

как корень

Это изменение приведет к тому, что sudo будет использовать переменную secure_path по умолчанию, установленную в том же файле.

Cabub
источник
Это решило это для меня на Ubuntu 18.04.1
sw00