如何删除 Debian 中与 gui 相关的所有软件包?

如何删除 Debian 中与 gui 相关的所有软件包?

我在 Android 上的 chroot 环境中使用 Debian。由于我根本不使用GUI,我认为最好卸载与GUI相关的软件包以释放空间。

  1. 我该如何删除所有 GUI 软件包?
  2. 如果删除软件包后出现任何问题,如何重新安装所有已删除的软件包?(可选)

作为对 @Arpit Agarwal 评论的回应,这里有一个 Android 上的 debian 安装过程的链接。 termux 上的 debian


输出apt purge libx11-6 libwayland-client0

Reading package lists...
Building dependency tree...
Reading state information...
Package 'libwayland-client0' is not installed, so not removed
The following packages were automatically installed and are no longer required:
  aglfn fontconfig fontconfig-config fonts-dejavu-core fonts-droid-fallback
  fonts-liberation fonts-noto-mono ghostscript gnuplot-data gsfonts
  hicolor-icon-theme imagemagick-6-common info java-common krb5-locales
  libaec0 libamd2 libarpack2 libasound2 libasound2-data libauthen-sasl-perl
  libavahi-client3 libavahi-common-data libavahi-common3 libblas-common
  libblas3 libcamd2 libccolamd2 libcholmod3 libcolamd2 libcups2
  libcupsfilters1 libcupsimage2 libcurl3-gnutls libcxsparse3 libdatrie1
  libdjvulibre-text libdjvulibre21 libdrm-amdgpu1 libdrm-freedreno1
  libdrm-nouveau2 libdrm-radeon1 libdrm2 libedit2 libencode-locale-perl
  libfftw3-double3 libfftw3-single3 libfile-listing-perl libflac8
  libfont-afm-perl libfontconfig1 libfreetype6 libgdk-pixbuf2.0-common
  libgfortran3 libgl1-mesa-dri libglapi-mesa libglib2.0-0 libglib2.0-data
  libglpk40 libgraphite2-3 libgs9 libgs9-common libgssapi-krb5-2 libharfbuzz0b
  libhdf5-100 libhtml-form-perl libhtml-format-perl libhtml-parser-perl
  libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl
  libhttp-daemon-perl libhttp-date-perl libhttp-message-perl
  libhttp-negotiate-perl libice6 libijs-0.35 libilmbase12 libio-html-perl
  libio-socket-ssl-perl libjack-jackd2-0 libjbig0 libjbig2dec0 libjpeg62-turbo
  libjxr-tools libjxr0 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0
  liblapack3 liblcms2-2 libldap-2.4-2 libldap-common libllvm3.9 liblqr-1-0
  libltdl7 liblua5.1-0 liblwp-mediatypes-perl liblwp-protocol-https-perl
  libmailtools-perl libmetis5 libmng1 libnet-http-perl libnet-smtp-ssl-perl
  libnet-ssleay-perl libnetpbm10 libnghttp2-14 libnspr4 libnss3 libogg0
  libopenblas-base libopenexr22 libopenjp2-7 libopus0 libosmesa6
  libpango-1.0-0 libpangoft2-1.0-0 libpaper-utils libpaper1 libpcsclite1
  libpixman-1-0 libpng16-16 libportaudio2 libqhull7 libqrupdate1
  libqscintilla2-l10n libqt4-dbus libqt4-network libqt4-xml libqtcore4
  libqtdbus4 librtmp1 libsamplerate0 libsasl2-2 libsasl2-modules
  libsasl2-modules-db libsensors4 libsm6 libsndfile1 libssh2-1
  libsuitesparseconfig4 libsz2 libtext-unidecode-perl libthai-data libthai0
  libtiff5 libtimedate-perl libtxc-dxtn-s2tc libumfpack5 liburi-perl
  libvorbis0a libvorbisenc2 libwebp6 libwww-perl libwww-robotrules-perl
  libx11-data libx11-xcb1 libxau6 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0
  libxcb-present0 libxcb-render0 libxcb-shm0 libxcb-sync1 libxcb1 libxdmcp6
  libxml-libxml-perl libxml-namespacesupport-perl libxml-parser-perl
  libxml-sax-base-perl libxml-sax-expat-perl libxml-sax-perl libxshmfence1
  libzip4 netpbm octave-common octave-info perl-openssl-defaults poppler-data
  psutils qdbus qtchooser qtcore4-l10n shared-mime-info tex-common texinfo ucf
  x11-common xdg-user-dirs
Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
  ca-certificates-java* default-jre-headless* gnuplot-nox* groff* imagemagick*
  imagemagick-6.q16* libaudio2* libcairo2* libfltk-gl1.3* libfltk1.3* libgd3*
  libgdk-pixbuf2.0-0* libgl1-mesa-glx* libgl2ps1* libglu1-mesa*
  libgraphicsmagick++-q16-12* libgraphicsmagick-q16-3* libmagick++-6.q16-7*
  libmagickcore-6.q16-3* libmagickcore-6.q16-3-extra* libmagickwand-6.q16-3*
  liboctave3v5* libpangocairo-1.0-0* libplot2c2* libpstoedit0c2a*
  libqscintilla2-12v5* libqt4-opengl* libqtgui4* libwmf0.2-7* libx11-6*
  libxaw7* libxcursor1* libxdamage1* libxext6* libxfixes3* libxft2* libxi6*
  libxinerama1* libxmu6* libxpm4* libxrender1* libxt6* libxtst6* libxxf86vm1*
  octave* openjdk-8-jre-headless* pstoedit* qt-at-spi*

需要一些关于可以安全删除哪些软件包而不影响 Octave 的建议。否则,如果无法给出某些具体答案,则可以关闭此问题。

答案1

在 Debian 上,要删除所有 GUI 软件包,您可以删除用于连接显示服务器的两个库:

apt purge libx11-6 libwayland-client0

这将删除依赖于这些库的所有包。删除操作将记录在历史记录中/var/log/apt,因此如果您需要恢复删除操作,可以在那里查看。

可能捕获一些包含 CLI 和 GUI 工具的软件包,尽管在大多数(如果不是全部)情况下,这些工具是单独打包的(以便可以拥有一个功能性纯文本系统)。

答案2

Linux 中的 GUI 有两部分:服务器和客户端。 @stephen-kitt 的回答只提到了后者。

为了删除服务器部分,请使用 apt-get purge x11-common libwayland-server0

答案3

其他人已经给出了一些关于应该保留的包裹的提示。所以我主要关注 GUI 包。

以下是删除已安装的 GUI 软件包的一些想法。除非您确实确定,否则不要在生产系统上执行此操作。我建议在一个屏幕会话,您可以在其中向上滚动并保存已删除包的列表。

apt-get purge 'libx11*' x11-common
# "The following packages have unmet dependencies:" ...
# Add the listed packages to your commmand, e.g.:
apt-get purge libx11*' x11-common libxt6 xul-ext-mozvoikko

# Or remove everything that has "x11" in the name:
apt-get purge '*X11*'

似乎有不少不依赖于 x11-common 删除“gnome”依赖项:

apt-get purge $(apt-cache depends gnome | grep Depends | awk '{print $2}')

“task-desktop”元包应包含默认安装的大部分桌面包。所以删除它:

apt-get purge task-desktop

当你完成后,不要忘记:

apt autoremove

同样,这可能会删除您想要保留的一两个软件包,因此请浏览列表并记下您想要重新安装的那些软件包。另外,考虑一下正在运行的程序:如果像 lightdm 这样的登录管理器正在运行,您需要终止其进程。如果网络服务正在管理您的/etc/resolv.conf,您可能无法解析域名(apt-get update不再工作),直到您将名称服务器添加到该文件等。

相关内容