내 프로젝트 중 하나에는 다른 명령에 의해서만 호출되고 최종 사용자가 호출하면 안되는 몇 가지 특수 명령이 있습니다. 이러한 내부 명령을 PREFIX/bin에 설치해야 합니까, 아니면 PREFIX/lib와 같은 다른 곳에 설치하는 것이 더 낫습니까?
편집: 문제의 내부 명령은 모두 Awk 스크립트입니다. 아키텍처 독립적이므로 PREFIX/share/PACKAGE-NAME/bin에 설치하는 것을 고려했습니다. 이것이 좋은 선택입니까?
답변1
리눅스파일 시스템 계층 표준그래서,
/bin에는 시스템 관리자와 사용자 모두가 사용할 수 있지만 다른 파일 시스템이 마운트되지 않은 경우(예: 단일 사용자 모드)에 필요한 명령이 포함되어 있습니다. 또한 스크립트에서 간접적으로 사용되는 명령이 포함될 수도 있습니다.
그리고
/lib 디렉토리에는 시스템을 부팅하고 루트 파일 시스템, 즉 /bin 및 /sbin의 바이너리를 통해 명령을 실행하는 데 필요한 공유 라이브러리 이미지가 포함되어 있습니다.
그리고,
시스템 관리용 유틸리티(및 기타 루트 전용 명령)는 /sbin, /usr/sbin 및 /usr/local/sbin에 저장됩니다. /bin의 바이너리 외에도 /sbin에는 시스템 시작, 복구, 복구 및/또는 복구에 필요한 바이너리도 포함되어 있습니다. /usr이 마운트된 것으로 알려진 후(문제가 없을 때) 실행되는 프로그램은 일반적으로 /usr/sbin에 배치됩니다. 로컬로 설치된 하이퍼바이저는 /usr/local/sbin에 배치되어야 합니다.
마침내,
/usr/lib에는 개체 파일과 라이브러리가 포함되어 있습니다. 일부 시스템에서는 사용자나 쉘 스크립트가 직접 실행할 수 없는 내부 바이너리가 포함될 수도 있습니다. 응용 프로그램은 /usr/lib 아래의 개별 하위 디렉터리를 사용할 수 있습니다. 애플리케이션이 하위 디렉터리를 사용하는 경우 해당 애플리케이션과 관련된 모든 아키텍처 종속 데이터는 하위 디렉터리에 배치되어야 합니다.
분명히 /usr/bin
다른 많은 옵션이 있습니다. 당신은 나를 가장 정의합니다 /usr/lib
.
답변2
/usr/share 계층 구조는 모든 읽기 전용 아키텍처 독립 데이터 파일에 적용됩니다.
그러나 FHS(1장)에서 권장하는 대로 /usr/libexec/
또는 를 사용해야 합니다 ./usr/local/libexec/
4.7):
/usr/libexec에는 사용자나 쉘 스크립트가 직접 실행할 수 없는 내부 바이너리가 포함되어 있습니다. 응용 프로그램은 /usr/libexec 아래의 개별 하위 디렉터리를 사용할 수 있습니다.
이러한 방식으로 /usr/libexec를 사용하는 응용 프로그램은 여기에 설명된 다른 목적으로 /usr/lib를 사용할 수 있지만 내부 바이너리를 저장하기 위해 /usr/lib를 사용해서는 안 됩니다.