/usr
/usr 계층은 파일시스템의 주요 섹션 중 하나다. 이 계층에는 시스템이 아닌 사용자가 실행할 프로그램들이 저장되며, 해당 계층에는 반드시 read-only 데이터만 존재해야한다. FHS(파일시스템 계층 구조)간에 데이터의 공유가 가능한 데이터들이 포함되는데, 특정 호스트에 따라 달라지거나 시간에 따라 달라지는 정보들은 다른 계층에 저장된다. 또한 규모가 큰 소프트웨어 패키지들이 /usr 계층의 하위 디렉토리들을 직접적으로 사용해선 안된다. /usr 계층 하위의 디렉토리들은 다음과 같은 디렉토리와 심볼릭 링크들이 필요하다.
Requirements
/usr 계층은 대게 6가지의 하위 디렉토리를 갖고 있는데 그 종류와 역할은 아래와 같다.
bin | 일반적인 유틸리티, 프로그래밍 툴과 함께 대부분의 사용자 명령어가 위치한다.(cd , python, curl 등) |
include | c 프로그램에서 포함되는 헤더파일들이 위치한다. |
lib | 라이브러리들이 위치한다. (cron 등), /lib 에 포함되지 않은 사용자를 위한 라이브러리들이 위치한다. |
local | 기본 os에서는 필요하지 않는 실행가능한 파일들, 라이브러리들이 위치한다.(Homebrew 등) |
sbin | 사용자에 의해 실행되는 시스템 데몬, 시스템 유틸리티가 위치한다.(잘 모르겠음) |
share | 아키텍쳐에서 독립된 데이터 파일들이 위치한다. (vim, zsh 등) |
/usr/bin : 대부분의 사용자 명령어가 위치한다.
시스템에서 실행가능한 명령어들이 위치하며, command line 실행하는 대부분의 사용자 실행파일들이 이 계층에 저장된다.
ls, cd, vi와 같은 명령어는 물론이요 perl, python 같은 스크립트 언어의 실행파일도 있다. 물론 실행파일의 경로를 변경할 수도 있다.
/usr/include : c 프로그램에서 포함되는 헤더파일들이 위치한다.
C언어에서 범용적으로 필요한 헤더파일들이 저장되는 계층이다. 다른 곳에서 사용될 경우 일반적으로 심볼릭 링크를 통해 이용된다.
/usr/lib : 프로그램과 패키지에서 사용되는 라이브러리들이 위치한다.
해당 계층에서는 사용자 혹은 shell script에서 직접 실행되지 않는 object file, 라이브러리, 내부 바이너리등이 포함된다.
어플리케이션은 `usr/lib` 계층에 있는 서브디렉토리를 이용할 수 있는데, 만약 실제로 어플리케이션이 특정 서브디렉토리를 사용한다면 모든 종속되는 데이터들 역시 해당 서브디렉토리 내부에 위치해야한다.
/usr/local : 기본 os 시스템이 사용하지 않는 파일이 위치한다.
로컬로 설치되어있는 소프트웨어들은 반드시 /usr/local 디렉토리에 존재해야한다. 하지만 /usr 디렉토리에 존재하는 소프트웨어를 업그레이드 하기 위해서 설치된 소프트웨어라면 예외로한다.(makefile 이 있거나, python 같은 경우 setup.py 와 같은 설치 시스템들이 있는 어플리케이션들은 모두 /usr/local 계층에 저장되어야한다.)
일반적으로 /usr/local 계층은 /usr 계층과 그 구조가 상당히 유사한 것을 알 수 있는데, /usr/bin 과 /usr/lib 와 같은 디렉토리들은 보통 apt 혹은 yum 과 같은 명령어를 통해 설치되는 소프트웨어들을 위해 존재한다.
/usr/sbin: 필수항목이 아닌 시스템 표준 바이너리
sbin에서 's'는 'system'의 s이다. 해당 계층은 /usr 디렉토리와 비슷한 역할을 하지만, 사용자들이 일반적으로 잘 실행하지 않는 시스템들이 저장된다. 그렇기 때문에 일반적으로 sbin 계층에 있는 프로그램들을 실행하기 위해서는 root 권한이 필요하다.
/usr/share: 아키텍쳐에서 독립적인 파일들이 위치한다
해당 계층에는 구조에 영향을 받지 않는 텍스트 파일들이 위치한다. 이 계층에 존재하는 파일들은 모든 계층에서 공유가 가능하다.
참고
http://www.pathname.com/fhs/pub/fhs-2.3.pdf#page25
http://blog.taylormcgann.com/2014/04/11/difference-bin-sbin/
'프로그래밍 > linux' 카테고리의 다른 글
Linux 기본 - /bin 과 /boot 디렉토리의 이해 (0) | 2019.08.25 |
---|---|
Linux 기본 - /var 디렉토리의 이해 (0) | 2019.07.21 |