dpkg는 데비안 패키지 관리 시스템의 기초가 되는 소프트웨어로서, .deb 패키지의 설치, 삭제, 정보 제공을 위해 사용되는 명령어입니다.
dpkg 자체는 APT 등과 같은 고급 도구에 비해 낮은 레벨의 도구이며 복잡한 패키지 관계와 패키지를 원격에서 받아오는 등의 일을 합니다. APT도 Ubuntu의 소프트웨어를 관리하기 위해 내부적으로 이 dpkg를 사용합니다.
dpkg -i <.deb 파일>
설치된 패키지 제거
dpkg -r <패키지명>
: 해당 패키지 삭제 (삭제 시 설정 파일들은 남겨둡니다.)
sudo dpkg -P <패키지명>
: 해당 패키지와 해당 패키지의 설정파일을 모두 삭제설치된 패키지 목록 보기
dpkg -l
$ dpkg -l | grep ^rc
rc bogofilter 1.2.4+dfsg1-12 ...
dpkg -P bogofilter 명령어로 완전히 삭제 할 수 있습니다.
상태가 rc 인 모든 패키지를 지우고 싶다면 아래 명령어로...
dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge
커널 업데이트 이후에 부팅이 제대로 되지 않는 문제가 발생하였다.
grub 에서 과거 커널로 부팅 할 수 있지만, 추가 업데이트 되다 보면 잘 작동하는 버전이 grub 에서 사라지지 않을까 하는 불안이 들어서 문제가 있는 커널을 지웠다.
또한 인터넷에서 커널을 좀 더 편하게 지우는 법을 찾았다.
언젠가부터 apt autoremove 로 예전 커널을 지울 수 있게 됐다. 현재 커널과 예전 커널 2개(?)를 남기고, 그 이전 커널들은 모두 알아서 지워준다.
하지만, 어떤 이유로든 계속 남아있는 커널들이 있다. 남아있다고 해서 문제가 되지는 않지만, 혹시나 /boot 를 독자 파티션으로 설정한 경우, 용량 부족이 생길 가능성은 있다.
따라서, 남은 커널을 지울 필요는 있는데.. 어떻게 할 수 있으려나?
현재 설치되어 있는 커널을 알아보는 방법을 먼저 알아봐야겠다.
$ sudo dpkg --list | egrep -i --color 'linux-image|linux-headers'
ii linux-headers-5.4.0-42-generic 5.4.0-42.46~18.04.1 amd64 Linux kernel headers for version 5.4.0 on 64 bit x86 SMP
ii linux-headers-generic-hwe-18.04 5.4.0.42.46~18.04.35 amd64 Generic Linux kernel headers
ii linux-image-5.3.0-1033-gke 5.3.0-1033.35 amd64 Signed kernel image GKE
ii linux-image-5.3.0-1034-gke 5.3.0-1034.36 amd64 Signed kernel image GKE
rc linux-image-5.3.0-62-generic 5.3.0-62.56~18.04.1 amd64 Signed kernel image generic
이 중, 첫번째 열에 ii/rc 라고 나와있는데, 이건 무슨 뜻일까?
ii : ‘It should be installed and it is installed’
rc : ‘It’s removed/uninstalled but it’s configuration files are still there’
ii 는 현재 정상 설치되어 있는 커널이고, rc 는 지워졌으나 설정은 남아있는 커널이다.
ii 든, rc 든 모두 apt purge 로 지울 수 있다.
형식은 다음과 같다.
sudo apt purge linux-headers-<판본번호> linux-image-<판본번호>
위의 경우 이런 식으로 선택/삭제해줄 수 있다.
sudo apt purge linux-headers-6.8.0-45-generic linux-image-6.8.0-45-generic
linux-image-6.8.0-45-generic 을 삭제하면 linux-image-unsigned-6.8.0-45-generic 를 설치함.
특정 파일이 속한 패키지 확인
dpkg -S /etc/ssh/ssh_config
dpkg -S /etc/ssh/ssh_config
: 해당 파일명 또는 경로가 포함된 패키지들을 검색
: 해당 .deb 파일이 설치한 파일의 목록 확인
dpkg -s <패키지명>
: 해당 패키지에 대한 정보 확인
dpkg -I <.deb 파일>
: 해당 .deb 파일에 대한 정보 확인
sudo dpkg -i <.deb 파일>
: 해당 파일 설치 또는 최신 버전으로 업그레이드
: 파일에 포함되어있는 파일들을 지정된 디렉토리에 압축 해제
(※ 이 명령을 실행할 경우, 해당 디렉토리를 초기화 시켜버리므로 주의해야 합니다!!!!!!!!)