LD_LIBRARY_PATH를 모든 사용자 및 시스템 서비스로 내보내는 방법


12

LD_LIBRARY_PATH시스템 서비스 및 모든 사용자에게 내보내고 싶습니다 . 시스템 서비스는 로그인 전에 실행되므로 .bashrc적용 할 수 없습니다.

이것을 달성하는 방법?


1
해결하려는 실제 문제가 무엇인지 자세히 설명해 주시겠습니까?
Keith

답변:


20

필요하지 않습니다. 배포판에 따라에 디렉토리를 추가 /etc/ld.so.conf하거나에 새 파일 을 추가하십시오 /etc/ld.so.conf.d/.

그 후에는 ldconfig루트로 (적어도 Redhat에서) 실행해야합니다 .

주의해서, 환경, ld.so.conf 또는 / usr / local / lib를 통해 시스템 공유 라이브러리 경로에 추가 할 라이브러리를주의해야합니다. 특히, 동일한 이름의 동일한 라이브러리의 서로 다른 두 가지 버전을주의하십시오. 예를 들어, dpkg / rpm / etc.를 통해 libfoo.0.1 (soname libfoo.0)을 설치 한 경우 사용자 정의 라이브러리 디렉토리에 libfoo.0.2 (또한 libfoo.0)를 원하지 않습니다.

(실제로 시스템 전체 환경 변수를 제거하는 것은 쉽지 않습니다.을 사용하여 대부분의 사용자 로그인을 얻을 수 있습니다 /etc/environment. 스크립트는 init 시스템에 따라 다르지만 (예를 들어) 데비안의 sysv init를 사용하면 /etc/default/rcS. inittab에서 바로 실행됩니다. 잘 모르겠습니다.)


@bahamat 편집 겹침으로 인해 추측하고 있습니다. 내 답변에서 단락을 없애는 데 상처를 입었습니다. 다시 추가하겠습니다.
derobert

아니, "필요하지 않음"은 이미 요약되어 있고 훨씬 간결하기 때문에 방금 제거했습니다.
bahamat

@bahamat 편집 로그를 확인하십시오. unix.stackexchange.com/posts/46620/revisions ... 우리가 편집 링크를 눌렀을 때 변경 사항을 제출 한 다음 변경 사항을 제출 한 것입니다. (물론 추가 단락을 포함하지 않았 음). StackExchange가이를 감지하고 큰 소리로 경고해야하지만 분명히 보이지는 않습니다.
derobert

아니요, 불필요하다고 생각했기 때문에 해당 단락을 명시 적으로 제거했습니다. 다른 변경은하지 않았습니다. 우리의 편집 내용은 6m 떨어져 있었고, 나 뒤에 온 것은 12m 후에있었습니다. 충돌이 아니 었습니다.
bahamat

@bahamat Ah, 편집 코멘트를 남겨두면 혼란이 사라 졌을 것입니다.
derobert

3

파일에 모든 경로를 추가하고 /etc/ld.so.conf.d다음을 실행할 수 있습니다.

ldconfig -v 

그런 다음로드하십시오.

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