ヘッドレスサーバーとして実行しているときにXサーバーとデスクトップマネージャーをアンインストールする方法


88

私は、Raspberry Piをsshに使用できるヘッドレスサーバーとして使用しています。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または「パイを焦がすだけ」

sudo apt-get remove --auto-remove --purge 'libx11-.*'
sudo apt-get autoremove --purge

apt-get autoremove --purge孤児がなくなるまで繰り返します)

さらなる説明

パッケージfoo が別のパッケージlibfooに依存している場合、libfooパッケージを削除すると、依存関係(foo)も削除されます。fooが持っているので依存指定する行を調べてlibfooを、今libfooが削除された場合のfooを残すように壊れてしまいます。逆は真ではありません:削除fooはしません削除を調べてlibfooを自動的に。別のパッケージxfooができる、また、それがインストールされた場合やすい追跡するが(それを削除しないようにやすく、調べてlibfoo依存のみインストールの副作用としてFOO 他の人がまだ依存していない限り、あなたがそれを求めた場合、それを自動削除することを提案します)

メタパッケージが依存していることと同じ方法で、他のパッケージのセットにfooが依存を調べてlibfooので、あなたがメタパッケージを削除するとき、少し他は一般的に削除されます。たとえば、xtermに依存する 2つのメタパッケージ(lxsessionとxfsession)が存在する可能性がありますが、xtermはlxsessionまたはxfsessionなしでは壊れないため、一方または両方アンインストールしても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がインストールされますデスクトップ環境のインストールの副作用として)。2番目のコマンドは、孤立するものがなくなるまで後続の孤立を削除します。後でこの手順を実行する場合、またはまったく実行しない場合は「--auto-remove」を削除するか、GUIのクリーンアップ後にパッケージを手動で追加し直してください。

--dry-runオプションを削除して、削除する予定のないパッケージが削除されないことを確認した実際に操作を実行します。

副作用をきれいにしてパージし、必要に応じて追加し直すことを好みます。また、私は先に進んで自分のpiでこれをテストし、非常に質素だが機能的なサーバーで再起動しました。:)

削除が何かをインストールするのはなぜですか?

上記の戦略は上記の問題を解決しますが、なぜ削除操作がパッケージのインストールをもたらすのかという好奇心がまだあります。

すべてのパッケージマネージャーの中心には、ある種の充足可能性ソルバーがあります。パッケージマネージャーにパッケージのインストール、パッケージの削除、またはパッケージのアップグレードを指示する場合、実際に求めているのは、使用可能なパッケージのセットが与えられた場合にソフトウェアインストールの次の望ましい状態を解決することです。このソリューションに、追加のパッケージのインストール(依存関係)、既存のパッケージの削除(競合、破損)、特定のパッケージのダウングレード/アップグレード(互換性レベル)、またはそれらの組み合わせが含まれます。そのため、ソルバーが、他のパッケージを削除するためにいくつかのパッケージをインストールする必要があると判断するのは少し直感的ではありませんが、それは完全に理にかなっています。これは、パッケージマネージャーが解決する厄介な依存関係管理の問題です。

具体例:Javaアプリケーションのセットがすでにインストールされている場合、それらはすべて、現在openjdk-7-jreであるjava互換ランタイムに依存しています。その後、宣言し、新たなJavaツールのインストールのために解決するために、パッケージマネージャを尋ねる紛争OpenJDKの-7-JREをしかし働くオラクル-7-JRE(両方のパッケージは、包括的に提供するJava-7-ランタイム)。ソルバーは、提案させていただきます除去OpenJDKの-7-JREをして、インストール神託-javaの-7-JRE既存のパッケージを壊さずに、新しいパッケージをインストールするという望ましい状態の解決策として。

この特定のケースでは、xtermx-terminal-emulatorxtermlxterminal、およびatermすべてがx-terminal-emulatorを提供する)と呼ばれる仮想依存関係を提供するパッケージであるためlxterminalを削除する際に(の一部として) LXDE)を除去し、ソルバは、既存のインストールパッケージ(見出さトランス必須可能な例としての)いくつかの種類のX端末エミュレータを必要とする(ので、ソルバーはxtermのをインストールすることを選択し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です)。clustersshのパッケージが依存するのxterm を明示的、及び代替することができません。これは、xtermを必要とするパッケージの短いリストです。

デボルファンはどうですか?

追跡孤児の機能がに編入された2010年の「自動的削除」機能(Debianのバグを経由してapt-getを582791 deborphanレンダリング)ほとんど冗長と基本的に廃止されました。deborphanやそのような他のソリューションとは異なり、apt-get は明示的にインストールされたパッケージと、明示的にインストールされたパッケージの副作用または依存関係としてインストールされたパッケージを直接追跡します。たとえば、管理者がfooをインストールした場合、libfoo 副作用としてインストールされ、apt-get autoremove 実際、fooの削除時にautoremove(または--auto-remove)が指定されている場合はlibfooを削除します。

デボルファンがとるアプローチは、推測の集まりです。場合:たとえば、推測に依存していないインストールライブラリは孤児でなければならないことを調べてlibfooがインストールされていますが、どちらもFOOxfooが deborphanが、それは孤児でなければならないことを決定することができる、です。ここでの失敗モードの1つは、ライブラリが提供するツール(libxml2-utilsに再パッケージ化される前のxmllintのlibxml2)専用にライブラリがインストールされたり、単に開発目的で使用できることです。そのようなパッケージ孤児ではありません。さらに、deborphanは図書館に焦点を当て、それは多くのミス非ライブラリ孤児のaptトラック(廃止パッケージ対孤立したパッケージを)


2
Brilliantは私に感謝しました。munin何らかの理由で削除されましたが、後で簡単に元に戻すことができました。

4
それを焦がす!'libx11-.*'シェルがグロブするのを防ぐために引用しなければなりませんでした。

1
@Maxx、素晴らしい答えですが、あなたのすべてのシナリオで、彼がapt-get remove望んでいたことinstall xtermと他の2つを実行したときにそれがどのようであるかを説明しませんでした。私もこれを経験しており、解決できませんでした。
マディバード

2
apt-get upgrade、dist-upgradeの後、クリーンで拡張されていないraspbianインストール:rootfs ... 94% /。apt-get remove --auto-remove --purge libx11-。*の後:rootfs ... 51% /すばらしい回答、ありがとうございます!
ダニエルF

2
そして、apt-getは自動的削除後:rootfs ... 41% /...
ダニエル・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孤立したパッケージを削除する最初の行がインストールされます。

2行目は、X11システムLXDE、Samba(Windowsファイル共有)、フォント、Gnome、およびRaspberry Piのデスクトップ環境に関連するその他のもののコアパッケージを削除します。

3行目は、deborphanによって検出された孤立パッケージを削除します。

4行目は、不要なパッケージを削除します。

5行目はパッケージキャッシュをクリアします。


3
Raspberry Pi Stack Exchangeへようこそ!技術的にはこの質問に答えることができますが、これがどのように機能し、何をしているのかについての説明を含めることが望ましいでしょう。
RPiAwesomeness 14

1
新しいRaspbianインストールでこれらのコマンドを実行すると、4GBのSDカードでのギガバイト未満の空きから2.5GBの空きになりました。少なくともこれは正解です。
ロブ

2
受け入れられた答えは非常に詳細ですが、実際にはOPの問題を達成するためのリストを提供していません。この答えは
骨の折れる

sambaをアンインストールする理由 これはGUIアプリケーションではありません。ネットワーキングに必要な場合があります。
ドッグウェザー

9

1 /。私が行ったすべてのデスクトップを削除するには(コーヒーポットを作成します。しばらく時間がかかります)...
apt-get remove --auto-remove --purge libx11-.*

2 /。その後、孤立したファイルを取り除くためにdeborphanをインストールしました...
sudo apt-get install deborphan

孤立したものを確認するには、これを実行してください...
deborphan -sz

3 /。その後、すべての孤立ファイルを削除しました...
sudo apt-get remove --purge $(deborphan)

最後に、これを行って、孤立していない不要なパッケージを削除します...
sudo apt-get autoremove

最終結果:ヘッドレスでHeadのようにきれいに


2
apt-get remove --dry-run絶対に何もしませんが、画面にメッセージを出力します。
レニック14年

7

持ってここを見てが、約部分にスクロールダウンtasksel

tasksel --list-taskswifi ssh経由でpiで実行すると、(約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あなたがしたいことをする必要があります[コメントを参照]。manページは少し簡潔で神秘的です。おそらく、taskselは主にdebianのメンテナーを対象としているためでしょう。これが機能する場合はお知らせください;)


おかげで、聞いたことはありませんでしたtaskselが、かなりの量のUbuntuの経験があります。残念ながら私はこれを試しましたが、remove desktopコマンドを実行するのに時間がかかりましたが、すべての「グラフィカル」パッケージはまだそこにありますaptitude
1

私もどちらもしませんでしたが、いくつかの基本的なXコンポーネントを削除しても依存スタック全体がプルされないことに気付いたとき、少し混乱しました。taskselのより良いページを見つけ、実際にncursesアプリを起動しました(taskselオプションなし)。確かに、「u」はメタパッケージがインストールされていないことを意味します。「desktop」をインストールすると、lxdeバージョンwiki.debian.org/taskselだけでなく、サイコロもなくなります。「xorg」メタパッケージapt-cache search metapackageも実際にはインストールされていません。私が推測するラズビアンを責めなさい。
goldilocks

2
誰かが行き止まりにならないように、または誰かがより良い光を当てられるように、この答えを残しておきます。
goldilocks


3

tasksel情報に基づいて、他のすべてのGUI関連パッケージを参照するメタパッケージタスクデスクトップがあることを見つけることができます。これだけ

sudo apt-get remove task-desktop

これにより、他の多くのパッケージが削除されます(GUI /デスクトップ関連)。

背景:パッケージの名前は、task-desktop次のtaskselコマンドを実行することで確認できます。

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

0

別のオプションは、いくつかのパッケージを単にインストールまたは削除する以上のことを行う場合は、常に好むaptitudeを使用することです。

を入力して、ルートとしてaptitudeを起動しますsudo aptitude。aptitudeの標準パッケージビューでは、最後のリストエントリがありTasks、taskselによってリストされたさまざまなオプションを選択できます。で項目をナビゲートjkおよびenter_強調表示されたアイテムに(アンダースコア)を入力して、削除するアイテムをマークします。これはアクションのみを準備します。アクションを実行するにはを押しgます。

debianマニュアルのaptitudeを読んでください。


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のコマンドラインとあなたのコマンドラインの唯一の違いは、purgeen lieuの使用removeですか?
Greenonline
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.