보통 커맨드라인에서 명령어를 치고 결과를 기다립니다. 가끔 만나는 에러 중 하나는 “command not found” 이며 부딪히고 싶지 않을 땐 미리미리 PATH를 등록해두면 됩니다. 이 포스트에서 설명하려는 기능은 update-alternatives 또는 alternatives 라는 명령어입니다. PATH 말고 다른 방법으로 이를 해결합니다.
update-alternatives 명령어를 정상적으로 사용하면 결과는 /etc/alternatives 라는 디렉토리에 기록됩니다. 아래와 같은 명령어로 확인해보면
$ ls -l /etc/alternatives/ total 0 lrwxrwxrwx 1 root root 55 Feb 12 04:19 appletviewer -> /usr/lib/jvm/java-1.6.0-openjdk.x86_64/bin/appletviewer lrwxrwxrwx 1 root root 56 Feb 12 04:19 appletviewer.1.gz -> /usr/share/man/man1/appletviewer-java-1.6.0-openjdk.1.gz lrwxrwxrwx 1 root root 46 Feb 12 04:19 apt -> /usr/lib/jvm/java-1.6.0-openjdk.x86_64/bin/apt lrwxrwxrwx 1 root root 47 Feb 12 04:19 apt.1.gz -> /usr/share/man/man1/apt-java-1.6.0-openjdk.1.gz lrwxrwxrwx 1 root root 51 Feb 12 04:19 extcheck -> /usr/lib/jvm/java-1.6.0-openjdk.x86_64/bin/extcheck lrwxrwxrwx 1 root root 52 Feb 12 04:19 extcheck.1.gz -> /usr/share/man/man1/extcheck-java-1.6.0-openjdk.1.gz lrwxrwxrwx 1 root root 21 Feb 12 04:25 flume-conf -> /etc/flume/conf.empty lrwxrwxrwx 1 root root 21 Feb 12 04:29 giraph-conf -> /etc/giraph/conf.dist lrwxrwxrwx 1 root root 22 Feb 12 04:24 hadoop-conf -> /etc/hadoop/conf.empty lrwxrwxrwx 1 root root 20 Feb 12 04:24 hbase-conf -> /etc/hbase/conf.dist lrwxrwxrwx 1 root root 19 Feb 12 04:28 hive-conf -> /etc/hive/conf.dist lrwxrwxrwx 1 root root 46 Feb 12 04:19 jar -> /usr/lib/jvm/java-1.6.0-openjdk.x86_64/bin/jar lrwxrwxrwx 1 root root 47 Feb 12 04:19 jar.1.gz -> /usr/share/man/man1/jar-java-1.6.0-openjdk.1.gz lrwxrwxrwx 1 root root 52 Feb 12 04:19 jarsigner -> /usr/lib/jvm/java-1.6.0-openjdk.x86_64/bin/jarsigner lrwxrwxrwx 1 root root 53 Feb 12 04:19 jarsigner.1.gz -> /usr/share/man/man1/jarsigner-java-1.6.0-openjdk.1.gz lrwxrwxrwx 1 root root 46 Feb 12 04:18 java -> /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java lrwxrwxrwx 1 root root 48 Feb 12 04:18 java.1.gz -> /usr/share/man/man1/java-java-1.6.0-openjdk.1.gz lrwxrwxrwx 1 root root 48 Feb 12 04:19 javac -> /usr/lib/jvm/java-1.6.0-openjdk.x86_64/bin/javac lrwxrwxrwx 1 root root 49 Feb 12 04:19 javac.1.gz -> /usr/share/man/man1/javac-java-1.6.0-openjdk.1.gz lrwxrwxrwx 1 root root 50 Feb 12 04:19 javadoc -> /usr/lib/jvm/java-1.6.0-openjdk.x86_64/bin/javadoc lrwxrwxrwx 1 root root 51 Feb 12 04:19 javadoc.1.gz -> /usr/share/man/man1/javadoc-java-1.6.0-openjdk.1.gz … $ which javac /usr/bin/javac $ readlink /usr/bin/javac /etc/alternatives/javac
위와 같은 결과를 보면 알 수 있듯이 모두 link 파일입니다.
사용 방법은 아래와 같습니다. (단순 예제)
$ mkdir /usr/lib/scala29 $ wget http://www.scala-lang.org/downloads/distrib/files/scala-2.9.2.tgz $ wget http://www.scala-lang.org/downloads/distrib/files/scala-2.9.3-RC2.tgz $ tar xvfz scala-2.9.2.tgz $ tar xvfz scala-2.9.3-RC2.tgz $ update-alternatives --install /usr/bin/scala scala /usr/lib/scala29/scala-2.9.2/bin/scala 5 $ readlink /etc/alternatives/scala /usr/lib/scala29/scala-2.9.2/bin/scala $ update-alternatives --install /usr/bin/scala scala /usr/lib/scala29/scala-2.9.3-RC2/bin/scala 10 $ readlink /etc/alternatives/scala /usr/lib/scala29/scala-2.9.3-RC2/bin/scala $ update-alternatives --remove scala `readlink /etc/alternatives/scala` $ readlink /etc/alternatives/scala /usr/lib/scala29/scala-2.9.2/bin/scala
굳이 귀찮게 PATH에 등록할 필요는 없습니다.

