![사용자 정의 프로그램이 항상 ~/(홈) 폴더가 아닌 /opt, /srv, /usr/local 등에 설치되는 이유는 무엇입니까?](https://rvso.com/image/38709/%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%A0%95%EC%9D%98%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%B4%20%ED%95%AD%EC%83%81%20~%2F(%ED%99%88)%20%ED%8F%B4%EB%8D%94%EA%B0%80%20%EC%95%84%EB%8B%8C%20%2Fopt%2C%20%2Fsrv%2C%20%2Fusr%2Flocal%20%EB%93%B1%EC%97%90%20%EC%84%A4%EC%B9%98%EB%90%98%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
LTS 저장소는 꽤 훌륭하지만 어떤 이유에서인지 일부 프로그램에서는 "소스에서 빌드" 방법을 선호합니다. 한 가지 이유는 내가 선호하는 버전을 얻기 때문입니다(LTS의 PHP는 5.3에 있지만 소스에서 5.4를 컴파일할 수 있습니다). , 등 의 경우도 마찬가지이다 nginx
.node.js
이제 모든 튜토리얼에서 , 또는 와 /opt
같은 "루트 소유" 폴더에 프로그램을 설치하도록 요구하는 이유를 알고 싶습니다 . 다음과 같은 홈 폴더에 설치하는 것이 훨씬 쉽다는 것을 알았습니다.
/srv
/usr/local
/홈/prahlad/프로그램/PHP-5.4
sudo
한 가지 장점은 이러한 프로그램을 설치하는 데 사용할 필요가 없다는 것입니다 . 두 번째로 관련된 장점은보안우려. 이러한 소스에 맬웨어가 포함되어 있는 경우(Linux에서는 가능성이 낮지만) 어떻게 될까요? 루트 권한을 거부하는 것이 좋은 일이 아닌가요?
프로그램이 루트 소유 폴더에 설치되어야 하는 한 가지 예를 알고 싶습니다.
답변1
가이드에서는 다른 사람들이 사용할 수 있도록 등에 /usr/local/
설치 하라고 지시합니다./opt
홈 디렉토리에 설치하면 오직 본인만이 해당 항목에 액세스할 수 있습니다. 자신을 위해 컴파일하는 것이라면 괜찮습니다.
답변2
이는 엄격하고 빠른 규칙은 아니지만 기본적으로 설정되는 항목은 /opt
일반적으로 자체 포함되어 있으며 실행 파일을 실행 파일 경로에 복사 또는 심볼릭 링크하거나 $PATH
. 다른 곳에 두고 $HOME/bin
.
그러나 기본적으로 로 구성된 소스 빌드 항목은 /usr/local
공유 라이브러리 및 매뉴얼 페이지를 설치할 수도 있습니다. 다른 곳에 저장하려면 일반적으로 먼저 변수를 내보내 PREFIX
거나 를 사용하여 명령줄에 제공합니다 make
. ./configure --help
이를 확인하고 설명할 수 있습니다.
이 경우 사용하려는 경로에 약간의 디렉터리 계층 구조가 필요합니다. 다음과 같아야 합니다:
bin/
lib/
include/
share/
man/
man1/
설치 프로그램을 통해 생성할 수 있는 추가 디렉터리가 있습니다 ( 모델을 manX
살펴보세요 )./usr/share/man
5월존재하지 않는 경우 만듭니다. 그런 다음 다음과 같은 내용을 원할 것입니다 ~/.profile
.
export PATH=~/bin:$PATH
export LD_LIBRARY_PATH=~/lib:$LD_LIBRARY_PATH
export MANPATH=~/share/man:$MANPATH
패키지가 공유 라이브러리를 사용하는 경우 이것이 LD_LIBRARY_PATH
중요합니다. 그렇지 않으면 실행 파일이 해당 라이브러리에 연결할 수 없습니다. MANPATH
모든 시스템에서 작동하지 않을 수도 있고 어쨌든 반드시 필요한 것은 아닙니다. man foobar
실패하면 어디서 찾아야 할지 알 수 있을 것입니다.