dpkg не може знайти ldconfig / start-stop-демон в змінній 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)

Чи можете ви опублікувати вихід ехо, $PATHбудь ласка?
хаос

@ хаос, як це отримати?
користувач87142

@ 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"

Більше інформації про цю проблему можна знайти тут (Проблеми та поради> PATH не встановлено).

Рішення 2: безпосередньо використовуйте кореневий рахунок

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

$ sudo -i
$ su 

Після входу в систему як root, просто запустіть свої apt-getкоманди ще раз:

# apt-get ...

Можливо, вам доведеться встановити 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 ...

1
Я намагався використовувати root користувача, але не працював. Я також перевірив шлях.
користувач87142

@ user87142 Добре ви не перевірили правильно, оскільки /sbinвідсутній. Спробуйте налаштувати його ще раз (рішення 1 та / або 3). Я відредагував рішення 2, щоб включити спосіб редагування PATH кореня при інтерактивному використанні облікового запису.
Джон У. Сміт

Я перевірив, що ...... За замовчуванням env_reset Налаштування за замовчуванням secure_path = "/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin"
user87142

Ви знайшли якесь рішення?
Бріеш Валера

Варіація його третього рішення - export PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/bin:/binспочатку, потім sudo -E apt install nginxпісля цього. У -Eзасобі комутації --preserve-envтаким чином експортувати окр вари на sudoсесію.
Марк Хадсон

2

якось у мене була така ж проблема.

Будь ласка уважно прочитайте своє повідомлення про помилку, і ви знайдете рішення. Є примітка, яка говорить:

Примітка: PATH кореня зазвичай повинен містити / usr / local / sbin, / usr / sbin та / sbin.

Тоді я перевірив свій шлях, і я якось пропустив / sbin на своєму шляху.

echo $ PATH

потім я додав і проблеми вже не було. :)

export PATH = "$ PATH: / sbin"

Чарам!


Досить впевнений, що це вже було охоплено існуючою відповіддю , проте
Джефф Шаллер

1

У мене сьогодні була ця проблема, і я вирішив її, коментуючи рядок (використовуючи #)

Defaults    exempt_group=sudo

з мого файлу / etc / sudoers, використовуючи

# visudo

як корінь

Ця зміна призведе до використання sudo для змінної secure_path, встановленої за тим самим файлом.


Це вирішило це для мене на Ubuntu 18.04.1
sw00
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.