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 외부에 배치되어서는 안 됩니다.
사용자별 소프트웨어를 설치할 때,우서가 제안한$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를 무시하고 어디에서나(보통 XDG의 루트 디렉터리에 $HOME
) 구성 파일을 생성한다는 점을 지적하고 싶습니다. 또한 $XDG_CONFIG_HOME
기본값을 원하는 경우 설정을 해제할 수 있습니다.$HOME/.config
이상하게도 배포판의 기본 구성 파일을 위해 예약된 디렉토리가 없으므로 그 안에 있는 파일이 /etc
배포판에서 제공되었는지 아니면 시스템 관리자가 편집했는지 알 수 있는 방법이 없습니다.
답변3
XDG 기본 디렉토리 사양버전 0.8에서는 로컬 실행 파일을 다음 위치에 배치해야 한다고 지정합니다.~/.local/bin:
사용자별 실행 파일은 $HOME/.local/bin에 저장될 수 있습니다. 배포판에서는 이 디렉터리가 UNIX $PATH 환경 변수의 적절한 위치에 나타나도록 해야 합니다.
배포판이 사양을 따르는 경우 "명시적으로 경로를 포함"할 필요가 없습니다. 이것이전 질문어떤 배포판이 이 작업을 수행할 수 있는지 확인해보세요.
답변4
/usr/local/bin
을 기반으로 한 것 같습니다 .인터넷 웹사이트 위키 기술.
관련 정보는 /usr/bin
다음에서 제공됩니다.파일 시스템 계층 표준, 그들은 이 폴더를 시스템에서 실행 가능한 명령의 홈 디렉터리로 정의합니다.
/usr/bin
사이 및 /usr/local/bin
사이의 추가 정보위키 기술:
/usr/bin
일반 사용자를 위해 운영 체제에서 제공하는 실행 파일의 위치입니다. 예를 들어 파일은 일반적으로 핵심 운영 체제에 필요하지 않으며 루트에서 액세스할 수도 없지만 그럴 수는 있습니다.
/usr/local/bin
모든 사용자가 공용 시스템 파일로 사용하기 위해 시스템에 추가하지만 운영 체제에서 지원하는 공식 파일은 아닌 모든 추가 실행 파일의 위치입니다.
전반적으로 /usr/bin
이곳은 운영 체제에서 바이너리를 제공하는 곳입니다. /usr/local/bin
사용자가 바이너리를 다운로드하는 곳입니다.