![LD_LIBRARY_PATH는 sudo 이후 항상 비어 있습니다.](https://linux55.com/image/34554/LD_LIBRARY_PATH%EB%8A%94%20sudo%20%EC%9D%B4%ED%9B%84%20%ED%95%AD%EC%83%81%20%EB%B9%84%EC%96%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
소프트웨어를 수동으로 설치하려고 할 때마다 공유 라이브러리 오류가 발생합니다. 실행 후 다음 echo $LD_LIBRARY_PATH
과 같이 표시됩니다.아무것도 없다. 파일 /usr/local/lib
에 추가하려고 시도했지만 실행되지 않는 것 같습니다..conf
/etc/ld.so.conf.d
이것은 작동하지 않습니다 (인용문 또는 기타).
LD_LIBRARY_PATH="/usr/local/lib"
export LD_LIBRARY_PATH
sudo ldconfig -v
값은 일시적으로 설정되지만 터미널 창을 종료하면 값이 유지되지 않습니다. 다시 시작해도 효과가 없습니다.
답변1
다음을 다음 항목에 추가하세요 .bashrc
.
vim ~/.bashrc
...
export LD_LIBRARY_PATH=/usr/local/lib
이렇게 하면 경로가 여전히 할당된 상태로 컴퓨터를 다시 시작할 수 있습니다.
답변2
마침내 별칭을 사용하여 문제를 해결했습니다.
alias sudo='sudo PATH="$PATH" HOME="$HOME" LD_LIBRARY_PATH="$LD_LIBRARY_PATH"'
별칭을 정의할 때가 아니라 호출할 때 변수가 확장되도록 작은따옴표를 사용해야 합니다.
이것:
- HOME 유지(그렇지 않으면 /root로 설정)
- PATH 유지(그렇지 않으면 suders에서 "안전한" 경로로 설정됨)
- 유지된현재의LD_LIBRARY_PATH 값(그렇지 않으면 지워짐)
(다음 명령어를 사용하여 설정된 내용을 확인할 수 있습니다 sudo bash -c "echo $HOME"
:)
저는 사용자 정의 드라이버를 사용하고 있으며 드라이버에 액세스하려면 항상 테스트 프로그램을 sudo해야 합니다. 시스템 영역에는 테스트 버전의 라이브러리를 설치하고 싶지 않기 때문에 필요에 따라 LD_LIBRARY_PATH를 사용하여 특정 테스트 디렉터리를 설정했습니다. 고정된 LD_LIBRARY_PATH만 설정할 수는 없으며 이를 변경하고 현재 설정을 유지할 수 있어야 합니다. PATH와 HOME을 유지하면 작업 환경(스크립트 및 디렉터리 구조)에 액세스할 수 있습니다.
이 별칭은 sudoers에 포괄적인 권한을 부여할 필요가 없으며 sudoers 설정에 관계없이 LD_LIBRARY_PATH에 대한 해결 방법은 없습니다. sudo는 스크립트 내에서는 아무런 효과가 없지만 원하는 경우 하드코딩할 수 있습니다.
답변3
RHEL(Red Hat Enterprise Linux) 6에서는 /etc/ld.so.conf
를 포함합니다 include ld.so.conf.d/*.conf
. 이 줄이 없으면 /etc/ld.so.conf.d/*.conf
의 항목이 구문 분석되지 않습니다.
ldconfig
어떤 라이브러리/디렉토리가 구문 분석되고 있는지 확인하세요.
ldconfig -v
현재 버전 번호, 스캔된 각 디렉터리의 이름 및 생성된 모든 링크를 인쇄합니다.