데비안 apt-get autoremove 에 관한 질문입니다.
autoremove 옵션은 지우려고 하는 패키지의 dependency 를 찾아내서 해당 패키지를 지우게 되면 자동으로 안쓰이는 다른 패키지들을 지워주는 옵션이라 알고있습니다.
그런데, 어떤 패키지를 인스톨하고 그 상태에서 그 패키지를 바로 autoremove 해봤습니다만, 인스톨할때 같이 깔렸던것들이 다 지워지지가 않네요.
예를들어, 방금전 mlterm 이라는 패키지를 인스톨해봤습니다.
# sudo apt-get install mlterm
하니까 libssh2-1, mlterm-common, mlterm-tools 라는 3개의 패키지가 같이 인스톨되어 mlterm 까지 총 4개의 패키지가 인스톨되더군요.
# sudo apt-get autoremove --purge mlterm
하니까 mlterm*, mlter-tools* 라는 패키지를 지울것이고 mlterm-tiny 라는 패키지를 새로 인스톨한다고 나옵니다.
즉, mlterm 과 mlterm-tools 라는 2개의 패키지만 지워지고 여기에 mlterm-tiny 라는 패키지가 새로 인스톨되었습니다.
# sudo apt-get autoremove --purge mlterm-tiny
해보니까 mlterm-tiny* 라는 패키지를 지운다고 나오고 실제로 mlterm-tiny 만 지워졌습니다.
최종적으로
# sudo apt-get autoremove --purge mlterm-common
을 하니까 mlterm-common* 와 libssh2-1* 패키지가 지워져서 이제서야 mlterm 깔기 전 상태로 원상복귀가 되었습니다.
현재 데비안 testing wheezy 를 사용중이고 apt-get 은 전혀 안건드린 디폴트 상태인데, 이상해서 물어봅니다. 참고로, 중간에 clean, autoclean 도 해봤는데 이걸로는 아무것도 안지워지더군요.
원래 autoremove 가 제가 알고있는 dependency 찾아서 싹 지워주는것만이 아닌 다른 패키지를 인스톨하거나 하는 기능도 있는건가요?
만약 그렇다면, 패키지 지울때 그냥 애초에 그 패키지를 인스톨하지 않았던것과(물론, 제가 직접 인스톨한 다른 패키지에서 공유하는 패키지는 남기고요.) 같이 깔끔하게 지워주게 만들어주는 옵션이 따로 있나요?
사용법이... sudo apt-get purge
사용법이...
sudo apt-get purge mlterm
부터 한 후에
sudo apt-get autoremove
하는거에요. 인자 없이.
man page 에 보면
옵션란에 --purge 도 있는데요. 예를들어 의존패키지 놔두고 패키지 한개만 지우는 remove 명령과 --purge 를 조합해서 apt-get remove --purge 하면 apt-get purge 와 동일하다고 써있네요.
purge 명령은 의존패키지와는 상관없이 해당 패키지와 해당 패키지의 모든 configuration 파일을 지우는 명령이라고 나옵니다. 그리고, apt-get remove/autoremove mlterm 만 하면
그냥 mlterm 과 mlterm-tools 를 지울거냐고 나오고, apt-get purge 혹은 apt-get autoremove --purge 하면 mlterm* 와 mlterm-tools* 를 지울거냐고 나오고요. 즉, autoremove --purge 해줘도 됩니다.
어쨋든, 그래도 말씀해주신대로 다시 테스트해봤는데 똑같습니다. 게다가 apt-get purge mlterm 을 하면 mlterm* 과 mlterm-tools* 가 지워지고, 여기서 이미 mlterm 이 지워져서 apt-get autoremove mlterm 하면
이미 그 패키지가 없다고 아무것도 안지워지더군요.
sudo apt-get
sudo apt-get autoremove
하는거에요. 인자 없이.
라고 알려주는거 같은데 왜 그렇게 안해봅니까??
해봤다고 댓글에 써있잖아요?
그냥 결과를 붙여넣기 해보겠습니다.
# sudo apt-get install mlterm
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
mlterm-common mlterm-tools
Suggested packages:
unifont xfonts-efont-unicode ttf-vlgothic ttf-baekmuk ttf-arphic-bsmi00lp ttf-arphic-gbsn00lp t1-cyrillic mlterm-im-uim mlterm-im-m17nlib mlterm-im-scim
The following NEW packages will be installed:
mlterm mlterm-common mlterm-tools
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/1155 kB of archives.
After this operation, 2728 kB of additional disk space will be used.
Do you want to continue [Y/n]? y
Selecting previously deselected package mlterm-common.
(Reading database ... 173926 files and directories currently installed.)
Unpacking mlterm-common (from .../mlterm-common_3.0.6-1_amd64.deb) ...
Selecting previously deselected package mlterm.
Unpacking mlterm (from .../mlterm_3.0.6-1_amd64.deb) ...
Selecting previously deselected package mlterm-tools.
Unpacking mlterm-tools (from .../mlterm-tools_3.0.6-1_amd64.deb) ...
Processing triggers for man-db ...
Setting up mlterm-common (3.0.6-1) ...
Setting up mlterm (3.0.6-1) ...
Setting up mlterm-tools (3.0.6-1) ...
보시다시피 인스톨하면 3개 패키지가 인스톨되고 2728kB 를 먹습니다.
# sudo apt-get autoremove mlterm
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
mlterm-tiny
Suggested packages:
unifont xfonts-efont-unicode ttf-kochi-gothic ttf-baekmuk ttf-arphic-bsmi00lp ttf-arphic-gbsn00lp t1-cyrillic mlterm-im-uim
The following packages will be REMOVED:
mlterm mlterm-tools
The following NEW packages will be installed:
mlterm-tiny
0 upgraded, 1 newly installed, 2 to remove and 0 not upgraded.
Need to get 0 B/267 kB of archives.
After this operation, 393 kB disk space will be freed.
Do you want to continue [Y/n]? y
(Reading database ... 174025 files and directories currently installed.)
Removing mlterm-tools ...
Removing mlterm ...
Processing triggers for man-db ...
Selecting previously deselected package mlterm-tiny.
(Reading database ... 173997 files and directories currently installed.)
Unpacking mlterm-tiny (from .../mlterm-tiny_3.0.6-1_amd64.deb) ...
Processing triggers for man-db ...
Setting up mlterm-tiny (3.0.6-1) ...
2개 패키지만 지워지고 1개의 패키지가 인스톨됩니다. 추가로 생기는 디스크 용량은 겨우 393kB
참고로, autoremove 와 autoremove --purge 의 차이점은 autoremove 만 할경우 패키지만 지워지고, autoremove --purge 할경우 autoremove 와 똑같으면서 configuration 파일까지 함께 지워줍니다.
--purge 를 문제삼을 필요는 전혀 없다는 이야기죠.
# sudo apt-get autoremove
윗분들은
# sudo apt-get autoremove mlterm 가 아니라
# sudo apt-get autoremove 를 해보시라고 말씀하신 것 같은데요.
다시 테스트 결과를 올려드립니다.
수동으로 깔끔히 지우고 다시 말씀하신대로 인스톨/리무브 해봤습니다.
# sudo apt-get install mlterm
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
libssh2-1 mlterm-common mlterm-tools
Suggested packages:
unifont xfonts-efont-unicode ttf-vlgothic ttf-baekmuk ttf-arphic-bsmi00lp ttf-arphic-gbsn00lp t1-cyrillic mlterm-im-uim mlterm-im-m17nlib mlterm-im-scim
The following NEW packages will be installed:
libssh2-1 mlterm mlterm-common mlterm-tools
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/1278 kB of archives.
After this operation, 2978 kB of additional disk space will be used.
Do you want to continue [Y/n]? y
Selecting previously deselected package libssh2-1.
(Reading database ... 173919 files and directories currently installed.)
Unpacking libssh2-1 (from .../libssh2-1_1.2.8-2_amd64.deb) ...
Selecting previously deselected package mlterm-common.
Unpacking mlterm-common (from .../mlterm-common_3.0.6-1_amd64.deb) ...
Selecting previously deselected package mlterm.
Unpacking mlterm (from .../mlterm_3.0.6-1_amd64.deb) ...
Selecting previously deselected package mlterm-tools.
Unpacking mlterm-tools (from .../mlterm-tools_3.0.6-1_amd64.deb) ...
Processing triggers for man-db ...
Setting up libssh2-1 (1.2.8-2) ...
Setting up mlterm-common (3.0.6-1) ...
Setting up mlterm (3.0.6-1) ...
Setting up mlterm-tools (3.0.6-1) ...
이번엔 총 4개 패키지 인스톨되고 2978kB 먹는군요.
# sudo apt-get purge mlterm
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
mlterm-tiny
Suggested packages:
unifont xfonts-efont-unicode ttf-kochi-gothic ttf-baekmuk ttf-arphic-bsmi00lp ttf-arphic-gbsn00lp t1-cyrillic mlterm-im-uim
The following packages will be REMOVED:
mlterm* mlterm-tools*
The following NEW packages will be installed:
mlterm-tiny
0 upgraded, 1 newly installed, 2 to remove and 0 not upgraded.
Need to get 0 B/267 kB of archives.
After this operation, 393 kB disk space will be freed.
Do you want to continue [Y/n]? y
(Reading database ... 174025 files and directories currently installed.)
Removing mlterm-tools ...
Purging configuration files for mlterm-tools ...
Removing mlterm ...
Purging configuration files for mlterm ...
Processing triggers for man-db ...
Selecting previously deselected package mlterm-tiny.
(Reading database ... 173997 files and directories currently installed.)
Unpacking mlterm-tiny (from .../mlterm-tiny_3.0.6-1_amd64.deb) ...
Processing triggers for man-db ...
Setting up mlterm-tiny (3.0.6-1) ...
아까와 마찬가지로 2개 지워지고 1개 인스톨되고 393kB 의 추가공간을 만들어줍니다.
# sudo apt-get autoremove
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
아무것도 지워지지 않고 아무런 변화가 없습니다.
저는 apt-get purge mlterm을 했을 때
저는 apt-get purge mlterm을 했을 때 mlterm-tiny 패키지를 설치할 거냐고 묻지 않고 mlterm-common 패키지가 더 이상 필요 없게 되었다고, 지울 거면 autoremove 옵션을 사용하라고 나옵니다.
저도 그게 정상이어야 할것같은데
상식적으로 지우는데 패키지를 새로 깐다는게 이해가 안가거든요. 혹시 디폴트 세팅이 아니라 다른 세팅을 사용하시는지요? 전 데비안 wheezy 이고 apt-get 세팅은 따로 건드리지 않았습니다.
우분투 10.04 이고요.
우분투 10.04 이고요. /etc/apt/sources.list 에서 저장소를 국내 저장소로 바꾼 뒤 사용하고 있습니다.
제생각에 저장소 문제일것같진 않고...
mlterm 을 지우면 mlterm-common 을 같이 지우는게 아니라, 오히려 mlterm-common 이 orphan 이 되는걸 막기위해 전혀 쓸모없는 새로운 부모패키지 mlterm-tiny 를 인스톨시킨다라...
왜이리 희안하게(?) 작동하는지 나중에 한번 자세히 알아봐야겠네요. 답변 감사했습니다.
글쎄요, apt-get 외에 aptitude를
글쎄요, apt-get 외에 aptitude를 혼용하시거나, apt-get으로 설치하셨던걸 dpkg 등으로 수동으로 지우셨다던가 하셨나요?
의존성이 꼬인게 아닐까 합니다.
아뇨.
aptitude, dpkg 모두 실행조차 안했었습니다. 모든 패키지를 apt-get 만으로 깔았고요. 그런데, autoremove 를 할때 새로운 패키지가 자동으로 인스톨되는 경우가 있긴 있는건가요?
제가 알기론 없습니다.올려주신 출력 내용에서도
제가 알기론 없습니다.
올려주신 출력 내용에서도 autoremove 시에 무언가가 새로 설치되는 경우는 안보이는데요....
(autoremove 뒤에 패키지명을 붙이는건 문서에 정의되지 않은 작업입니다)
확인차 한번 다시 여쭤보자면
http://kldp.org/node/125993#comment-570109
요기서 "수동으로 깔끔히 지우고" 라고 하신것도 그냥 apt-get 으로 지우신거죠? 흠...
네, apt-get 으로 지웠습니다.
그부분에서도 역시 apt-get 을 이용하여 mlterm-common 과 libssh2-1 를 지워줬습니다.
그리고,
# apt-get autoremove --purge mlterm 을 입력하면 윗 댓글에 나와있듯이
The following extra packages will be installed:
mlterm-tiny
Suggested packages:
unifont xfonts-efont-unicode ttf-kochi-gothic ttf-baekmuk ttf-arphic-bsmi00lp ttf-arphic-gbsn00lp t1-cyrillic mlterm-im-uim
The following packages will be REMOVED:
mlterm* mlterm-tools*
The following NEW packages will be installed:
mlterm-tiny
0 upgraded, 1 newly installed, 2 to remove and 0 not upgraded.
이런식으로 2개가 지워지고 mlterm-tiny 라는 패키지가 새로 인스톨됩니다.(autoremove 뒤에 패키지명과 --purge 붙이는거 잘 작동하는것같습니다. 다만, 문법이 문제가 아니라 현재 제 경우는 autoremove 자체가 이상하게 작동하는것같네요.)
말씀하신대로
# apt-get purge mlterm
하면 위에 autoremove --purge mlterm 했을때와 똑같이 2개 패키지가 지워지고 1개 패키지가 새로이 인스톨되고요. 그후에
# apt-get autoremove 하면
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
이렇게 아무런 변화가 없습니다.
그래서, apt-get 으로 따로 수동으로 처음에 mlterm 깔때 같이 인스톨됐던 mlterm-tiny, mlterm-common, libssh2-1 패키지를 지워준거고요.
현재로선 이해가 안갑니다. 참고로, 오래 쓴것도 아니고 몇일전에 깔아서 스트레이트로 쓸 패키지 인스톨만 좍 하고 테스트해본거니 뭐 의존이
꼬이거나 세팅이 변했거나 할일은 없을것같고요.
댓글 달기