sudo의 성가신 메시지를 Mountain Lion 10.8.0에서 삭제할 수 있습니까?


11

10.8.0으로 업그레이드 한 후에는 언제든지 sudo, 나는 항상이 메시지를 받는다 :

dyld: DYLD_ environment variables being ignored because main executable (/usr/bin/sudo) is setuid or setgid

나는 내 검사를 했어. .bash_profile, .zshrc 내가 생각할 수있는 모든 것, 그리고 나는 DYLD_ 환경.

몇 시간 동안 인터넷 검색을 한 후이 두 줄을 내 .zshrc:

unset LD_LIBRARY_PATH  
unset DYLD_LIBRARY_PATH

그러나 성가신 메시지는 여전히 나타납니다.

나는 손님 계정으로 가서 sudo 그러나 didnt는 '이 메시지를 얻는다. 그래서 몇 가지 사용자 정의 라이브러리를 설치 한 것 같아요 ...하지만이 디버깅하는 방법을 모르겠습니다.

답변:


6

다른 DYLD_ 변수가 설정되어 있습니까? 운영 set 매개 변수없이 모든 변수를보고 해당 접두사와 함께 나오는 모든 것을 설정 해제하십시오.

DYLD_PRINT_WARNINGS를 활성화하지 않으면 이러한 메시지가 인쇄되지 않아야한다는 점에 유의하십시오.

또한 10.8.1에 대한 업데이트는이 성가심을 패치 한 것으로 보입니다.


1
ML 버그, 내가 말할 수있는 한. DYLD_ 변수는 중요 할 수 있습니다. 변수를 제거하면 설정 한 값이 깨질 수 있습니다.
gabedwrds

2
글쎄, 환경 변수 DYLD_PRINT_WARNINGS를 설정하지 않는 한 그 메시지를 보지 않아야한다는 버그가 있습니다. 그러나 Mountain Lion이 어떤 이유로 그것들을 인쇄합니다.
gabedwrds

2
10.8.1 문제를 해결하지 못했습니다.
Matteo

2
모든 DYLD_ 환경 변수를 설정 해제하는 것은 아니 그들은 이유가 있기 때문에 거기있는 해결책입니다. 그것은 버그 다. 그리고 우리는 애플이 그것을 고칠 때까지 그것에 매달렸다.
Matteo

2
10.8.3에서이 문제가 있습니다.
Alex Szatmary

3

zsh에서 :

 sudo () { ( unset LD_LIBRARY_PATH DYLD_LIBRARY_PATH; exec command sudo $* ) }

이것은 sudo가 불평하는 환경 변수가 설정되지 않은 하위 셸을 생성 한 다음 sudo를 실행합니다.

몇 가지 다른 답변에 대한 장점은 다음과 같습니다.

  • 대화식 쉘 환경에서 LD_LIBRARY_PATH 및 DYLD_LIBRARY_PATH를 제거하지 않습니다 (필요한 sudo가 아닌 명령의 경우).
  • 하위 쉘을 사용하면 실행 중 (예 : Ctrl-C)에 sudo를 중단하면 마스터 쉘에서 LD_LIBRARY_PATH 및 DYLD_LIBRARY_PATH가 변경되지 않습니다 (대화식 쉘에서 설정 및 해제하는 다른 응답의 스크립트와는 다릅니다) ).
  • exec를 사용하면 sudo를 호출 할 때 즉시 불필요한 부모 쉘이 종료되므로 명령 실행 중에 여분의 프로세스가 멈추지 않습니다.

독자에게 bash로 이식하는 연습으로 남겨 둘 것입니다.


"나는 그것을 bash에 이식하기 위해 독자에게 운동으로 남겨 둘 것이다. 대부분의 Apple 사용자는 사전 설치된 Bash (풍자)보다 ZSH를 사용하기 때문입니다.
Jonathan Dumaine

2

yokyoh1987에 의해 사과 지원 포럼에서 발견 된 문제를 해결하십시오.

https://discussions.apple.com/thread/4143805?start=30&tstart=0

.profile / .bashrc / .bash_profile (터미널 설정에 따라 다름) :

# set DYLD_* for my normal programs
DYLD_LIBRARY_PATH='..'

# set an alternative sudo
thesudo()
{
# back up the DYLD_* variables
local BACK=$DYLD_LIBRARY_PATH

# unset DYLD_*
unset DYLD_LIBRARY_PATH

# calling sudo
/usr/bin/sudo "$@"

# restore DYLD_* after sudo finished
export DYLD_LIBRARY_PATH=$BACK
}

# redirect sudo
alias sudo=thesudo

그것은 env 관리의 현명한 작은 조각입니다.
bmike

이 솔루션의 한 가지 문제점은 sudo를 중단하면 (예 : ctrl-c를 통해) DYLD_LIBRARY_PATH var이 자동으로 대화 형 셸에서 설정되지 않은 상태로 남아있게되므로 결국 복원 작업이 실행되지 않기 때문입니다. 서브 쉘 (이 질문에 대한 저의 다른 대답을보십시오)을 사용하면이 문제를 해결할 수 있습니다.
Pinko

-3

아마 LD_LIBRARY_PATH가 설정되어있을 것입니다.


2
포스터가 글을 쓸 때, 그는 이미 unset LD_LIBRARY_PATH, 문제가 지속됩니다.
myhd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.