새 애플리케이션을 설치할 때 생성된 바이너리가 배치될 수 있는 디렉터리가 여러 개 있다는 것을 알았습니다.
패키징 관리자를 사용하여 설치하고 Python make
등을 easy_install
사용하여 컴파일 할 수 있습니다.
내 $PATH
모습은 다음과 같습니다.
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
생성된 바이너리(또는 라이브러리)를 어느 디렉터리에 배치해야 하는지 결정하는 몇 가지 규칙이나 규칙이 있습니까?
소스 코드를 컴파일할 때 결과는 일반적으로 /usr/local/bin/
.
바이너리 측면에서 Unix 철학(디자인 및 규칙 결정)을 설명하는 답변을 작성할 수 있습니까? 이런 일이 발생하는 이유는 무엇입니까(모든 바이너리에 대해 하나의 디렉터리를 사용하지 않는 이유는 무엇입니까?)
답변1
답변2
또한@사르다트리온대답은 sbin
디렉토리가 일반적으로 다양한 시스템 관리 도구, 하위 수준 시스템 응용 프로그램 및 다양한 시스템 데몬에 대한 바이너리 파일을 저장하는 데 사용된다는 것입니다.
예를 들어, s에서는 (커널이 내부 초기화를 완료한 후 부팅 프로세스 제어), (하드 디스크 작동 매개변수 읽기 및 설정), (데몬 인쇄), (하드 디스크에서 SMART 데이터 읽기) 등 sbin
을 찾을 수 있습니다 . 에./sbin/init
/sbin/hdparm
/usr/sbin/cupsd
/usr/sbin/smartctl
일반 규칙도 /usr
패키지 관리자가 관리하고, /usr/local
사용자 또는 시스템 관리자가 관리합니다(둘이 다른 경우). 이에 대한 역사적 선례가 있습니다. 디스크 공간이 비쌀 때 /usr은 네트워크를 통해 읽기 전용으로 마운트될 수 있었고 시스템이 직접 네트워크 부팅을 지원하지 않더라도 많은 워크스테이션에서 공유될 수 있었습니다. 그러면 각 워크스테이션은 상대적으로 작은 자체 /usr/local 및 (상대적으로 가벼운) 루트 파일 시스템( /
)을 가질 수 있습니다. /usr과 /usr/local의 이러한 차이점은 소스에서 빌드할 때 대부분의 패키지가 기본적으로 /usr/local에 설치되는 이유일 가능성이 높습니다.
답변3
이것파일 시스템 계층 표준지정하다Linux 배포판이 파일을 배치해야 하는 위치.
bin
디렉터리에는 모든 사용자가 사용할 수 있는 실행 파일이 포함되어 있고, sbin
디렉터리에는 시스템 관리자만 사용할 수 있는 실행 파일이 포함되어 있습니다. sbin
디렉토리는 일반적으로 루트의 $PATH
.
/bin
(및 /sbin
)에는 별도의 파티션에 설치할 수 있으므로 부팅 프로세스 초기에 필요한 프로그램이 포함되어 있습니다 /usr
(요즘에는 드물지만).
/usr/bin
(및 /usr/sbin
)에는 배포판과 함께 제공되지만 /bin
또는 에는 포함되지 않은 프로그램이 포함되어 있습니다 /sbin
. 일반적인 시스템에서 대부분의 실행 파일은 /usr/bin
.
계층 구조 /usr/local
는 관리자의 도메인입니다. 디렉토리는 /lib
일반적 /bin
으로 배포용으로 예약되어 있으며 일반적으로 시스템 패키지 관리자가 제공하는 파일만 포함합니다 /sbin
. (특히 및 )는 패키지 관리자의 영향을 받지 않으므로 로컬 관리자는 수동으로 설치된 실행 파일을 여기에 배치할 수 있습니다./usr
/usr/local
/usr/local/bin
/usr/local/sbin
/usr/games
배포판에서 제공되고 순전히 오락 목적으로 간주되는 실행 파일이 포함될 수 있습니다. 이것은 대체로 역사의 유물입니다(오래 전에는 /usr/games
하루 중 특정 시간에 출입이 금지되었을 수도 있지만, 어쨌든 쉽게 고칠 수 있는 이러한 관행은 사라졌습니다).
Linux 시스템의 기타 일반적인 실행 가능 위치는 다음과 같습니다.
/usr/X11R6/bin
아니면/usr/bin/X11
X 프로그램의 경우. X 프로그램과 비-X 프로그램을 분리하는 관행은 점차 사라졌습니다. 이제 그들은 모두 에 살고 있습니다/usr/bin
./usr/bin/mh
실행 파일의 경우MH 이메일 클라이언트, MH 사용자만 사용하는 단일 목적 셸 명령(show
메시지 표시,forw
이메일 전달...) 을 통해 이메일을 조작합니다 ./usr/bin/mh
$PATH
/opt/bin
가 있는 경우 에 설치된 애플리케이션에 대한 심볼릭 링크가 포함됩니다/opt
.
Linux의 규칙은 대부분의 UNIX 시스템이 따르는 일반 지침에서 영감을 얻었지만 각 UNIX 변형에는 고유한 특징이 있습니다. 예를 들어:
- *BSD에는 배포의 핵심
/
만 포함됩니다. 즉, 배포 관리자가 직접 유지 관리하는 기본 서비스와 응용 프로그램입니다./usr
타사 프로그램("패키지" 또는 "포트")은/usr/local
패키지 관리자에 의해 관리되더라도 에 설치됩니다. 시스템 관리자가 제공하는 프로그램에 대해 보편적으로 허용되는 별도의 위치는 없습니다. - 일부 UNIX 시스템에는 디렉토리가 없으며 이는
/bin
기호 링크입니다./sbin
/usr/bin
- 일부 시스템에는 선택적 패키지가 포함된 추가 디렉터리가 각각 자체
bin
디렉터리 에 있을 수 있습니다$PATH
. $PATH
일부 시스템에는 실행 환경이 호환되어야 하는 대상(예/usr/bin/posix
: POSIX/Single Unix와의 호환성 또는/usr/xpg4/bin
레거시 BSD 시스템과의 호환성) 에 따라 배치될 수도 있고 배치되지 않을 수도 있는 추가 디렉토리가 있을 수 있습니다 ./usr/xpg6/bin
/usr/ucb