2013-07-17 6 views
9
$ uname -a 
Linux xhost10.bcgsc.ca 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux 

$ /sbin/ldconfig --version 
ldconfig (GNU libc) 2.5 

루트 액세스 권한이 없으므로 여러 바이너리 및 라이브러리를 로컬로 설치하고 있습니다.루트 권한없이 ldconfig 캐시 업데이트

일부 프로그램은 런타임에 비표준 위치의 공유 라이브러리에 동적으로 링크해야합니다. 실행되면

, 프로그램은 반환

$ path/to/cc1 
path/to/cc1: error while loading shared libraries: libmpc.so.3: cannot open shared object file: No such file or directory 

나는 도서관 $LD_LIBRARY_PATH에 경로를 추가했습니다,하지만 난 루트 액세스하지 않고 ldconfig 캐시를 업데이트 할 수 없습니다 ...

는 사용자 -가 있습니까 특정 /etc/ld.so.cache?

또는 더 일반적으로 사용자 구성 파일을 사용하여 시스템 구성 파일을 '마스크'할 수 있습니까?

+0

~/.bashrc에서 LD_LIBRARY_PATH를 내보내고 다시 로그인하여 공유 라이브러리를 찾을 수있는 ld.so를 얻을 수 있습니다. LD_LIBRARY_PATH에서 동적으로 라이브러리를로드하는 바이너리를 실행하는 것은 초기화하는 데 훨씬 오래 걸리는 것처럼 보이지만 (공유 네트워크 파일 시스템) 적어도 실행은 ... –

답변

4

ldconfig 캐시는 /etc/ld.so.conf 또는 /etc/ld.so.conf.d에 지정된 경로에만 적용됩니다. root가 아닌 사용자에게는 쓰기 권한이 없으므로 root 권한없이 설치 한 실행 파일의 시작 속도를 향상시킬 수는 없습니다 (하지만이 경우에도 사용자에게 쓰기 권한이있는 파일을이 파일에 추가하는 것은 좋지 않습니다. 시스템 전반에 걸친 라이브러리 검색 pathes).

이러한 경우 LD_LIBRARY_PATH 환경 변수 또는 rpath/runpath를 실행 파일이나 라이브러리에서 비 기본 경로의 라이브러리에 의존해야합니다. LD_LIBRARY_PATH와 rpath/runpath 사이의 속도 차이는 모르지만 rpath/runpath는 특정 실행 파일에만 영향을 미치므로 다른 프로그램에 문제가 발생할 가능성이 적습니다.

linux/unix에서는 시스템 구성 파일을 마스크 처리하고 사용자가 제공 한 파일을 사용하는 일반적인 방법이 없습니다. 사실 그것은 유닉스 보안 모델이 다양한 종류의 권한 상승을 피하기 위해 적극적으로 방지해야만하는 것입니다. 이것이 예를 들어 suid 실행 파일에서 많은 환경 변수가 비활성화 된 이유입니다. 많은 프로그램에는 우선하는 사용자 구성을 지정하는 한 가지 방법이 있으며, 좀 더 복잡한 프로그램에는 시스템 관리자가 재정의 할 수없는 필수 설정을 지정하는 방법이 있습니다.