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

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

Я пытался установить 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 (вы можете на самом деле погуглить их для получения дополнительной информации). Похоже, что переменная 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 не задан).

Решение 2: используйте учетную запись 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

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

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

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

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

эхо $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

Ни одно из представленных здесь решений мне не помогло, поэтому я объясню, что со мной произошло и что я сделал, чтобы это исправить:

Я пытался установить Insync в моей системе Q4OS, но не смог, потому что приложение требует libc6 >= 2.32, а Q4OS использует 2.31. Я нашел libc6 deb 2.32, и тут начался кошмар. Он сломал всю мою систему. перестал 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 секунд.

Связанный контент