Linux에 바이너리를 넣을 수 있는 곳이 왜 그렇게 많은가요? 최소한 다음 다섯 가지가 있습니다.
/bin/
/sbin/
/usr/bin/
/usr/local/bin/
/usr/local/sbin/
내 사무실 상자에는 일부 항목에 대한 쓰기 액세스 권한이 없습니다.
다음 중 어느 바이너리 유형에 속합니까 bin
?
답변1
/bin
( 및 ) 는 더 크고 동일한 파티션을 설치하기 전에 작은 파티션에 있어야 하는 프로그램/sbin
에 적합합니다 . 원래 의도는 여전히 소형 임베디드 장치에 설치하는 것과 관련이 있을 수 있지만 오늘날에는 Windows와 같은 중요한 프로그램의 표준 위치로 주로 사용됩니다 ./
/usr
/bin/sh
/sbin
/bin
와는 달리, 탑재 전 필요한 시스템 관리 프로그램 입니다 (일반적으로 일반 사용자는 사용하지 않습니다)./usr
/usr/bin
유통관리에 적합한 공통 사용자 프로그램입니다./usr/sbin
to와 같은 관계가 있는 to가 존재합니다 ./usr/bin
/sbin
/bin
/usr/local/bin
일반 사용자 프로그램에 적합아니요로컬로 컴파일된 패키지 등 배포 패키지 관리자가 관리합니다./usr/bin
향후 배포 업그레이드 시 경고 없이 수정되거나 제거될 수 있으므로 설치하지 마십시오 ./usr/local/sbin
지금쯤 짐작하셨겠지만, 그것은 ~/usr/local/bin
입니다 ./usr/sbin
/usr/bin
/opt
또한 다양한 배포판에서 제대로 통합되기 전에 Gnome과 KDE를 넣었지만 전체 비 배포판 패키지용 패키지도 있습니다 . 일반적으로 말해서, Oracle과 같이 규모가 크고 성능이 낮은 타사 패키지용으로 이 기능을 예약해야 합니다.
답변2
파일 시스템 계층 매뉴얼 페이지를 확인하는 것이 좋습니다.
man hier
온라인으로도 이용 가능합니다. 예:http://linux.die.net/man/7/hier. 관련 부분은 아래에 재현되어 있습니다. 시스템에 따라 다르게 표시될 수 있습니다.
이름
hier - 파일 시스템 계층 구조에 대한 설명
설명하다
일반적인 Linux 시스템에는 다음 디렉터리가 있습니다.
/bin
이 디렉터리에는 단일 사용자 모드에서 시스템을 시작하거나 복구하는 데 필요한 실행 프로그램이 포함되어 있습니다.
/sbin
와 마찬가지로
/bin
이 디렉토리에는 시스템을 부팅하는 데 필요한 명령이 포함되어 있지만 일반적으로 일반 사용자는 실행하지 않습니다.
/usr/bin
실행 가능한 프로그램의 홈 디렉터리입니다. 일반 사용자가 실행하고 시스템을 시작하거나 복구하는 데 필요하지 않으며 로컬로 설치되지 않은 대부분의 프로그램은 이 디렉터리에 배치되어야 합니다.
/usr/local/bin
사이트 로컬 프로그램용 바이너리.
/usr/local/sbin
시스템 관리를 위한 로컬 설치 프로그램입니다.
/usr/sbin
/usr
이 디렉터리에는 부팅 프로세스, 설치 또는 시스템 복구에 필요하지 않지만 시스템 관리에 사용되는 프로그램 바이너리가 포함되어 있습니다.
답변3
이것파일 시스템 계층 표준Wikipedia의 항목은 제가 같은 질문에 답하는 데 도움이 되었으며 매우 설명적인 표가 있습니다.
1 페이지 에서 발췌 :
/bin Essential command binaries that need to be available in single user mode; for all users, e.g., cat, ls, cp. /usr/bin Non-essential command binaries (not needed in single user mode); for all users. /usr/local Tertiary hierarchy for local data, specific to this host. Typically has further subdirectories, e.g., bin, lib, share /usr/sbin Non-essential system binaries, e.g., daemons for various network-services. /sbin Essential system binaries, e.g., fsck, init, route.
1 2019년 6월 19일에 확인함;고유링크.
답변4
1970년대 UNIX에는 모든 공식 실행 파일 /bin
과 /usr/bin
사용자의 홈 디렉터리(예 /usr/dmr
: ) 아래에 모든 사용자가 다른 사람도 관심을 가질 수 있는 자신의 바이너리를 저장하는 데 사용할 수 있는 위치가 있었습니다.
이러한 공개의 결과 /usr/bin
는 문서화되지 않은 소프트웨어의 투기장이 되었기 때문에 Stephen Bourne은 매일 밤 새 바이너리를 확인하고 문서가 없거나 업데이트되었지만 문서를 업데이트하지 않은 바이너리를 제거하는 cron 스크립트를 작성했습니다.
1970년대 후반에 /usr/bin
운영 체제 기반 배포판에 통합되었으며 사람들은 /usr/local/bin
이전에 공개된 목적으로 사용하기 시작했습니다 /usr/bin
.
얼마 후, 시스템 관리자는 /usr/local/bin
네트워크에서 가져온 비기본 소프트웨어(예: USENET)를 저장하는 데 익숙해졌고 UNIX 회사는 같은 실수를 다시 반복하는 것을 좋아하지 않았기 때문에 /usr/bin
1987년쯤에 파일 시스템 계층 구조 회의가 열렸습니다. UNIX Corporation은 이를 포기 /usr/local/bin
하고 대신 사용하기 로 동의했습니다 /opt/<vendor>/bin
.
불행하게도 Linux 배포판은 이 결정을 따르지 않았습니다...