아래에FHS, 시스템 패키지(예: RPM)는 라이브러리를 /usr/lib
(또는 /usr/lib64
)에 설치합니다. 마찬가지로, 이전 " configure;make;make install
" 루틴(시스템 배포의 일부가 아님)으로 컴파일된 라이브러리는 기본적으로 /usr/local/lib
(또는 /usr/local/lib64
)에 설치됩니다.
ld.so.conf
일반적으로 사용자에게 LD_LIBRARY_PATH 또는 설치된 애플리케이션을 변경하도록 요청하는 것은 잘못된 형식으로 간주됩니다 . 예를 참조하세요:
http://web.archive.org/web/20060719201954/http://www.visi.com/~barr/ldpath.html
하지만 이 규칙 /usr/local/lib
에는 예외가 있어야 하지 않을까요?
이 경우 /usr/local/lib
기본적으로 라이브러리 검색 경로에 다수/대부분의 배포판이 포함되지 않는 이유는 무엇입니까? 지금까지는 ArchLinux만이 이것을 버그로 간주하는 것 같습니다.http://bugs.archlinux.org/task/20059?project=1&opened=2263
그리고 관련http://bbs.archlinux.org/viewtopic.php?id=99807
RPATH에 라이브러리를 /usr/local/lib
포함 해야 하는 애플리케이션의 경우 /usr/local/lib
운영 체제에 이미 이 설정이 있다고 예상하는 것이 더 정확합니까? 나는 $ORIGIN을 기반으로 하지 않는 RPATH의 어떤 것도 사용하는 것을 좋아하지 않습니다.
이는 시스템 안정성과 소프트웨어 패키지 방식에 영향을 미치기 때문에 현학적인 질문은 아닙니다.
답변1
어떤 사람들은 /usr/local/lib가 기본 경로에 있어야 하며 Red Hat과 같은 Linux 변종에서는 "버그"로 간주되어야 한다고 제안했지만 이는 사실이 아닙니다.
이 답변https://stackoverflow.com/a/17653893 눈에 띄는 부분을 지적했다.http://linuxmafia.com/faq/Admin/ld-lib-path.html
많은 Red Hat 파생 배포판에는 일반적으로 /etc/ld.so.conf 파일에 /usr/local/lib가 포함되어 있지 않습니다. 나는 이것이 버그라고 생각하며 /etc/ld.so.conf에 /usr/local/lib를 추가하는 것은 Red Hat 파생 시스템에서 많은 프로그램을 실행하는 데 필요한 일반적인 "수정"입니다.
나는 Red Hat에 이 문제를 제기했지만 지금은 이에 동의하지 않습니다.
공급업체가 /usr/local에 설치하는 시스템에서 Red Hat 제공 패키지는 절대 /usr/local에 설치되지 않으며 대답은 다릅니다. 이러한 시스템에서는 /usr/local/lib가 기본 검색 경로에 있을 것으로 예상하는 것이 합리적입니다.
Red Hat에서는 /usr/local/lib가 기본 검색 경로에 있어서는 안 된다고 명시하고 있습니다. 여기에 추가된 라이브러리는 RPM 및 yum에서 사용할 수 있기 때문입니다.
나는 이것을 더 조사했다. /usr/local/lib에 시스템 라이브러리의 자체 버전을 설치하면 일반적으로 RPM 또는 yum을 통해 설치하는 다른 시스템 패키지의 종속성을 충족할 수 있습니다. 분명히 이는 시스템 안정성에 영향을 미칠 것입니다. 더 나쁜 것은 매우 미묘하게 수행한다는 것입니다. yum check에서는 필요한 모든 패키지의 모든 공급업체 버전이 있다고 보고할 수 있지만 /usr/local/lib에 중요한 항목의 자체 버전이 있다는 사실을 알아차리지 못할 수 있습니다.
다른 패키지 관리자를 사용하는 시스템에서는 이것이 적용되지 않을 수 있습니다.
RPATH에 무엇을 넣어야 할지에 대한 완전한 답변이 없습니다. 그러나 가능하다면 /usr/local/lib에 있는 라이브러리에 의존하는 것을 피하고 대신 /opt(즉, 설치 중에 제어하는 위치)에 설치해야 한다고 생각합니다.