Linux의 바이너리 파일이 포함된 디렉터리

Linux의 바이너리 파일이 포함된 디렉터리

새 애플리케이션을 설치할 때 생성된 바이너리가 배치될 수 있는 디렉터리가 여러 개 있다는 것을 알았습니다.

패키징 관리자를 사용하여 설치하고 Python make등을 easy_install사용하여 컴파일 할 수 있습니다.

$PATH모습은 다음과 같습니다.

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

생성된 바이너리(또는 라이브러리)를 어느 디렉터리에 배치해야 하는지 결정하는 몇 가지 규칙이나 규칙이 있습니까?

소스 코드를 컴파일할 때 결과는 일반적으로 /usr/local/bin/.

바이너리 측면에서 Unix 철학(디자인 및 규칙 결정)을 설명하는 답변을 작성할 수 있습니까? 이런 일이 발생하는 이유는 무엇입니까(모든 바이너리에 대해 하나의 디렉터리를 사용하지 않는 이유는 무엇입니까?)

답변1

엄격하고 빠른 규칙은 없지만 각 배포에는 고유한 논리가 있습니다. 일반적 /bin으로 시스템 바이너리, /usr/bin배포와 함께 제공되는 기본 응용 프로그램 및 /usr/local/bin일반 배포 외부에 설치된 콘텐츠에 사용됩니다. X11X11 바이너리용을 추가 할 수 있으며 /usr/X11/bin이는 /usr/local/X11/bin매우 일반적입니다. 일부 소프트웨어도 설치됩니다 /opt.

이것기사에 있는 내용에 대한 더 자세한 설명입니다 /. 그리고 물론,위키피디아페이지가 있습니다.

답변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/X11X 프로그램의 경우. 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

관련 정보