[unix] Linux에서 / usr / bin vs / usr / local / bin

왜 리눅스에 바이너리를 넣을 장소가 그렇게 많은가? 최소한 다음 5 가지가 있습니다.

  1. /bin/
  2. /sbin/
  3. /usr/bin/
  4. /usr/local/bin/
  5. /usr/local/sbin/

그리고 내 사무실 상자에는 이들 중 일부에 대한 쓰기 권한이 없습니다.

이들 중 어떤 유형의 바이너리가 bin있습니까?



답변

  1. /bin(및 /sbin)은 //usr파티션 등을 마운트 하기 전에 작은 파티션 에 있어야하는 프로그램을위한 것입니다 . 요즘 /bin/sh은 원래 의도가 소형 임베디드 장치에 설치하는 것과 관련이있을 수 있지만, 주로 주요 프로그램의 표준 위치로 사용 됩니다.

  2. /sbin와 구별되는 것은 마운트 /bin하기 전에 필요한 시스템 관리 프로그램 (일반 사용자가 일반적으로 사용하지 않는)을위한 것 /usr입니다.

  3. /usr/bin 배포 관리 일반 사용자 프로그램을위한 것입니다.

  4. A는이 /usr/sbin동일한 관계 /usr/bin/sbin에있다 /bin.

  5. /usr/local/bin배포 패키지 관리자가 관리 하지 않는 일반 사용자 프로그램 ( 예 : 로컬로 컴파일 된 패키지)입니다. /usr/bin향후 배포 업그레이드시 경고없이 수정하거나 삭제할 수 있으므로 설치하지 마십시오 .

  6. /usr/local/sbin당신은 아마이 시점에서 추측 할 수로,이다 /usr/local/bin/usr/sbin으로 /usr/bin.

또한, /opt모 놀리 식 비 분배 패키지를위한 것도 있지만, 그것들이 적절히 통합되기 전에 다양한 배포판이 그놈과 KDE를 넣었습니다. 일반적으로 Oracle과 같이 거대하고 제대로 작동하지 않는 타사 패키지를 위해 예약해야합니다.


답변

파일 시스템 계층 매뉴얼 페이지를 살펴 보는 것이 좋습니다.

man hier

온라인에서도 사용할 수 있습니다 (예 : http://linux.die.net/man/7/hier).


답변

Wikipedia 의 Filesystem Hierarchy Standard 항목은 내가 받았을 때 같은 질문에 대답하는 데 도움이되었으며 매우 설명적인 표가 있습니다.

해당 페이지에서 발췌 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 일에 확인 함. 영구 링크 .


답변

sbin디렉토리에는 일반적으로 시스템 관리인 프로그램이 들어 있습니다. 일반 사용자를위한 프로그램은 절대 들어 가지 않아야합니다.

시작하는 동안 몇 개의 프로그램이 필요하며 /bin/또는로 끝납니다 /sbin/. 파일 시스템을 마운트하기 전에 사용 가능해야합니다. 상황이 좋아 mount하고, fsck그 확인하고 시스템이 있어야 파일을 마운트해야합니다.

대부분의 패키지 프로그램은 /usr/bin/및로 끝납니다 /usr/sbin/. 루트 파일 시스템 이외의 파일 시스템에있을 수 있습니다. 경우에 따라 네트워크 마운트 드라이브에있을 수 있습니다.

지역 프로그램 및 스크립트에 소속 /usr/local/bin/하고 /usr/local/sbin/. 이것은 그것들이 명백히 비표준이며, 현장에서만 사용 가능하다는 것을 식별합니다.

자세한 man hier설명은 배포에 권장되는 파일 시스템 계층 구조에 대한 설명을 제공하는 명령 을 실행하십시오 . Wikipedia 의 파일 시스템 계층 에 대해 읽을 수도 있습니다.


답변

1970 년대에, UNIX모든 공식 실행했다 /bin/usr/bin사용자 홈 디렉토리 아래에 위치했다 (예 /usr/dmr) 사용자뿐만 아니라 다른 사람에 대한 관심되었을 수 있습니다 자신의 바이너리를 저장하는 데 사용할 수였습니다.

이 개방의 결과는 /usr/bin문서화되지 않은 소프트웨어의 정크 야드이었고, 그래서는 Stephen Bourne썼다 cron script매일 밤 새로운 바이너리 검사 그뿐만 아니라 자신의 문서를 업데이트하지 않고 업데이트 된 문서상의를하지 않았거나 모든 바이너리를 제거했습니다.

1970 년대 후반, /usr/binOS 기반 배포판에 통합되었고 사람들 /usr/local/bin은 이전 공개 목적으로 사용 하기 시작했습니다 /usr/bin.

잠시 후 sysadmins 는 네트워크에서 가져온 소프트웨어 (예 : USENET) /usr/local/bin를 저장 하는 데 사용 non-local했으며 UNIX 회사는 /usr/bin다시 한 번 같은 실수를 반복하지 않기 때문에 1987 년경 모든 UNIX 회사가 동의 한 파일 시스템 계층 회의가있었습니다. 포기하고 대신 /usr/local/bin사용 /opt/<vendor>/bin합니다.

불행히도 Linux 배포판은이 결정을 따르지 않았습니다 ….


답변