/ opt와 / usr / local의 차이점은 무엇입니까? /opt”애드온 애플리케이션

에 따라 파일 시스템 계층 구조 표준 , /opt“애드온 애플리케이션 소프트웨어 패키지의 설치”를위한 것입니다. /usr/local“소프트웨어를 로컬로 설치할 때 시스템 관리자가 사용”입니다. 이 사용 사례는 매우 비슷해 보입니다. 배포판에 포함되지 않은 소프트웨어는 일반적으로 선택한 특정 운율 또는 이유없이 /usr/local또는 기본적으로 설치되도록 기본적으로 구성됩니다 /opt.

내가 누락 된 차이점이 있습니까, 아니면 둘 다 같은 일을하지만 역사적 이유로 존재합니까?



답변

모두가 운영 체제에 속하지 않는 파일을 포함하도록 설계, 동안 /opt/usr/local같은 파일 집합을 포함하는 것은 아니다.

/usr/local는 일반적으로 make명령 (예 :)을 사용하여 관리자가 빌드 한 파일을 설치하는 장소 ./configure; make; make install입니다. 아이디어는 운영 체제의 일부인 로컬 파일을 덮어 쓰거나 덮어 쓰는 운영 체제의 일부인 파일과의 충돌을 피하는 것입니다 (예 : 로컬 대안 인 /usr/bin/fooOS의 일부 임 /usr/local/bin/foo).

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

/usr/local원래 BSD의 유산입니다. 그 당시의 소스 코드 /usr/binOS 명령에 있었다 /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.


답변

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

당신이 가지고있는 이유 /usr/local/bin, /usr/local/sbin /usr/local/include등 …

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


답변

그것들은 실제로 매우 유사하며, 하나 또는 다른 것을 사용하는 것이 더 많은 의견의 문제입니다. Linux 저널은이 정확한 주제에 대한이 지점 / 카운터 포인트 토론을 여기에서 수행했습니다 .


답변

개인적으로 Bill은 @philfr의 링크에서 다음과 같이 말했습니다.

개발 시스템 또는 샌드 박스에서 / opt 디렉토리를 사용하여 사물을 던지고 작동하는지 확인할 수 있습니다. 나는 그것을 시험해보기 위해 스스로 물건을 포장하는 노력을 기울이지 않을 것임을 알고 있습니다. 앱이 작동하지 않으면 / opt / mytestapp 디렉토리를 rm으로하면 해당 애플리케이션은 히스토리입니다. 대규모 배포를 실행하는 경우 (패키지 앱을 수행하는 경우가 있음) 패키징이 의미가있을 수 있지만 많은 경우 / opt에 항목을 넣는 것이 좋습니다.

불행히도 대부분의 make install스크립트는 /usr/local심볼릭 링크를 만드는 대신 파일을 푸시합니다 :-/


답변

첫째, 나는 엄격한 대답이 없다고 생각합니다. 배경에 따라 관리자마다 의견이 다릅니다. 역사적으로 /usr/local가장 먼저 나타났습니다. IIRC 버클리에서 열린 대회였습니다. System V가 개발되는 동안 어느 시점에서 내가 잘못 생각하지 않으면 (이것은 모두 오래 전에 기록하지 않았지만) /usr읽기 전용 으로 마운트하려는 결정이나 소망이 있었지만 , 새로운 소프트웨어를 추가 할 수 없다는 의미입니다. 그것이 /opt
발명 된 이유 일 수 있습니다 . 그 일이 벌어 질 때, /usr그 아이디어에 썼던 기존의 소프트웨어가 너무나 많았 기 때문에 실제로는 불가능했습니다.

개인적으로 선호하는 것은 /opt각 제품마다 별도의 하위 디렉토리입니다. 이로 인해 제품 제거가 간단 해
rm -fr집니다. 그러나 모든 소프트웨어가 좋은 패키지 관리자를 통해 설치되어있는 경우, 그것은 중요하지 않으며, 설치 소프트웨어가 엄격하게이 규칙을 준수하고, 어딘가에서 구성 등을 작성하지 않는 경우 /usr, 그것은 있지만, 하나 중요하지 않습니다 반대의 이유로.


답변

이 문제에 약간의 차이가 있습니다. jlliagre답변
에있는 모든 것이 정확하지만 클러스터에 소프트웨어를 배포 할 때 실제 응용 프로그램은 기본 환경 변수와 기본 libs 재사용으로 귀착됩니다.

간단히 말해 – /usr/local모든 자식 DIRS 적절한 ENV 같은 바르에 PATHMANPATH, 그리고 /usr/local/lib{,64}에 ldconfig를의 ( /etc/ld.so.conf.d/).

/opt/OTOH는 — 시스템에 여러 버전이나 충돌하는 패키지가 공존해야 할 때 유리하지만, 일종의 환경 관리 (예 : 환경 모듈 또는 소프트웨어 모음 )가 필요하며 잠재적으로 “폐기”될 수 있다는 단점이 있습니다. “각각의 설치는 /opt완전히 자체 포함될 수 있으므로 공유 라이브러리를 복제하여 저장 공간 .

의 공유 특성을 위해 /usr/local일하기 위해, 예를 들어, 바이너리가 직접 설치되어 있다고 가정 /usr/local/bin(과 사람의 적절한 할 페이지 /usr/local/share/man/...)보다는 /usr/local/app/{bin,share/man,...}


답변