dpkg가 PATH 변수에서 ldconfig / start-stop-daemon을 찾을 수 없습니다


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?
혼돈

@ 카오스, 어떻게 얻을 수 있습니까?
user87142

@ user87142 echo $PATH터미널을 입력하십시오 .
John WH Smith

@chaos, 나는 이것을 얻는다 ... / 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.

이 오류는 데비안 및 우분투 사용자에 의해 여러 번보고되었습니다 (자세한 내용은 실제로 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 

루트로 로그인 한 후 apt-get명령을 다시 실행 하십시오.

# apt-get ...

루트를 PATH먼저 설정해야 할 수도 있습니다 . /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
루트 사용자를 사용해 보았지만 작동하지 않았습니다. 경로도 확인했습니다.
user87142

@ user87142 글쎄, 당신은 제대로 확인되지 않았기 때문에 /sbin. 다시 설정해보십시오 (해결 방법 1 및 / 또는 3). 계정을 대화식으로 사용할 때 루트 PATH를 편집하는 방법을 포함하도록 솔루션 2를 편집했습니다.
John WH Smith

다음을 확인했습니다 ....... 기본값 env_reset 기본값 secure_path = "/ usr / local / sbin : / usr / local / bin : / usr / sbin : / usr / bin : / sbin : / bin"
user87142

해결책이 있습니까?
Brijesh Valera

그의 세 번째 솔루션의 변형은 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이 누락되었습니다.

에코 $ PATH

그런 다음 문제가 추가되었습니다. :)

내보내기 PATH = "$ PATH : / sbin"

차람!


그래도 이것은 이미 기존 답변에 의해 이미 다루어 졌음에 틀림 없습니다.
Jeff Schaller

1

오늘이 문제가 있었고 줄을 주석 처리하여 해결했습니다 (# 사용)

Defaults    exempt_group=sudo

내 / etc / sudoers 파일에서

# visudo

루트로

이 변경으로 인해 sudo는 동일한 파일에 설정된 기본 secure_path 변수를 사용합니다.


이것은 Ubuntu 18.04.1
sw00
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.