/opt와 /usr/local의 차이점은 무엇입니까?

/opt와 /usr/local의 차이점은 무엇입니까?

~에 따르면파일 시스템 계층 표준, /opt"추가 애플리케이션 패키지 설치"에 대한 내용입니다. /usr/local"로컬로 소프트웨어를 설치할 때 시스템 관리자가 사용합니다." 이러한 사용 사례는 매우 유사해 보입니다. 배포판에 포함되지 않은 소프트웨어는 기본적으로 설치되도록 구성되는 경우가 많으며, 이를 설치하도록 선택한 특정 운율이나 이유가 /usr/local없습니다 ./opt

차이점이 없는 걸까요, 아니면 둘 다 동일한 작업을 수행하지만 역사적인 이유로 존재합니까?

답변1

/opt둘 다 운영 체제의 일부 가 아닌 파일을 포함하도록 설계되었으며 /usr/local동일한 파일 세트를 포함하도록 의도되지 않았습니다.

/usr/local는 관리자가 작성한 파일이 설치되는 위치이며 일반적 make으로 ./configure; make; make install. 아이디어는 운영 체제에 속한 파일과의 충돌을 방지하는 것입니다. 그렇지 않으면 로컬 파일(예: /usr/bin/foo운영 체제의 일부가 아닌 /usr/local/bin/foo로컬 대체 파일)을 덮어쓰거나 덮어쓰게 됩니다.

아래의 모든 파일은 /usr운영 체제 인스턴스 간에 공유될 수 있지만 Linux에서는 거의 수행되지 않습니다. 이는 /usr읽기 전용으로 정의되어 있지만 /usr/local/bin소프트웨어를 로컬에 성공적으로 설치하려면 읽기 및 쓰기가 필요하기 때문에 FHS의 다소 역설적인 부분입니다 . 이 문제를 극복하려면 FHS의 주요 영감의 원천이었던 SVR4 파일 시스템 표준을 피하고 /usr/local사용하는 것이 좋습니다 ./opt/local

/usr/local이는 원래 BSD의 유산입니다. 당시 /usr/bin운영 체제 명령의 소스 코드는 에 있었고 /usr/src/bin, /usr/src/usr.bin로컬에서 개발된 명령의 소스 코드는 에 있었으며 /usr/local/src, 해당 바이너리는 에 있었습니다 /usr/local/bin. (타르볼 외부에서는) 패키징 개념이 없습니다.

반면에 는 /opt번들되지 않은 패키지(즉, 운영 체제 배포의 일부가 아니지만 독립적인 소스에서 제공되는 패키지)를 설치하기 위한 디렉터리이며, 각 패키지는 자체 하위 디렉터리에 있습니다. 이는 독립적인 타사 소프트웨어 배포자에 의해 이미 완전한 소프트웨어 패키지로 제공됩니다. 다른 것들과 달리 /usr/local이 패키지는 디렉토리 규칙을 따릅니다(또는 최소한 그래야 합니다). 예를 들어, someapp설치는 에 있고 /opt/someapp해당 명령 중 하나는 에 있으며 /opt/someapp/bin/foo해당 구성 파일은 에 있고 /etc/opt/someapp/foo.conf해당 로그 파일은 에 있습니다 /var/opt/someapp/logs/foo.access.

답변2

기본적인 차이점은 /usr/local소프트웨어가 시스템 패키저에 의해 관리되지 않지만 여전히 표준 UNIX 배포 규칙을 따른다는 것입니다.

그래서 당신은 /usr/local/bin, /usr/local/sbin /usr/local/include잠깐...

/opt반면에 이를 따르지 않고 모놀리식 방식으로 배포되는 소프트웨어가 있습니다. 여기에는 일반적으로 "Windows" 스타일로 패키지된 상용 및/또는 크로스 플랫폼 소프트웨어가 포함됩니다.

답변3

그것들은 실제로 매우 유사하며, 둘 중 하나를 사용하는 것은 의견의 문제입니다. Linux Magazine에는 바로 이 주제에 대한 관점/대위법 토론이 있습니다.여기.

답변4

나는 이 문제에 대해 약간 다른 견해를 가지고 있습니다.
비록 모든 것이엘리야 그레이~의답변당신 말이 맞습니다. 클러스터에 소프트웨어를 배포할 때 실제 적용은 기본 환경 변수 및 라이브러리의 기본 재사용으로 귀결됩니다.

간단히 말해서 모든 하위 디렉토리는 및 와 /usr/local같은 적절한 환경 변수에 있으며 ldconfig의 ( )에 있습니다 .PATHMANPATH/usr/local/lib{,64}/etc/ld.so.conf.d/

/opt/OTOH 아니요 - 여러 버전이나 충돌하는 패키지가 시스템에 공존해야 할 때 이점이 있지만 일종의 환경 관리(예:환경 모듈또는소프트웨어 컬렉션), 단점은 각 설치가 /opt완전히 독립적일 수 있기 때문에 공유 라이브러리를 복제하여 저장 공간을 "낭비"할 수 있다는 것입니다.

작업의 공유 특성을 위해 예를 들어 바이너리는 등이 아닌 (및 적절한 매뉴얼 페이지 ) /usr/local에 직접 설치된다고 가정합니다 ./usr/local/bin/usr/local/share/man/.../usr/local/app/{bin,share/man,...}

관련 정보