dpkg nie może znaleźć ldconfig / start-stop-daemon w zmiennej PATH

41

Próbowałem zainstalować bsd-mailxnarzędzie, pakiet został zainstalowany, ale zastanawiam się nad błędem.

To jest błąd, który otrzymuję:

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)
użytkownik87142
źródło
Czy możesz $PATHwysłać wynik echa ?
chaos
@ chaos, jak to zdobyć?
user87142,
@ user87142 Wystarczy wpisać echo $PATHterminal.
John WH Smith,
@ chaos, dostaję to ... / usr / local / bin: / usr / bin: / bin: / usr / games
user87142
A wydajność cat /etc/environment?
chaos

Odpowiedzi:

59

Po pierwsze, linie, którymi naprawdę jesteś zainteresowany:

dpkg: warning: 'ldconfig' not found in PATH or not executable.
dpkg: warning: 'start-stop-daemon' not found in PATH or not executable.

Błędy te były zgłaszane kilkakrotnie przez użytkowników Debiana i Ubuntu (w rzeczywistości możesz je Google, aby uzyskać więcej informacji). Wygląda na to, że PATHzmienna nie jest poprawnie ustawiona, gdy użytkownik próbuje wykonać polecenie sudo, co prawdopodobnie jest tym, co próbujesz zrobić.

Rozwiązanie 1: Ustaw sudodomyślną bezpieczną ścieżkę

Otwórz /etc/sudoers, uruchamiając visudow swoim terminalu i upewnij się, że plik zawiera następujący wiersz:

Defaults env_reset
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Więcej informacji na temat tego problemu można znaleźć tutaj (Problemy i porady> PATH nie ustawiono).

Rozwiązanie 2: użyj konta root bezpośrednio

Nie używaj sudo, po prostu przełącz się na, rootaby uruchomić polecenia. Uruchom jedno z następujących poleceń, aby to zrobić:

$ sudo -i
$ su 

Po zalogowaniu się jako root uruchom apt-getponownie polecenia:

# apt-get ...

Być może będziesz musiał PATHnajpierw ustawić roota . Edytuj /root/.bashrc(oczywiście z uprawnieniami administratora) i dodaj następujący wiersz:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Rozwiązanie 3: spróbuj przekazać PATHzmienną sudow czasie wykonywania.

Wystarczy poprzedzić sudowywołanie redefinicją PATHzmiennej:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin sudo apt-get ...
John WH Smith
źródło
1
Próbowałem użyć użytkownika root, ale nie działałem. Sprawdziłem też ścieżkę.
user87142,
@ user87142 Cóż, nie sprawdziłeś poprawnie, ponieważ /sbinbrakuje. Spróbuj skonfigurować go ponownie (rozwiązania 1 i / lub 3). Zedytowałem rozwiązanie 2, aby uwzględnić sposób edycji ŚCIEŻKI root podczas korzystania z konta interaktywnie.
John WH Smith,
Sprawdziłem, że ...... Domyślne env_reset Domyślne secure_path = "/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin"
user87142
Czy znalazłeś jakieś rozwiązanie?
Brijesh Valera,
Odmiana jego trzeciego rozwiązania to export PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/bin:/binnajpierw, a sudo -E apt install nginxpotem. Te -Eśrodki przełączające --preserve-envsposób eksportowania env vars do sudosesji.
Mark Hudson
2

jakoś miałem ten sam problem.

Przeczytaj uważnie swój komunikat o błędzie, a znajdziesz rozwiązanie. Jest notatka, która mówi:

Uwaga: ŚCIEŻKA root'a powinna zwykle zawierać / usr / local / sbin, / usr / sbin i / sbin.

Potem sprawdziłem swoją ścieżkę i jakoś mi brakowało / sbin na mojej ścieżce.

echo $ PATH

potem dodałem i problem zniknął. :)

export PATH = "$ PATH: / sbin"

Tcharam!

Danilo Souza
źródło
Jednak jestem pewien, że zostało to już zawarte w istniejącej odpowiedzi
Jeff Schaller
1

Miałem dzisiaj ten problem i rozwiązałem go, komentując linię (używając #)

Defaults    exempt_group=sudo

z mojego pliku / etc / sudoers przy użyciu

# visudo

jako root

Ta zmiana spowoduje, że sudo użyje domyślnej zmiennej secure_path ustawionej w tym samym pliku.

Cabub
źródło
To rozwiązało dla mnie na Ubuntu 18.04.1
sw00