연결시
일반적으로 /usr/local/*
와 (과 /bin
) 연결 하지는 않지만 이는 역사적 관행에 가깝습니다. 일반적으로 제안하는 것을 수행 할 수없는 몇 가지 "기술적 인"이유가 있습니다.
실행 파일에 링크를 만들면 /bin
문제가 발생할 수 있습니다.
시스템이 RPM, dpkg, APT, YUM, pacman, pkg_add 등과 같은 일종의 패키지 관리자에 의해 패키지를 관리하고 있다면 아마도 가장 큰 경고는 아마도 패키지를 허용하고 싶을 것입니다. 관리자는 일을하고 같은 디렉토리 관리 /sbin
, /bin
, /lib
,와 /usr
. 한 가지 예외는 /usr/local
패키지 관리자가 파일을 방해하지 않아도 걱정할 필요없이 일반적으로 상자에 딱 맞는 안전한 장소입니다.
종종 빌드 된 실행 파일 /usr/local
은이 PATH를 실행 파일에 하드 코딩합니다. /usr/local
이러한 응용 프로그램 설치의 일부로 포함 된 구성 파일이있을 수도 있습니다 . 따라서 실행 파일에만 연결하면 .cfg
나중에 해당 앱에서 파일을 찾는 데 문제가 발생할 수 있습니다 . 이러한 경우의 예는 다음과 같습니다.
$ strings /usr/local/bin/wit | grep '/usr/local'
/usr/local/share/wit
/usr/local/share/wit/
.cfg
파일 찾기에 적용되는 동일한 문제가 기본 앱을 실행해야하는 "도우미"실행 파일에서도 발생할 수 있습니다. 이것 또한 /usr/bin
문제가있을 수 있으며 실제로 연결된 앱을 실행하려고했을 때만 나타납니다.
참고 : 일반적으로의 오프 앱 하나에 연결하려는 유혹을 피하는 것이 가장 좋습니다 /usr/bin
.
/etc/profile.d
대신 모든 사용자가이 관리 기능을 제공하게되면 관리자 $PATH
는 /etc/profile.d
디렉토리에 해당 파일을 추가 하여 모든 사람에게 쉽게 추가 할 수 있습니다 .
다음과 같은 파일 /etc/profile.d/maven.sh
:
PATH=$PATH:/usr/local/maven/bin
일반적으로이 설정으로 모든 사용자 설정을 오염시키는 대신 관리자로이 작업을 수행합니다.
대안 사용
대부분의 배포판은 이제 alternatives
(Fedora / CentOS) 또는 update-alternatives
(Debian / Ubuntu) 라는 다른 도구를 제공 $PATH
합니다 /bin
. 이 도구는 외부에있을 수 있는 도구 로 반복하는 데 사용할 수도 있습니다 . 이와 같은 도구를 사용하는 것이 바람직합니다. 대부분의 관리자가 "표준 관행"으로 간주하는 것에 더 많은 영향을 미치므로 시스템을 한 관리자에서 다른 관리자로 쉽게 전달할 수 있습니다.
이 도구는 링크를 만들 때 비슷한 작업을 수행합니다 /bin
. 그러나 이러한 링크의 생성 및 제거를 관리하므로 도구를 통해 수행 할 때와 제안한대로 직접 수행 할 때 시스템의 의도 된 설정을 이해하기가 더 쉽습니다.
여기서는 해당 시스템을 사용하여 상자에서 Oracle의 Java를 관리하고 있습니다.
$ ls -l /etc/alternatives/ | grep " java"
lrwxrwxrwx. 1 root root 73 Feb 5 13:15 java -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.4.1.fc19.x86_64/jre/bin/java
lrwxrwxrwx. 1 root root 77 Feb 5 13:15 java.1.gz -> /usr/share/man/man1/java-java-1.7.0-openjdk-1.7.0.60-2.4.4.1.fc19.x86_64.1.gz
lrwxrwxrwx. 1 root root 70 Feb 5 13:19 javac -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.4.1.fc19.x86_64/bin/javac
lrwxrwxrwx. 1 root root 78 Feb 5 13:19 javac.1.gz -> /usr/share/man/man1/javac-java-1.7.0-openjdk-1.7.0.60-2.4.4.1.fc19.x86_64.1.gz
lrwxrwxrwx. 1 root root 72 Feb 5 13:19 javadoc -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.4.1.fc19.x86_64/bin/javadoc
lrwxrwxrwx. 1 root root 80 Feb 5 13:19 javadoc.1.gz -> /usr/share/man/man1/javadoc-java-1.7.0-openjdk-1.7.0.60-2.4.4.1.fc19.x86_64.1.gz
이것의 효과를 볼 수 있습니다 :
$ type java
java is /usr/bin/java
$ readlink -f /usr/bin/java
/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.4.1.fc19.x86_64/jre/bin/java
내 $ 0.02
/bin
대부분의 시스템 관리자가 링크를 만드는 것은 그럴듯하지만 권장하지 않습니다.
- 다른 사용자가 상자를 가져와야하는 경우 사용자 정의로 간주되어 혼란스러워 질 수 있으므로 찡 그릴 수 있습니다.
- 이 "취약한"사용자 정의의 결과로 향후 상태에서 시스템이 손상 될 수 있습니다.
/opt
.