
Perforce 버전 제어 클라이언트에 대한 실행 파일이 있습니다( p4
). /opt/local
루트 권한이 없기 때문에 넣을 수 없습니다 . 아래에 배치해야 하는 표준 위치가 있습니까 $HOME
?
파일 시스템 계층에는 로컬 실행 파일/바이너리를 에 배치해야 한다는 규칙이 있습니까 $HOME/bin
?
나는 언급된 그런 규칙을 찾을 수 없었다FHS에 대한 Wikipedia 기사.
$HOME/bin
또한 실제로 규칙이 있는 경우 디렉터리 경로나 디렉터리 위치를 명시적으로 포함해야 합니까 bin
?
답변1
일반적으로 시스템에 설치되지 않고 유지 관리되는 바이너리를 여러 사용자가 시스템 전체에서 액세스할 수 있어야 하는 경우 관리자가 해당 바이너리를 /usr/local/bin
. /usr/local
그 아래에는 일반적으로 로컬로 컴파일되고 설치된 소프트웨어 패키지에 사용되는 완전한 계층 구조가 있습니다 .
바이너리의 유일한 사용자인 경우, $HOME/bin
또는$HOME/.local/bin
당신이 직접 설치할 수 있고 당신이 유일한 소비자가 될 것이기 때문에 적절한 위치입니다. 소스에서 소프트웨어 패키지를 컴파일하는 경우 $HOME
또는 디렉터리 에 부분 또는 전체 로컬 계층 구조를 만드는 것도 적절합니다 $HOME/.local
. 를 사용하면 $HOME
전체 로컬 계층 구조는 다음과 같습니다.
$HOME/bin
로컬 바이너리$HOME/etc
로컬 바이너리에 대한 호스트별 시스템 구성$HOME/games
로컬 게임 바이너리$HOME/include
로컬 C 헤더 파일$HOME/lib
지역 도서관$HOME/lib64
로컬 64비트 라이브러리$HOME/man
지역 온라인 매뉴얼$HOME/sbin
로컬 시스템 바이너리$HOME/share
로컬 아키텍처 독립적인 계층 구조$HOME/src
로컬 소스 코드
를 실행할 때 설치 기본값에 대한 접두사를 configure
지정하여 설치를 위한 로컬 계층 구조를 정의해야 합니다 .$HOME
./configure --prefix=$HOME
이제 make && make install
실행되면 컴파일된 바이너리, 패키지, 매뉴얼 페이지 및 라이브러리가 로컬 계층 구조에 설치됩니다 $HOME
. $HOME
로컬 계층 구조를 수동으로 생성하지 않은 경우 에서는 make install
소프트웨어 패키지에 필요한 디렉토리를 생성합니다.
에 설치되면 절대 를 사용하여 바이너리 에 $HOME/bin
추가하거나 바이너리를 호출할 수 있습니다 . 일부 배포판 에는 기본적으로 포함됩니다 . 이를 테스트하려면 이 있는지 확인하거나 바이너리를 넣고 실행하면 됩니다 . 이(가) 표시되면 기본적으로 귀하의 폴더에 있는 것입니다 .$HOME/bin
$PATH
$PATH
$HOME/bin
$PATH
echo $PATH
$HOME/bin
$HOME/bin
which binaryname
$HOME/bin/binaryname
$PATH
답변2
처럼언급된,/usr/local
본질적으로 시스템 관리자가 설치한 소프트웨어의 접두사로 사용되는 반면 /usr
배포 패키지에서 설치된 소프트웨어에는 사용해야 합니다.
그 뒤에 있는 아이디어는 분산 소프트웨어(예: 패키지)와의 충돌을 피하고 rpm
관리자 deb
에게 "로컬" 접두사에 대한 완전한 통제권을 부여하는 것입니다.
이는 관리자가 Debian과 같은 배포판을 사용하면서 사용자 정의 컴파일된 소프트웨어를 설치할 수 있음을 의미합니다.
FHS에서
/ 또는 /usr에 있는 소프트웨어는 시스템 업그레이드로 덮어쓸 수 있습니다(그러나 이러한 상황에서는 배포판에서 /etc의 데이터를 덮어쓰지 않는 것이 좋습니다). 이러한 이유로 로컬 소프트웨어는 정당한 이유 없이 /usr/local 외부에 배치되어서는 안 됩니다.
사용자별 소프트웨어를 설치할 때,uther는 제안한다$HOME
접두사로 사용하면 쓰기 권한이 보장됩니다. 개인적으로 나는 $HOME/.local
그것이 당신의 (희망적으로) 멋지고 깔끔한 홈 디렉토리를 어지럽히는 것을 방지하기 때문에 더 우아한 해결책이라고 생각합니다 !
$HOME/.local/share
이미$HOME/.local/bin
freedesktop.org XDG 기본 디렉토리 사양$HOME/.local/bin
, 그리고 배포판은 에 추가하도록 요청되므로 작업하는 동안 등을 $PATH
만드는 것을 구상하는 데 많은 시간이 걸리지 않습니다 .$HOME/.local/lib
접두어가 숨겨진 디렉터리가 되는 것을 원하지 않으면 해당 디렉터리에 대한 심볼릭 링크를 쉽게 만들 수 있습니다. 예:
ln -s .local ~/local
사이드노트
.config
(not .local/etc
)이 기본값이라는 점은 주목할 가치가 있습니다 .$XDG_CONFIG_HOME
사용자별 구성 파일에 사용됩니다. 또한 불행하게도 소프트웨어의 상당 부분이 XDG를 무시하고 원하는 곳에(보통 의 루트에 $HOME
) 구성 파일을 생성한다는 점을 지적하고 싶습니다. 또한 $XDG_CONFIG_HOME
기본값을 $HOME/.config
원하는 경우 설정이 해제될 수 있습니다.
이상하게도 배포판의 기본 구성 파일용으로 예약된 디렉터리가 없으므로 해당 파일이 /etc
배포판에서 제공되었는지 시스템 관리자가 편집했는지 알 수 있는 방법이 없습니다.
답변3
XDG 기본 디렉토리 사양버전 0.8에서는 로컬 실행 파일을 다음 위치에 배치해야 한다고 명시합니다.~/.local/bin:
사용자별 실행 파일은 $HOME/.local/bin에 저장될 수 있습니다. 배포판에서는 이 디렉터리가 UNIX $PATH 환경 변수의 적절한 위치에 표시되도록 해야 합니다.
따라서 배포판이 사양을 따르는 경우 "명시적으로 경로를 포함"할 필요가 없습니다. 이것이전 질문어떤 배포판이 이를 수행하는지 확인하려고 합니다.
답변4
/usr/local/bin
에 따르면 다음과 같습니다인터넷 웹사이트 Wikitechy.
/usr/bin
에 대한 정보파일 시스템 계층 표준, 시스템에서 실행 가능한 명령의 기본 디렉터리로 폴더를 정의합니다.
/usr/bin
vs. /usr/local/bin
사이 의 추가 정보위키테크:
/usr/bin
일반 사용자가 사용하는 OS 제공 실행 파일의 위치입니다. 예를 들어 일반적으로 핵심 운영 체제에 필요한 파일이 아니거나 루트 사용자가 액세스한 파일이 있을 수도 있습니다.
/usr/local/bin
모든 사용자가 공통 시스템 파일로 사용하기 위해 시스템에 추가하는 모든 추가 기능 실행 파일의 위치이지만 OS에서 지원하는 공식 파일은 아닙니다.
전반적으로 /usr/bin
OS에서 바이너리를 제공하는 곳입니다. /usr/local/bin
사용자가 바이너리를 다운로드한 곳입니다.