%20%ED%8F%B4%EB%8D%94%20%EB%8C%80%EC%8B%A0%20%2Fopt%2C%20%2Fsrv%2C%20%2Fusr%2Flocal%20%EB%93%B1%EC%97%90%20%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%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
모델 참조)가능한존재하지 않는 경우 생성하십시오. 그런 다음 다음이 필요합니다 ~/.profile
. 예를 들면 다음과 같습니다.
export PATH=~/bin:$PATH
export LD_LIBRARY_PATH=~/lib:$LD_LIBRARY_PATH
export MANPATH=~/share/man:$MANPATH
패키지가 공유 라이브러리를 사용하는 경우 이는 매우 중요합니다. LD_LIBRARY_PATH
그렇지 않으면 실행 파일이 공유 라이브러리에 연결할 수 없습니다. MANPATH
모든 시스템에서 작동하지 않을 수도 있고 반드시 필요한 것도 아닙니다. man foobar
실패할 경우 어디서 찾아야 할지 알 수 있을 것입니다.