Linux에 바이너리를 넣을 장소가 왜 그렇게 많습니까? 최소한 다음 5 개가 있습니다.
-
/bin/ -
/sbin/ -
/usr/bin/ -
/usr/local/bin/ -
/usr/local/sbin/
그리고 사무실 상자에는 이들 중 일부에 대한 쓰기 권한이 없습니다.
어떤 유형의 바이너리가 bin s?
댓글
답변
-
/bin(및/sbin)는 더 큰 파티션 전에 작은/파티션에 있어야하는 프로그램을위한 것입니다./usr등 파티션이 마운트되었습니다. 요즘에는 원래 의도가 여전히 예를 들어 관련성이있을 수 있지만 대부분/bin/sh와 같은 주요 프로그램의 표준 위치로 사용됩니다. 소형 임베디드 장치에 설치합니다. -
/sbin는/bin와는 다릅니다./usr를 마운트하기 전에 필요한 시스템 관리 프로그램 (일반 사용자가 일반적으로 사용하지 않음) 용. -
/usr/bin는 배포 관리 일반 사용자 프로그램 용입니다. -
iv와 동일한 관계를 가진
/usr/sbin가 있습니다. id = “256ba3093b”>
as/sbin는/bin이어야합니다.
/usr/local/bin는 배포 패키지 관리자가 관리하지 않는 일반 사용자 프로그램 용입니다. 예 : 로컬로 컴파일 된 패키지. 향후 배포 업그레이드시 경고없이 수정하거나 삭제할 수 있으므로 /usr/bin에 설치하지 마십시오.
/usr/local/sbin는 아마도이 시점에서 짐작할 수 있듯이 /usr/local/bin를 /usr/sbin에서 .
또한 모 놀리 식 비 배포 패키지 용 /opt도 있습니다. 제대로 통합되기 전에 다양한 배포판이 Gnome과 KDE를 거기에 두었습니다. 일반적으로 Oracle과 같이 크고 제대로 작동하지 않는 타사 패키지 용으로 예약해야합니다.
댓글
- 이 답변이이를 명확히하는 데 큰 도움이된다고 생각합니다. 일반적인 규칙이지만 Rob Landley의이 게시물은 넌센스에 대한 통찰력을 원한다면 정말 좋은 읽기입니다 … lists.busybox.net/pipermail/busybox/2010 -December / 074114.html
- refspecs.linuxfoundation.org/fhs.shtml 은 현재 표준 참조입니다. @kojiro의 링크가 오래되어 ‘ 새로운 사양이 없습니다.
- 인터넷에서 다운로드 한 저장소를 어디에 두나요? 설명에 따르면 / usr / local / bin 또는 / usr / bin에 있어야하는 것처럼 들립니다. / usr / bin은 수동으로 만져서는 안되며 패키지 관리자 만 사용하도록 허용합니까?
- @DidierA.
~/bin에 넣고 해당 디렉토리를 PATH에 사용자로 추가하세요. 메모 감사합니다. 매우 오래된 댓글을 삭제했습니다. - 여기 내 질문의 첫 번째 부분에 대한 답변 : superuser.com/a/238993/425838 . 우선 순위는 시스템
PATH변수의 순서를 기반으로하며echo $PATH는/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games를 표시합니다. 즉,/usr/local/bin의 실행 파일이 iv id = “76f412c155″의 실행 파일보다 우선하는/usr/bin의 실행 파일보다 우선합니다. > .
답변
파일 시스템 계층 맨 페이지를 살펴 보는 것이 좋습니다.
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마운트 또는 시스템 수리에 필수적이지 않은 시스템 관리 용 프로그램 바이너리가 포함되어 있습니다. .
댓글
- 그렇지 않습니다. ‘ 사용자의 ‘ 질문에 대답하지 마세요.
- 맨 페이지에는 각 bin 디렉토리에 대한 항목이 포함되어 있습니다. 질문 중 하나였습니다.
답변
파일 시스템 계층 Wikipedia의 chy 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에서 파일 시스템 계층 에 대해 읽어 볼 수도 있습니다.
댓글
- +1 top이 너무 많은 경우 정말 간결한 설명입니다.
- ” 로컬 프로그램과 스크립트는 / usr / local / bin / 및 /에 속합니다. usr / local / sbin / “-OS의 일부가 아닌 “와 같은 로컬 프로그램을 의미하지만 설치하기로 결정했습니다. “?
답변
1970 년대에 UNIX에는 /bin의 모든 공식 실행 파일이 있었고 /usr/bin는 사용자 홈 디렉토리 아래에있었습니다 (예 : /usr/dmr) 모든 사용자가 다른 사용자에게도 관심이있을 수있는 자체 바이너리를 저장할 수있었습니다.
이 열린 /usr/bin는 문서화되지 않은 소프트웨어의 쓰레기장 이었기 때문에 Stephen Bourne은 매일 밤 새 바이너리를 확인하고 설명서가 없거나 설명서를 업데이트하지 않고 업데이트 된 모든 바이너리를 제거하는 cron 스크립트를 사용합니다.
1970 년대 후반, /usr/bin가 OS 기반 배포에 통합되었고 사람들은 이전에 열린 /usr/bin의 목적으로 /usr/local/bin를 사용하기 시작했습니다. .
잠시 후 시스템 관리자는 /usr/local/bin를 사용하여 네트워크에서 가져온 비 로컬 소프트웨어 (예 : USENET) 및 UNIX 회사가 /usr/bin와 같은 실수를 다시 반복하는 것을 좋아하지 않았기 때문에 1987 년경에 모든 UNIX 회사가
대신 /opt/<vendor>/bin를 사용합니다.
안타깝게도 Linux 배포판은이 결정을 따르지 않았습니다 ….
댓글
- 매우 흥미 롭긴하지만 아무것도 없습니다. 심지어
/opt에 관한 것이 아니라 UNIX에 관한 것이 아니라 Linux에 관한 질문에 대답하려고 시도합니다. 이것은 ” 왜 자동차에 4 개의 바퀴가 있습니까? “에 ” 자전거가 2! 슬프게도 자동차는 ‘하지 않습니다. ” OP가 이유를 이해하는 데 도움이되지 않는 ‘ 자동차에는 4가 있습니다. - 주어진 설명을 Linux의 배경에 대한 설명으로 사용할 수없고 Linux가 UNIX를 모방하는 것을 좋아한다는 사실을 알 수 없다면 필요한 배경이 누락되었을 수 있습니다.
- 흥미롭지 만 혼란스럽고 역사적 일 수도 있습니다. 오늘날 온라인 저장소와 회사 저장소를 다운로드하는 것은 ‘별로 다르지 않습니다. Joe Blow가 프로그램을 만들고 다운로드하면 / usr / local / bin 대신 / opt / JowBlow / bin에 넣으십시오. 신뢰할 수있는 공급자와 신뢰할 수없는 공급자의 문제입니까? ‘ 말이 안되는 것 같습니다.
- ‘ 정확한 ‘ 몇 년 전의 역사. a) AIX가 / usr / local을 피하고 / opt / IBM 및 / opt / ibm을 사용하며 bullfreeware가 / opt / freeware를 사용하는 이유와 다른 경로 (/ opt / * sbin이 아닌)를 사용해야하는 이유가 궁금했습니다. Linux와의 반 관련성 (더 나은 GNU 도구)에 관해서는 auto-tools의 기본 접두어는 / usr / local입니다. 너무 나쁜 autotools (automake, autoconf 등은 따르지 않습니다 ….하지만 우리 모두는 살아 남아서 distrub이 어디에 있는지 배웁니다. || 공급 업체가 프로그램을 배치했습니다.
- 이러한 회의 중 하나를 더 가질 수 있을까요? 이번에는 모두가 듣습니다!
/usr/sbin/을 잊어 버렸습니다. .~/bin//bin은/usr/bin와 병합되었고/sbin는/usr/sbin와 병합되었습니다. / usr 병합 사례 ./usr/local/bin를 사용하지 않아야합니까?