소스에서 컴파일된 소프트웨어를 설치할 때 나는 보통 /usr/local/에 배치하는데, 내 경험상 이것이 가장 일반적인 기본값이고 적어도 데비안과 그 파생 제품에서는 표준 관행입니다.
이제 홈 디렉토리에 무언가를 설치하고 싶습니다. 이론적으로는 하위 디렉토리를 만들어 거기에 배치할 수 있지만, 다양한 옵션과 이를 수행하는 표준 방법이 있는지 궁금해지기 시작했습니다. 기본적으로 두 가지 답변을 찾았습니다.
- 비슷한 이름의 하위 디렉터리 사용자 정의프로그램,사용자
- 하위 디렉터리 없음, 하위 디렉토리 포함~/빈,~/lib64
나는 그 중 하나를 좋아하지 않으며 이미 하나가 있었기 때문에 생각했습니다.~/.local하위 디렉터리에 설치하면 어떨까요? 이미~/.local/share, 이는 로컬 사용자의 개인 /usr/share를 의미하므로 설치 프로그램은 전체~/.local/bin,~/.local/lib등.
내 질문은 다음과 같습니다~/.local에 로컬 소프트웨어를 설치해도 괜찮나요?
Google 또는 stackexchange에서 사용자별 소프트웨어를 설치할 위치를 검색할 때 이에 대한 참조를 찾을 수 없는 이유는 무엇입니까? 나에게 이것은 힌트를 주는 게시물이 없다는 것은 어딘가에 함정이 있다는 것을 의미할 만큼 명백한 위치처럼 보입니다.
어쩌면 이런 일을 해본 사람이 자신의 긍정적인 경험과 부정적인 경험을 공유할 수 있을까요?
답변1
그것은 중요하지 않습니다.
기억하세요, 이것은 당신의 홈 디렉토리입니다. 여기서 당신이 원하는 것은 무엇이든 할 수 있습니다. GNOME/KDE/whatever는 .config를 모든 곳에서 제거하면 아마도 불평할 것입니다. 그러나 정의에 따르면 홈 디렉토리에서 수행하는 모든 작업은 영향을 미칠 뿐입니다.너. .local에 일부 디렉터리를 추가해도 아무런 해가 없습니다.
작업 흐름에 따라 일부 콘텐츠를 포인트 디렉터리에 넣는 것이 다소 불편할 수 있습니다. 영향을 미치는 정도는 파일 시스템을 탐색하는 방법과 탐색해야 하는 빈도에 따라 다릅니다. 저라면 루트 디렉터리로 일반 디렉터리를 만들겠습니다.현지의또는애플리케이션) 그런 식으로 사용하지만 그것은 개인적인 취향입니다.
문제가 발생하는 곳은 시스템이 디렉터리를 볼 수 있도록 설정되어 있지 않다는 것입니다. .bashrc에서 PATH, MANPATH, INFOPATH 및 LD_LIBRARY_PATH(또는 쉘에 적합한 모든 항목)를 조정해야 합니다. 다른 사소한 "문제"도 있을 수 있습니다.
많은 사람들이 이 작업을 수행할 필요가 없기 때문에 여기에 대한 게시물이 너무 많지 않기를 바랍니다. PC라면 /usr/local을 사용하지 않을 이유가 없습니다. 대부분의 배포판에서는 모든 것이 준비되어 있습니다. 일부 응용 프로그램을 설치하는 경우 많은 사람들이 /opt(예: /opt/blender)에 디렉터리를 만듭니다. Solaris는 패키지를 설치할 때 이 작업을 수행합니다.
귀하가 설명하는 유일한 실제 사용 사례는 개발자나 컴퓨터에 대한 루트 액세스 권한이 없는 사람들을 위한 것입니다. 루트 권한이 없는 대부분의 사람들은 단순히 관리자에게 프로그램 설치를 요청합니다. 그들은 프로그램을 컴파일하는 방법을 모를 수도 있습니다.
답변2
일반적인 규칙(예: install-home
특정 대상과 함께 사용됨, 예:수은, 라고 함 )은 바로 아래 , 즉 , , 등에 hg
넣는 것입니다 . 이것은 처음부터 GNUish 구성 댄스의 결과입니다 .$HOME
$HOME/bin
$HOME/etc
$HOME/lib
./configure --prefix=$HOME
답변3
이렇게 하지 않는 명백한 이유는 다음과 같습니다.
- 사용자의 홈 디렉토리는 일반적으로 크기가 제한되어 있습니다(공유 시스템의 할당량).
- 미리 정의된 구성 파일은 일반적
~/bin
으로 이미 추가되어 있으므로PATH
설치가 더 쉽습니다.저것목차) - 공유 가능한 위치에 설치하는 것은 시스템을 제어할 수 있는 경우 잘 작동합니다. 예를 들어
/usr/local/bin
도트 디렉터리는 (일반적으로) 다른 사용자 계정과 공유할 수 없습니다. - 비정상적인 디스크 공간 사용량을 찾을 때 도트 디렉터리를 무시하기가 더 쉽습니다. 예를 들어, 우리 집의 ccache 버그 기능은 내가 알기 전에 1Gb를 사용했습니다. 브라우저와 데스크탑 정크도 일반적인 원인입니다(15년 이상 동안 어느 누구도 적절한 디스크 관리 도구를 제공하지 않았습니다).
긍정적인 측면에서는 조금 덜 혼란스러울 것입니다. 내 홈 디렉토리에는 55개의 일반 디렉토리가 있고 91개의 도트 디렉토리가 있습니다.
답변4
예, 가능합니다. 하지만 다른 소프트웨어 설치로 인해 오염될 수 있습니다. bashrc를 사용 $HOME/local
하고 수정하는 경로는 다음과 같습니다.
export PATH=.:${HOME}/local/bin:${PATH}
export LD_LIBRARY_PATH=${HOME}/local/lib:${LD_LIBRARY_PATH}
export PREFIX=${HOME}/local
따라서 경로 스택에 먼저 나타나므로 무엇을 설치했는지 알 수 있으므로 다른 바이너리, 라이브러리 등보다 먼저 발견됩니다. 접두사는 구성이나 cmake와 같은 것을 사용할 때 기억하기 쉽습니다.
--prefix=${PREFIX}