TL; DR 또는 "그냥 내 pi를 태우십시오"
sudo apt-get remove --auto-remove --purge 'libx11-.*'
sudo apt-get autoremove --purge
( apt-get autoremove --purge
고아가 남지 않을 때까지 반복 )
추가 설명
패키지의 경우 푸 따라 다른 패키지에 libfoo 하고 제거 libfoo의 패키지를 종속 ( 푸 )도 제거됩니다. 푸 가지고 있기 때문에이 따라 지정 라인 libfoo를 , libfoo가 제거 된 경우 foo는 탈퇴 나눌 수있다. 반대의 경우는 사실이 아닙니다. foo를 제거해도 libfoo는 자동으로 삭제 되지 않습니다 . 또 다른 패키지 xfoo 도 libfoo에 의존 할 수 있으므로 apt는 제거하지 않습니다 (apt는 foo 설치의 부작용으로 만 설치되었는지 추적하지만) 다른 사람이 의존하지 않는 한 요청하면 자동으로 제거하도록 제안하십시오.)
메타 패키지는 따라 거의 같은 방법으로 다른 패키지 세트에 푸 에 의존 libfoo , 그래서 당신은 메타 패키지를 제거 할 때, 다른 약간은 일반적으로 제거됩니다. 예를 들어, 두 개의 메타 패키지가있을 수있다 의존 의 xterm (lxsession 및 아마도 xfsession)에 있지만, 하나 또는 모두를 제거 되지 xterm 등이되지 않고 xfsession lxsession 또는 파손되기 때문에 xterm을 제거. 메타 패키지는 일반적으로 종속성 트리 의 맨 위에 있으며 맨 아래가 아니라 메타 패키지에 직접 의존하는 것은 거의 없습니다. 메타 패키지는 주로 합리적인 패키지를 한 번에 설치하는 편리한 방법을 제공하지만 제거 도구는 아닙니다.
따라서 X11에 의존하는 모든 것을 태우려면 모든 x11 앱 이 궁극적으로 의존 해야하는 기본 libx11 라이브러리 세트를 대상 으로 해야합니다 .
sudo apt-get remove --dry-run --auto-remove --purge 'libx11-.*'
sudo apt-get autoremove --dry-run --purge
이것은 libx11-. *에 궁극적으로 의존하는 모든 것을 (시뮬레이션) 제거 하고 X11 자체에 직접 의존하지 않더라도 X11 프로그램의 의존성으로 설치된 모든 패키지를 제거합니다 (CUPS 및 Ghostscript는 일반적으로 설치됩니다) 데스크톱 환경 설치의 부작용으로). 두 번째 명령은 남아있을 때까지 후속 고아를 제거합니다. 이 단계를 나중에 수행하거나 전혀 수행하지 않으려면 "--auto-remove"를 제거하거나 GUI를 제거한 후 패키지를 수동으로 다시 추가하십시오.
제거 --dry 실행 하는 옵션을 실제로 수행하는 작업을 한 후에 당신은 당신이 제거 할 의도하지 않은 패키지를 제거하지 않을 것을 확인했다.)
부작용을 청소하고 제거하고 필요에 따라 다시 추가하는 것을 선호합니다. 또한, 나는 내 자신의 pi에서 이것을 테스트하고 스파르타이지만 기능적인 서버로 재부팅했습니다. :)
제거가 무엇인가를 설치 하는 이유는 무엇입니까?
위의 전략은 명시된 문제를 해결하지만 제거 작업으로 인해 패키지가 설치 되는 이유에 대한 호기심이 여전히 남아 있습니다.
모든 패키지 관리자의 핵심 에는 어떤 종류 의 만족도 솔버 가 있습니다. 패키지 관리자에게 일부 패키지 를 설치 하거나 , 일부 패키지를 제거 하거나, 일부 패키지를 업그레이드 하도록 지시 할 때 실제로 요청하는 것은 사용 가능한 패키지 세트가 주어지면 다음에 원하는 소프트웨어 설치 상태를 해결하는 것입니다. 이 솔루션 에는 추가 패키지 (종속성) 설치, 기존 패키지 제거 (충돌, 중단), 특정 패키지 다운 그레이드 / 업그레이드 (호환성 수준) 또는 이들의 조합 이 포함될 수 있습니다. 따라서 솔버 가 다른 패키지를 제거 하기 위해 일부 패키지를 설치 해야한다고 결정하는 것은 약간의 반 직관적이지만완벽하게 이해됩니다. 이것은 패키지 관리자가 해결하는 불쾌한 종속성 관리 문제입니다.
구체적인 예 : Java 응용 프로그램 세트가 이미 설치되어있는 경우 모두 현재 Java 호환 런타임 ( openjdk-7-jre)에 의존합니다 . 그런 다음 선언하는 새로운 자바 도구의 설치를 위해 해결하기 위해 패키지 관리자에게 문의 충돌 과 오픈 JDK-7-JRE를 하지만, 작품 과 오라클 - 7 - JRE (두 패키지는 일반적으로 제공 자바 7 런타임 ). 솔버는 제시 할 것이다 제거 의 오픈 JDK-7-JRE를 하고는 설치 의 오라클 자바 7 JRE기존 패키지를 손상시키지 않으면 서 새 패키지를 설치하려는 원하는 상태에 대한 솔루션.
이러한면에서 특정 케이스 의 xterm은 패키지이다 제공 불리는 가상 의존성 X 단말 에뮬레이터 ( xterm에 , lxterminal 및 aterm 등을 모두 제공 X-단말 에뮬레이터 는이 제거의 가능성이 있으므로) lxterminal (의 일부로서 ) LXDE 제거 솔버가 설치된 기존 패키지 (찾을 트랜스 필요한 가능한 예와 같은) 일부 종류의 X-단말 에뮬레이터를 요구하는 (따라서 해석 텀을 설치하도록 선택한 libutempter0 및 xbitmaps을다른 깨진 패키지를 설명하기 위해) 패키지 데이터베이스를 보지 않으면 이것이 가장 가능성이 높은 시나리오라고 가정합니다.
현재 xterm (또는 대체) 에 의존하는 패키지를 발견하려면 apt-cache rdepends 명령을 사용하십시오 ( --installed 스위치를 사용하여 설치된 패키지로만 제한).
$ apt-cache --installed rdepends xterm
xterm
Reverse Depends:
|xorg
clusterssh
|xinit
|tk8.5
|tk8.4
|transcode
대체 문자 '|'로 시작하는 종속성 패키지가 xterm 또는 그것이 제공하는 것에 의존한다는 것을 의미 합니다 ( 이 경우 x-terminal-emulator 임). 클러스터 SSH의 패키지에 의존 xterm을 명시 적으로 , 그리고 대안을 허용하지 않습니다. xterm이 필요한 패키지의 짧은 목록입니다.
드보르 판은 어때요?
추적 고아의 기능이 통합 된 2010 년 'autoremove'기능 (데비안 버그를 통해 apt-get을 582,791 deborphan 렌더링) 대부분 중복되고 기본적으로 사용되지 않습니다. deborphan 및 이와 유사한 다른 솔루션과 달리 apt-get 은 명시 적으로 설치된 패키지와 명시 적으로 설치된 패키지의 부작용 또는 종속성으로 설치된 패키지를 직접 추적 합니다. 예를 들어, 관리자가 foo를 설치하면 libfoo가 부작용으로 설치 되고 apt-get autoremove 는 실제로 foo를 제거 할 때 autoremove (또는 --auto-remove)가 지정된 경우 libfoo를 제거합니다.
deborphan이 취한 접근법은 추측 모음입니다. 예를 들어, 종속 항목이없는 설치된 라이브러리는 고아 여야합니다. libfoo 가 설치되어 있지만 foo 또는 xfoo 가없는 경우 deborphan은 고아 여야한다고 결정할 수 있습니다. 여기서 실패 모드 중 하나는 라이브러리가 제공하는 도구 (libxml2를 xmllint 용으로 libxml2-utils로 다시 패키징하기 위해 libxml2)를 위해 특별히 설치되거나 개발 목적으로 만 사용할 수 있다는 것입니다. 이러한 패키지 는 고아 가 아닙니다 . 또한 deborphan은 라이브러리에 중점을두기 때문에 추적에 적합한 많은 비 라이브러리 고아가 누락됩니다 (폐기 된 패키지 대 고아 패키지) .
munin
어떤 이유로 든 제거 되었지만 나중에 쉽게 다시 되돌릴 수 있습니다.