헤드리스 서버로 실행할 때 X Server 및 Desktop Manager를 제거하는 방법은 무엇입니까?


88

Raspberry Pi를 헤드리스 서버로 사용하고 있습니다. X 서버, LXDE 등이 필요하지 않습니다.

Raspbian "wheezy"를 실행하고 있습니다. 여기에raspi-config 설명 된대로 "부팅시 데스크탑 시작"을 이미 비활성화 했습니다 . 그러나 사용하지 않는 모든 데스크탑 항목에 대해 많은 패키지 업데이트를 계속 받고 있습니다 ( 전자 메일을 통해 보류중인 업데이트를 알리기 위해 apticron 을 실행 ) apt-get remove. 불필요한 업데이트를 피하기 위해 모든 불필요한 패키지를 완전히 만들고 싶습니다 .

어떤 패키지를 제거해야합니까?

지금까지 나는 다음을 생각해 냈습니다.

sudo apt-get remove desktop-base lightdm lxappearance lxde-common lxde-icon-theme lxinput lxpanel lxpolkit lxrandr lxsession-edit lxshortcut lxtask lxterminal obconf openbox raspberrypi-artwork xarchiver xinit xserver-xorg xserver-xorg-video-fbdev

설치된 패키지-> x11-> 기본 섹션에서 "자동 설치"가 아닌 모든 패키지에 대해 위의 목록을 작성했습니다.

내가 이것을 실행할 때 어떤 이유로 든 apt-get말해줘 :

The following extra packages will be installed:
  libutempter0 xbitmaps xterm

제거 작업 에는 조금 이상해 보입니다 .

더 쉬운 방법이 있습니까? 이 모든 그래픽을 소유하고 제거 할 수있는 "슈퍼"패키지가 있습니까? 내 이해에서, 이것이 불가능한 것처럼 보입니다. 이것들은 자동으로 설치되지 않았기 때문에 모든 것을 추적하고 명시 적으로 제거해야합니다.

답변:


85

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에 , lxterminalaterm 등을 모두 제공 X-단말 에뮬레이터 는이 제거의 가능성이 있으므로) lxterminal (의 일부로서 ) LXDE 제거 솔버가 설치된 기존 패키지 (찾을 트랜스 필요한 가능한 예와 같은) 일부 종류의 X-단말 에뮬레이터를 요구하는 (따라서 해석 텀을 설치하도록 선택한 libutempter0xbitmaps을다른 깨진 패키지를 설명하기 위해) 패키지 데이터베이스를 보지 않으면 이것이 가장 가능성이 높은 시나리오라고 가정합니다.

현재 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은 라이브러리에 중점을두기 때문에 추적에 적합한 많은 비 라이브러리 고아가 누락됩니다 (폐기 된 패키지 대 고아 패키지) .


2
Brilliant는 저에게 감사를 표했습니다. munin어떤 이유로 든 제거 되었지만 나중에 쉽게 다시 되돌릴 수 있습니다.

4
스코치! 'libx11-.*'껍질이 움켜 쥐는 것을 막기 위해 인용해야했습니다 .

1
@ Maxx, 훌륭한 답변이지만 모든 시나리오에서 그가 apt-get remove원하는 것을 실행했을 때 install xterm와 다른 두 사람 이 어떻게 작동하는지 설명하지 않았습니다 . 나도 이것을 경험했고 그것을 해결할 수 없었다.
Madivad

2
apt-get 업그레이드 후 dist-upgrade : 깨끗하고 확장되지 않은 라즈 비안 설치 rootfs ... 94% /. apt-get remove --auto-remove --purge libx11-. * 후 : rootfs ... 51% /훌륭한 답변, 정말 고마워요!
Daniel F

2
그리고 apt-get autoremove 후 : rootfs ... 41% /...
Daniel F

27
sudo apt-get install deborphan
sudo apt-get autoremove --purge libx11-.* lxde-.* raspberrypi-artwork xkb-data omxplayer penguinspuzzle sgml-base xml-core alsa-.* cifs-.* samba-.* fonts-.* desktop-* gnome-.*
sudo apt-get autoremove --purge $(deborphan)
sudo apt-get autoremove --purge
sudo apt-get autoclean

deborphan고아 패키지를 제거하는 첫 번째 줄이 설치 됩니다.

두 번째 줄은 X11 시스템 LXDE, Samba (Windows 파일 공유), 글꼴, 그놈 및 Raspberry Pi의 데스크탑 환경과 관련된 기타 것들의 핵심 패키지를 제거합니다.

세 번째 줄은 deborphan에 의해 탐지 된 모든 고아 패키지를 제거합니다.

네 번째 줄은 불필요한 패키지를 제거합니다.

다섯 번째 줄은 패키지 캐시를 지 웁니다.


3
Raspberry Pi Stack Exchange에 오신 것을 환영합니다! 이것은 기술적으로 질문에 대답 할 수 있지만 이것이 어떻게 작동하고 정확히 무엇을하는지에 대한 설명을 포함하는 것이 좋습니다.
RPiAwesomeness

1
새로운 Raspbian 설치에서 해당 명령을 실행하면 4GB SD 카드의 기가 바이트 미만에서 2.5GB로 무료로 이동했습니다. 나에게 적어도 이것은 정답입니다.
rob

2
허용되는 답변은 매우 심층적이지만 실제로 OP 문제를 해결하기위한 목록을 제공하지는 않습니다. 이 답변은 베어 본이 될 수 있지만, 실제로 영업 이익 (나를) 실제로 필요 달성
portforwardpodcast

삼바를 제거해야하는 이유 이것은 GUI 애플리케이션이 아닙니다. 네트워킹에 필요할 수 있습니다.
Dogweather

9

1/. 방금 수행 한 모든 데스크톱을 제거하려면 (커피를 마실 수 있습니다. 산책하는 데 시간이 조금 걸립니다) ...
apt-get remove --auto-remove --purge libx11-.*

2 /. 그런 다음 고아 파일을 제거하기 위해 deborphan을 설치했습니다 ...
sudo apt-get install deborphan

고아가 된 것을보고 싶다면 이것을하십시오 ...
deborphan -sz

삼/. 그런 다음 모든 고아 파일을 제거했습니다 ...
sudo apt-get remove --purge $(deborphan)

마지막으로 고아가 아닌 불필요한 패키지를 제거하려면이 작업을 수행하십시오 ...
sudo apt-get autoremove

최종 결과 : 휘파람처럼 머리가없고 깨끗합니다.


2
apt-get remove --dry-run전혀 아무것도 하지 않지만 화면에 메시지를 인쇄합니다.
lenik

7

여기 봐 하지만 대한 부분을 아래로 스크롤합니다 tasksel.

tasksel --list-taskswifi ssh를 통해 파이에서 실행 하면 약 30 초 후에 나에게 다음을줍니다.

u desktop   Debian desktop environment
u web-server    Web server
u print-server  Print server
u database-server   SQL database
u dns-server    DNS Server
u file-server   File server
u mail-server   Mail server
u ssh-server    SSH server
u laptop    Laptop

따라서 tasksel remove desktop원하는 것을해야합니다 [댓글 참조] . tasksel은 대부분 데비안 관리자를위한 것이기 때문에 맨 페이지는 약간 간단하고 신비 롭습니다. 이것이 작동하면 알려주십시오.)


감사 tasksel합니다. 우분투 경험이 많지만들은 적이 없습니다 . 불행히도 나는 이것을 시도했지만 remove desktop명령 을 실행하는 데 시간이 걸렸지 만 모든 "그래픽"패키지는 여전히에 있습니다 aptitude.

나도 아니었지만 기본 X 구성 요소를 제거하는 것이 전체 종속성 스택을 가져 오지 않는 것을 알았을 때 약간 혼란 스러웠습니다. tasksel에 대한 더 나은 페이지를 발견했으며 실제로 ncurses 앱을 실행했습니다 ( tasksel옵션 없음). 확신은 지금은 'U'는 metapackages 의미 are't 설치, 당신은 '바탕 화면'을 설치하는 경우, 당신은 그냥 LXDE 버전보다 더 얻을 얻을 것이다 wiki.debian.org/tasksel 그래서 주사위. "xorg"메타 패키지도 apt-cache search metapackage실제로 설치되어 있지 않습니다. 내가 생각하는 라즈 비아 인들을 비난하십시오.
goldilocks

2
나는 누군가를 막론하고 누군가가 더 나은 빛을 비출 수 있도록이 답변을 남겨 둘 것입니다.
goldilocks

5

또는이 Raspbian 최소 이미지를 사용해보십시오 : http://www.linuxsystems.it/raspbian-wheezy-armhf-raspberry-pi-minimal-image/


2
질문에 전혀 대답하지 않습니다. 문제는 X없이 새로운 OS를 설치하는 방법이 아니라 X를 제거하는 방법입니다. 이것은 주석으로 남겨 두거나, 자신의 질문을하거나 유용한 답변을 제공하여 주석을 남기는 데 도움이됩니다. 좋은 링크는 더 적습니다.
Impulss

3

tasksel 정보를 바탕으로, 다른 모든 GUI 관련 패키지를 참조하는 메타 패키지 task-desktop이 있음을 알 수 있습니다. 그래서 그냥

sudo apt-get remove task-desktop

이렇게하면 다른 많은 패키지 (GUI / Desktop 관련)가 제거됩니다.

배경 : task-desktop다음 tasksel 명령을 실행 하여 패키지 이름을 찾을 수 있습니다.

tasksel --list-tasks
tasksel --task-packages desktop

0

또 다른 옵션은 패키지를 몇 개 설치하거나 제거하는 것 이상을 수행하려는 경우 항상 선호하는 적성을 사용하는 것입니다.

을 입력하여 적성을 시작하십시오 sudo aptitude. 적성의 표준 패키지보기에서 최종 목록 항목은 Taskstasksel에 의해 나열된 다양한 옵션을 선택할 수 있습니다. 로 항목을 이동 j, kenter. _강조 표시된 항목에 (밑줄)을 입력하여 제거 할 항목을 표시하십시오. 이것은 조치 만 준비합니다. 작업을 실행하려면을 누릅니다 g.

데비안 매뉴얼에서 적성에 대해 읽으십시오 .


0

이 코드를 입력하십시오 :

sudo apt-get purge desktop-base lightdm lxappearance lxde-common lxde-icon-theme lxinput lxpanel lxpolkit lxrandr lxsession-edit lxshortcut lxtask lxterminal obconf openbox raspberrypi-artwork xarchiver xinit xserver-xorg xserver-xorg-video-fbdev

1
명확히하기 위해 OP의 명령 줄과 귀하의 유일한 차이점 purgeremove?를 대신 사용하는 것 입니다 .
Greenonline
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.