/ var 또는 / opt에 Linux 응용 프로그램을 설치해야합니까?


83

Java 및 Tomcat을 포함한 많은 오픈 소스 응용 프로그램을 실행합니다. 대부분의 지침은 /var디렉토리 에서 내 응용 프로그램을 실행하는 것처럼 보입니다 . 그러나 가끔씩 /opt디렉토리 도 보입니다 . 내가에있어 동안, 나는 또한 볼 /usr/local/도 및 /etc도.

언제 한 폴더 또는 다른 폴더에 응용 프로그램을 설치해야합니까? 각각의 장단점이 있습니까? 풍미 역사 (Solaris vs Linux 또는 Red Hat vs Ubuntu)와 관련이 있습니까?


8
/ etc는 응용 프로그램을 떠나기 위해 이상하고 부적절한 곳입니다 ...
user5336

사람들이 Perl 모듈처럼 / etc에 물건을 넣는 것을 보았습니다. 이상하지만, 이런 일이 ...
ℝaphink

6
모든 부조리에 대해 그것을 방어하는 챔피언이 있습니다.
womble

답변:


133

이러한 문제의 표준은 파일 계층 표준 입니다. 다소 큰 문서입니다. 기본적으로 Linux의 표준 경로는 다음과 같습니다.

  • /bin& /sbin는 OS를위한 필수 프로그램을위한 것이며, 빈은 관리자만을위한 것입니다.
  • /usr/bin& /usr/sbin는 중요한 프로그램이 아니며, 스빈은 관리자 만 사용할 수 있습니다.
  • /var프로그램 데이터를위한 것입니다. 캐시 데이터, 스풀 데이터, 임시 데이터 (에있을 때를 제외하고 /tmp는 재부팅 할 때마다 삭제됨) 등일 수 있습니다.
  • /usr/local로컬로 설치된 프로그램을위한 것입니다. 일반적으로이 표준은 표준을 따르지만 OS 용으로 패키지되지는 않지만 ./configure && make && make install관리자 스크립트뿐만 아니라 관리자 (예 : 사용)가 수동으로 설치하는 프로그램을 호스팅합니다 .
  • /opt패키지화되지 않았으며 표준을 따르지 않는 프로그램을위한 것입니다. 모든 라이브러리를 프로그램과 함께 배치하면됩니다. 종종 빠르고 더러운 솔루션이지만 직접 작성하고 특정 경로를 원하는 프로그램에도 사용할 수 있습니다. 그 /opt/yourcompany안에 자신 만의 경로를 만들 수 있으며 ( 이 경우), 표준 경로의 일부로 등록하는 것이 좋습니다.
  • /etc 프로그램이 아니라 구성을 포함해야합니다.

프로그램이 서비스에서 제공하는 서비스에만 해당되는 경우 /srv에도 좋은 위치가 될 수 있습니다. 예를 들어, 디렉토리에 내가 추가 한 데이터 만 포함하고 소프트웨어 패키지에서 제공되는 데이터 만 포함 /srv/www하지 않고 웹 사이트 에 사용하는 것을 선호 /var/www합니다.

배포판에는 약간의 차이가 있습니다. 예를 들어, RedHat 시스템은 libexecDebian / Ubuntu 시스템이 아닌 디렉토리를 사용 합니다.

FHS는 대부분 Linux 배포판에서 사용됩니다 (실제로이를 준수하는 다른 OS는 모릅니다). 다른 유닉스 시스템은 따르지 않습니다. 예를 들어, BSD 시스템은 /usr/local패키지 된 프로그램 에 사용하는 경향 이 있지만 Linux의 경우에는 그렇지 않습니다. Solaris는 매우 다른 표준 경로를 가지고 있습니다.

이에 대해 더 알고 싶다면 위에 링크 된 FHS 문서를 읽어 보시기 바랍니다.


1
치트 시트로 인쇄하고 싶은 몇 가지 글 머리표 목록 중 하나입니다.
stimpy77

6
일에 대한 /srv. 내 자식 저장소를 찾을 곳을 찾고 있었고 내 Apache 콘텐츠가 마음에 들지 않았습니다 /var/www. /srv완벽한 장소 인 것 같습니다.
Mr. Hedgehog

@ ℝaphink, 왜 var대신에 호출 data되는가?
Pacerier

@ Mr.Hedgehog, "싫다"는 무엇을 의미합니까? 설명 할까?
Pacerier

@Pacerier 90 /var년대에는 "다양한 데이터"를위한 것이기 때문입니다. 초기에는 Unix가 단일 드라이브에서 호스팅되었습니다. 충분하지 않으면 새로운 것을 가져 와서 마운트하고 /usr모든 사용자 데이터를 거기로 옮겼습니다. 그러나 충분하지 않았고 오래된 드라이브가 곧 다시 가득 찼습니다. 그래서 그들은 시스템이 부팅 할 수없는 모든 바이너리를로 옮겼 /bin습니다 /usr/bin. 그들은 단순히 공간이 부족합니다. 나중에 그들은 사용자간에 데이터를 공유해야하므로 /var드롭 박스 로 만들고 사용했습니다. FHS는 이와 같은 레거시 결정으로 가득 차 있으며 소금 한 덩어리로 가져와야합니다.
cprn

4

opt선택적 소프트웨어를 나타냅니다. var가변 시스템 파일을 나타냅니다. 따라서 응용 프로그램은로 이동해야합니다 /opt.


8
/var"다양한"이 아닌 다양한 시스템 파일을 위한 것 입니다.
womble

4
/ var은 "가변 데이터 파일"을위한 것입니다. "다양한 시스템 파일"이라고 말하는 것이 모호하고 오해의 소지가 있습니다. o_O "opt"에 대한 것이 맞습니다.
phoenix8 2009

@Eduard, 그러면 / opt / var는 어떻습니까? </ usr / var>, </ usr / local / var> ...
Pacerier

@womble 그것은 잘못된 어원입니다. FHS가 말한 것은 사실이 아닙니다. 90 /var년대에는 "다양한 데이터"를위한 것이기 때문입니다. 나는 그 당시 읽은 인터넷 사전 서적에서 여전히 노트를 가지고있다.
cprn

2

현지 표준이 무엇인지에 따라 다릅니다.

개인적으로, 나는 정당한 이유없이 / var에 아무것도 설치하지 않습니다. 내 / usr / local은 거의 항상 네트워크에서 nfs 마운트되므로 패키지화되지 않은 것은 / opt에 설치됩니다.


1
어쨌든 데이터를 제외하고 / var에 무엇을 넣겠습니까?
ℝaphink

1
일반적으로 프로그램은 / var에 자체 항목을 넣습니다. 대부분 공급 업체에서 제공하는 로그, 일부 라이브러리, 제어 파일, .pid 파일 등이 있습니다.
David Mackintosh

2
동의하지 않습니다. 라이브러리가 정적 인 경우에 들어가야 /usr합니다. 동적으로 생성 libs와에 끝날 수도 /var/lib때때로,하지만 난 당신이 실제로 될지 표시되지 않습니다 설치 에서 /var보기의 관리 관점에서. 프로그램에서 광범위하게 사용할 수 있지만 프로그램을 시작하기 전에 비어 있어야합니다.
ℝaphink

1
현재 고의로 / var에 설치 한 것은 nfsen / nfdump뿐입니다. 응용 프로그램의 설치 공간은 모든 nfdump 파일이기 때문에 발생합니다. (이것은 어떻게 든 프로덕션 환경에 적용한 테스트 설치이기 때문에 "정상적인 이유는 없습니다.") 그러나 그 정도입니다. 물론 하드 디스크를 분할하지 않기 때문에 / var, / opt 및 / usr은 모두 같은 파일 시스템에 있습니다.
David Mackintosh

1
Qmail은 / var에 설치됩니다. 이것은 그것에 대한 수많은 비판 중 하나입니다.
staticsan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.