Я пытался установить 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 секунд.