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
를 사용하지 않아야합니까?