이번 글에서는 우분투에 java를 설치하는 방법을 알아보겠습니다. 여기에 언급된 명령어들은 추후에 다시 다뤄볼 기회가 있을 겁니다. 여기에서는 그냥 간단하게만 훑고 넘어가도록 하겠습니다.


 먼저, apt-cache search 명령어와 grep를 이용해서, java 패턴이 있는 패키지 중에서 openjdk-8 패턴이 있는 것을 검색하였습니다.

 

 그랬더니 이런 것들이 쭉 나오게 되었어요. 저는 처음에 openjdk-8-jre-headless를 설치해서, 왜 javac가 설치가 안 되었지? 하고 당황하였습니다. 당황하지 마시고, openjdk-8-jdk-headless를 설치하시면 됩니다. jre는 자바 런타임만 설치하게 됩니다.

 

 apt-get install openjdk-8-jdk-headless 명령어를 입력하시면, 잘 설치가 됨을 알 수 있습니다. 이렇게 하고 나서, 그냥 javac 명령어나 java 명령어를 입력해 보면 잘 먹혀들어감을 알 수 있어요. 그런데, JAVA_HOME과 PATH 설정을 하지 않으면 안 되는 경우도 있어요.

 

 

 

 

 그러니, 설정을 해 보도록 하겠습니다.

 


 javac랑 java의 위치를 확인할 필요가 있어요. which 명령어를 입력해 봅시다.

 

 그러면 이들이 /usr/bin 밑에 있음을 알 수 있는데요. which 명령어는 command가 어느 위치에 있는지 알려줍니다.

 

 /usr/bin/java와 /usr/bin/javac는 각각 /etc/alternatives/java, /etc/alternatives/javac의 링크임을 알 수 있어요.

 

 /etc/alternatives 위치로 가서, ls와 grep 명령어를 이용, java 패턴만 잘 골라내 봅시다.

 

 

 그러면 java와 javac가 보이는데요. javac의 위치를 볼 필요가 있어요. /usr/lib/jvm/java-8-xxx/bin 밑에 있음을 알 수 있는데요. 여기서, jdk가 설치된 위치는 /usr/lib/jvm/java-8-xxx 임을 알 수 있습니다. 이 정보까지 알았다면, 가이드를 통해서 설정해 보도록 하겠습니다.

 


 제 로그인 쉘은 bash shell 입니다. zsh가 아닙니다. 만약에 zsh라면, 전역 환경변수를 설정하기 위해서 바꾸어야 하는 파일이 다르니 그 점을 유의하시면 됩니다. 여기에서는 bash일 때 어떻게 설정하는지만 다룹니다. 가이드에 따르면, jdk의 설치 위치를 알면 된다고 하는데요. 일단 jdk의 설치 위치는 알아 냈습니다.

 

 이제 환경 변수가 어떻게 설정이 되었는지를 알아야 하는데요. PATH부터 보겠습니다.

 

 env 명령과 grep PATH를 이용하면 정확히 env의 결과 중에 PATH가 들어있는 것만 떨구게 됩니다. 뭔지 모르겠지만, 가이드에 따르면, 이 변수에도 뭔가 추가해야 할 듯 보이네요.

 

 가이드 대로 /etc/profile 밑에 밑에 두 줄을 추가합니다. 이 중 밑에서 2번째 줄은 JAVA_HOME이라는 환경 변수를 /usr/bin/jvm/... 으로 설정한다는 의미입니다. 문제는 맨 밑에 줄인데요. 문서에 따르면, PATH 정의에 $JAVA_HOME/bin을 추가한다는 의미입니다. 생각해 보면, :으로 구분된 것들은 path일 가능성이 높아 보이지 않았나요?

 

 

 

 PATH=$JAVA_HOME/bin:$PATH는, $JAVA_HOME/bin: 이라는 문자열 뒤에 기존 환경 변수 PATH를 추가합니다. 그러면, 결국, jdk가 설치된 위치의 bin이 path에 추가된 효과를 보게 되어요. 쉘에서 대치 명령어는 이 글에서 다뤘던 듯 싶으니, 참고하시면 좋을 듯 싶습니다. 이제 $PATH가 어떻게 바뀌었는지 보도록 하겠습니다.

 

 source /etc/profile 명령어를 입력합니다. sh가 아님에 유의하세요. 이 둘에 대한 차이는 조만간 다루도록 하겠습니다.

 

 

 다음에, reboot를 해서, $PATH를 출력해 보겠습니다. javac가 있는 위치가 PATH의 정보에 추가되었음을 알 수 있어요.

 

 JAVA_HOME도 잘 적용되었음을 알 수 있습니다.