답의 짧은 버전과 긴 버전이 있습니다 ...
짧은 버전 :
링크가 이미 말했듯 /usr
이 시스템 전체 의 읽기 전용 파일을 위한 장소입니다 . 설치된 모든 소프트웨어가 거기에 있습니다. 그것은의 이름을 중복되지 않는 /
제외 /bin
하고 /lib
다른 목적으로, 원래 :하지만, /bin, /lib
단지 바이너리와 라이브러리를위한 부팅에 필요한 , 동안 /usr/bin, /usr/lib
다른 모든 실행 파일 및 라이브러리입니다. (지금 좋은 소년이되고에 대해 묻지 마십시오 /sbin
. 이것은 결국 짧은 버전입니다)
요즘 우분투를 포함한 대부분의 최신 배포판은에서 몇 개의 파일이 없으면 제대로 부팅 할 수 없기 때문에 "부팅에 필요"와 구분이 줄어들지 않았습니다 /usr
. 통합을 향한 강한 움직임이 이유입니다 /usr/bin
및 /bin
그래서 아마도 가까운 미래에, (아마도 우분투 12.10는?) /bin
에 심볼릭 링크 될 것입니다 /usr/bin
.
하지만 어쩌면 당신은 혼란 /usr
과 /usr/local
? 그렇기 때문에 많은 중복 된 디렉토리 이름이 있어야합니다 . 나중에 더 자세히 ...
긴 버전 :
70 년대에 유닉스 (예, 유닉스, 리눅스 이전의 방식)에서 플로피는 공간이 거의 없었으며 (HD는 기억 나지 않습니까?) 주어진 시점에서 시스템 바이너리의 수가 너무 많아서 크기와 크기가 너무 커지지 않았습니다. 단일 디스크에 맞았 기 때문에 개발자는 여러 미디어에 디스크를 분할하여 새로운 마운트 지점을 만들어야했습니다. /bin
파일 시스템이 가득했습니다, 그래서 그들은에서 새로운 바이너리를 설치 ... /usr/bin
. 그리고 /usr
당시에는 ... 사용자 디렉토리 였습니다 !
(거의 당황 종종 농담 / 지식으로 이야기) 분할이 일어난 후, 그들은에 갈 것입니다 무슨 결정하는 "인공"정당화 (및 기준)을 생성하기 시작 /bin
하고 무엇을 갈 것을 /usr/bin
. 비공식 규칙은 "필수"항목은 /bin
이고 "나머지"는 간다 /usr/bin
. 와 동일합니다 /lib
. 오래지 않아 /usr
시스템 관련 디렉토리가 혼잡 해져서 사용자 디렉토리와 혼합되었습니다. 따라서 /home
모든 사용자 관련 디렉토리를 유지 /usr
하고 시스템 "물건"에 대해서만 깨끗하게 유지하기 위해 탄생했습니다 .
FHS가 존재하기 오래 전입니다. 그것이 만들어 졌을 때, 그것은 현재의 전통을 받아들이고 공식화하고 그 이름을 유지 /usr
했지만, 그 당시에는 이미 "사용자"와는 아무런 관련이 없었습니다. 그래서 그래, 멋진 이름 " U NIX 의 ource의 r에 epository"또는 " U NIX 의 템의 r에 esources는"모든 만들어 낸 이름입니다, 그것은 어쨌든 이름을 바꾸려면 너무 늦었어요. (그러나 합병하기에는 너무 늦지 않았습니다 /bin
)
"좋아, /usr/sbin
어때?" , 물어. 젠장, 네가 잊어 버렸으면 좋겠다. Ok ... /usr/sbin
는 and와 root
같이 사용자 만 실행할 수있는 (또는 의미있는 경우에만) 명령을위한 것 입니다.mount
fdisk
"그러나 그것은 거의 같지 /bin
않습니까?" . 예, 물론 ...
"잠깐만 요, 그럼 왜 /sbin
너무 있나요? 말이되지 않습니다!" . 글쎄요, 그게 .. 실수 .. 흠 ..
봐봐, 너 뒤에 3 개 달린 원숭이!
자, 당신은 충분히 산만 해 졌기를 바랍니다. 계속 ...
(내가 부정 행위하고 있다고 생각한다면, 그렇습니다. 그러나 "공식적인"대답은 "루트 만 실행할 수 있고 마운트하기 전에 반드시 사용할 수있는 필수 명령 /
"입니다. " 진실은 : 그 선은 실제로 흐릿하고, 단지 "고착 된"많은 레거시 이름들이 있으며 이제는 제거하기가 매우 어렵다는 것입니다.
온 더 에 대한 사례 /usr
병합 에서, systemd
문서 :
/ bin, / sbin 및 / lib에 대한 / usr과 별개의 역사적 정당성은 오늘날 더 이상 적용되지 않습니다. 더 빠른 하드 디스크에서 도구를 선택하고 (더 비싸기 때문에 크기가 작음) 느린 / usr 파티션을 마운트하는 데 필요한 모든 도구를 포함하도록 분리되었습니다. 오늘날, 초기 부팅 과정에서 initramfs에 의해 별도의 / usr 파티션이 이미 마운트되어 있어야합니다. 또한 현재 상태의 / bin 및 / sbin에있는 많은 도구는 이미 사전에 마운트 된 / usr없이 실행할 수있는 기능을 잃었습니다. 더 이상 운영 체제를 여러 계층으로 분산시켜야 할 이유는 없으며 목적을 잃었습니다.
/usr
Rob Landley 의 스플릿과 그 이론적 근거 에 대한 놀라운 글 :
bin, sbin, usr / bin, usr / sbin split 이해
요즘
현재 설치 디렉토리와 관련하여 이해하는 가장 좋은 방법은 다음과 같이 생각하는 것입니다.
/usr
-OS에 의해 설치되거나 제공되는 모든 시스템 전체의 읽기 전용 파일
/usr/local
-로컬 관리자 (일반적으로 사용자)가 설치 한 시스템 전체의 읽기 전용 파일. 그리고 이것이 대부분의 디렉토리 이름 /usr
이 여기에 복제 된 이유 입니다.
/opt
-시스템 전체의 읽기 전용 및 자체 포함 된 소프트웨어에 적합합니다. 그 동안 자신의 파일을 분할하지 않는 소프트웨어입니다 bin
, lib
, share
, include
소프트웨어가해야 잘 행동처럼.
~/.local
-의 사용자 별 /usr/local
, 즉 각 사용자가 설치 한 소프트웨어
~/.local/opt
-사용자 당 /opt
소프트웨어를 어디에 설치해야합니까?
위의 목록은 이미 Oracle JDK 질문에 대한 답변의 절반입니다. 적어도 몇 가지 단서가 있습니다. "소프트웨어 X를 어디에 설치해야합니까?" 체크리스트 간다 :
Eclipse IDE 및 기타 다운로드 된 Java 앱과 같이 완전히 독립적 인 단일 디렉토리 소프트웨어입니까? 모든 사용자가 사용할 수 있기를 원합니까? 그런 다음에 설치하십시오/opt
위와 동일하지만 다른 사용자는 신경 쓰지 않고 사용자 만 설치하려고합니까? 그런 다음에 설치하십시오~/.local/opt
파일은와 함께 컴파일 및 설치되는 기존 소프트웨어 bin
와 같이 and와 같은 여러 디렉토리로 분할 되며 모든 사용자가 사용할 수 있어야합니까? 그런 다음에 설치하십시오share
./configure && make && sudo make install
/usr/local
위와 동일하지만 사용자에게만 해당됩니까? 그런 다음에 설치하십시오~/.local
OS에 의해 또는 Software Center와 같은 패키지 관리자를 통해 설치되는 소프트웨어이며, 가장 중요한 것은 업데이트 관리자가 새 버전으로 업그레이드 할 때 로컬 수정 사항을 덮어 쓸 수 있습니까? 그것은 간다/usr
노트:
컴파일 된 소프트웨어의 기본 설치 접두사가 /usr/local
왜 이고 , ./configure --prefix=$HOME/.local
사용자 전용 소프트웨어를 설치할 때 이를 변경해야하는 이유를 설명합니다.
위의 모든 디렉토리가 읽기 전용 임을 알 수 있습니다 (물론 소프트웨어를 설치 / 제거 할 때 제외). 구성 파일과 같은 쓰기 가능한 파일은 일반적으로 /etc
(시스템 전체 소프트웨어의 경우) 및 ~/.config
(사용자 별 설정의 경우)으로 이동합니다. 많은 레거시 소프트웨어 (그리고 불행히도 일부 최신 소프트웨어도)를 사용 ~/.<software-name>
하지만 홈 폴더를 수십억 개의 디렉토리와 파일로 어수선하게 만듭니다.
~/.local
및 ~/.config
히트 싱크 사양의 일부가 아닙니다. FHS는 사용자의 홈 폴더를 처리하지 않습니다. 데스크톱 환경 (Gnome, KDE, Unity 등)을 지향하는 또 다른 표준 조직인 XDG는 사용자의 집 구조에 관한 몇 가지 규칙을 설정하려고 시도합니다. 모든 소프트웨어가 소프트웨어를 준수하는 것은 아니며 (예를 들어, 논리 ~/.local/bin
에 따라 사용자의 기본값 $PATH
에 있지는 않지만) 사용자가 소프트웨어를 따라야 할 의무는 없지만 둘 모두 상호 운용성 이점을 얻습니다.
나는 이것이 조금 명확하게하는 데 도움이되기를 바랍니다. 답변을 개선 할 수 있도록 자유롭게 물어보십시오!
(그리고 나는 또한 순수 주의자들이 그러한 비공식적 인 언어와 설명 때문에 나를 죽이지 않기를 희망합니다. 의도적이며 부정확 한 점이 많지만 새로 온 사람이 설치에 대한 간략한 개요를 이해하도록하는 좋은 방법이라고 생각합니다 디렉토리 근거)