Reinstalling packages in Ubuntu

Ubuntu에서 어떤 package를 apt-get install 을 이용하여 install 하였을 경우, 자동으로 dependent apckage들까지 설치해준다. 그런데 만약 설정 파일을 잘못 건드려서 다시 처음 install했던 상태로 되돌리려고 한다면? 당연히 그런 경우에 해당 package를 reinstall 하면 될 것으로 생각할 것이다. (M$ Windows 적 사고방식인가? 뭐 아무튼…) 그런데, Ubuntu에서 apt-get으로 아무리 reinstall을 하고, remove했다가 다시 install을 해도 이게 제대로 되질 않는다. 대략난감 OTL…

이번에 Ubuntu를 가지고 personal web server를 구성하면서 이런 경우를 두번 당했는데, 한번은 apache22를 설치한 후 apache.conf 파일을 잘못 건드려서 날려버리고, reinstall 하겠다고 apt-get remove apache22 한 후에 해당 디렉토리를 날려버린 경우이고, 또 한번은 sun-java5-jdk를 설치한 후 javac는 1.5가 불려지는데, java는 1.4 (default로 설치되어 있는 버전)가 불려져서 link를 바꾸다가 target과 link name을 바꿔쓰는 바람에 1.5 jre/bin 아래 있는 java를 날려버린 경우이다. 

첫번째 경우에는 아무리 apt-get install로 새로 깔아도 해당 디렉토리가 새로 생성되지 않아서 포기하고 결국 FreeBSD 6.0을 설치해 버렸다. 그런데, 이놈은 java를 설치하기가 너무 힘들다. diablo version의 jdk가 있지만, sun의 official jdk를 설치하려고 하면 source code를 다운받아서 모두 compile해야 하는데 그 과정이 어마어마하다. OTL… 결국 다시 Ubuntu로 돌아올 수 밖에 없었다.

이번에는 심기일전, 이전의 실수를 되풀이하지 않기 위해 조심스럽게 config 파일들의 복사본을 만들어두고 작업을 했다. apache, mysql, php를 설치하고 제대로 연동되는것까지 확인!! 오~~ 이제 java를 설치할 차례다. 그런데, apt-get install java5 라고 해도…그런 package는 없댄다. OTL…

SUN 사의 license정책에 따라 기본 package set에 없고, package repository에 universe와 multiverse를 추가해 주어야 설치가 된다. 명령어는 apt-get install sun-java5-jdk. 깔끔하게 설치가 된 후에 앞서 얘기한 대로 javac -version했더니 1.5라고 나온다. 그런데 java -version라고 했더니 왠걸 1.4 버전이다. $PATH를 따라가보니 1.4 package에 link가 걸려 있어서 해당 링크를 바꾸기 위해 ln -sf <target> <link_name>을 입력했는데, 아뿔사, <targe>과 <link_name>을 바꿔썼다. 부랴부랴 sun-java5-jdk가 설치된 directory로 이동하여 확인해봤더니, OTL… -f option때문에 강제로 java 실행파일을 지워버렸다. 그 후 아무리 apt-get remove sun-java5-jdk --purgeapt-get reinstall sun-java5-jdkapt-get install sun-java5-jdk를 불러봐도, 없어진 java실행파일이 만들어지지 않는다. ㅠ.ㅠ

몇 시간을 internet search를 한 후 드디어 방법을 알아냈다.
http://www.linuxquestions.org/questions/showthread.php?t=237772

다음의 과정을 거치면 해결된다.

$> apt-get install debfoster deborphan
$> apt-get remove --purge sun-java5-jdk
$> apt-get clean
$> debfoster 

여기서 sun-java5-jdk와 관련있어 보이는 녀석들을 삭제해준다. debfoster는 apt-get remove --purge이후에 남아있는 library와 파일들을 보여주는데, 삭제해도 될 지 확신이 서지 않는다면, 나중에 deborphan을 이용해서 더 이상 다른 곳에서 사용하지 않는 library목록을 알 수 있으므로 일단은그냥 지나가도 된다. 만약 실수로 삭제했다고 생각했을 때에는 ‘u’를 입력하면 된다. 이제 deborphan을 실행할 차례다.

$> deborphan 

여기서 orphan으로 판정된 라이브러리들을 확인하고, 만약 지우고 싶으면 아래 명령을 이용하면 된다.

$> deborphan | xargs apt-get -y remove purge 

모든 과정이 종료됐다면, 아래 명령으로 마무리하고 sun-java5-jdk를 다시 설치하자.

$> apt-get clean
$> apt-get install sun-java5-jdk 

깔끔하게 SUN license에 동의해주고, 설치 완료!!