[linux] 우분투 패키지 강제 재설치하기

패키지 파일이 손상되거나, 패키지 일부를 잘못 삭제해서 패키지를 재설치해야 할 때, 일반적인 커맨드로는 패키지가 삭제되거나 설치되지 않을 수 있습니다.

이럴 때는 강제 삭제와 강제 재설치 커맨드를 사용해서 패키지를 재설치 해야 합니다.

패키지 강제 재설치

패키지가 손상되었지만, 패키지 매니저인 apt는 설치된 패키지의 어떤 부분이 손상된지를 알 수 없습니다. 때문에 이미 패키지가 설치되었다고 인식되어 "apt install" 커맨드는 취소됩니다.

이럴 때 "--reinstall" 옵션을 사용하면 패키지 파일을 새로 다운로드 받아 설치합니다.

sudo apt --reinstall install package-name

패키지 강제 삭제

"--reinstall" 옵션은 대부분의 경우 패키지를 다시 복원해주지만, 이 옵션으로도 패키지가 올바르게 구성되지 않으면 설치된 패키지를 강제로 삭제해 패키지가 설치되지 않은 것으로 인식되도록 해야 합니다.

구성 패키지 일부가 손상되서 패키지를 삭제하는 "apt remove" 커맨드로 삭제되지 않을 때 다음처럼 "--purge" 옵션을 사용합니다. "--purge" 옵션을 사용하면 패키지와 함께 패키지와 연결된 환경 설정까지 모두 삭제합니다.

패키지 삭제 후 패키지를 설치하면 됩니다.

sudo apt --purge remove package-name
sudo apt install package-name

일부 패키지는 메타패키지 형태로 설치되기 때문에 설치할 때의 패키지 이름과는 다른 패키지 이름으로 설치되거나, 추가의 패키지가 설치되기도 합니다.

예를 들어 nginx 같은 패키지는 메타패키지로 설치되며, sudo apt remove nginx로는 설치된 패키지가 삭제되지 않을 수 있습니다. 패키지를 인식하지 못하면 다음처럼 설치된 패키지가 없다고 표시됩니다.

sudo apt remove nginx
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package 'nginx' is not installed, so not removed
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.

이럴 때 다음처럼 메타 문자("*") 문자를 붙여서 "nginx" 이름으로 시작하는 모든 연관된 패키지를 삭제할 수 있습니다.

sudo apt --purge remove nginx*

종속성이 있는 패키지를 모두 재설치

aptitude 툴은 apt를 대신해서 사용할 수 있는 패키지 관리자입니다. apt 패키지처럼 패키지를 설치할 수 있지만, 종속 관계에 있는 패키지까지 모두 설치, 또는 재설치를 할 수 있습니다.

sudo aptitude reinstall package-name

일부 배포판에서는 aptitude가 기본 포함되어 있지 않으므로 apt 커맨드로 설치한 후 사용해야 합니다.

sudo apt install aptitude