How can I remove all packages related to gui in Debian?
Solution 1
On Debian, to remove all GUI packages, you can remove the two libraries used to connect to display servers:
apt purge libx11-6 libwayland-client0
This will remove all packages depending on these libraries. The removals will be logged in the history logs in /var/log/apt
, so you can look there if you need to revert a removal.
This might catch some packages which contain both CLI and GUI tools, although in most, if not all, cases those are packaged separately (so that it is possible to have a functional text-only system).
Solution 2
Others have already given some tips about that one package that should stay. So I'm focusing on the GUI packages.
Here are some ideas on removing installed GUI packages. Don't do this on a productive system unless you're really sure. I recommend running all of these commands in a screen session, where you could scroll up and save the list of removed packages.
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*'
There seem to be quite a few that don't depend on x11-common Remove "gnome" dependencies:
apt-get purge $(apt-cache depends gnome | grep Depends | awk '{print $2}')
The "task-desktop" metapackage should contain most of the desktop packages that were installed by default. So remove it:
apt-get purge task-desktop
And when you're done, don't forget:
apt autoremove
Again, this might remove a package or two that you would like to keep, so go through the list and take note of those packages that you want to reinstall.
Also, think about running programs: If a login manager like lightdm is running, you need to kill its processes. If a network service was managing your /etc/resolv.conf
, you might not be able to resolve domain names (apt-get update
won't work anymore) until you add a nameserver to that file and so on.
Solution 3
GUI in linux has two parts: server and client. @stephen-kitt's answer mentions only latter.
In order to remove server part, use
apt-get purge x11-common libwayland-server0
Related videos on Youtube
Abinash Dash
Updated on September 18, 2022Comments
-
Abinash Dash over 1 year
I'm using Debian in a chroot environment on my android. As I don't use GUI at all, I think it's better to uninstall packages related to GUI to free up space.
- What can I do to remove all GUI packages?
- How can I reinstall all those removed packages, if anything breaks after the package removal?(optional)
As a response to @Arpit Agarwal's comment, here's a link to debian installation procedure on android. debian on termux
output ofapt 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*
Need some suggestions regarding which packages can be removed safely without affecting Octave. Otherwise this question can be closed , if the some specific answer can't be given.
-
Arpit Agarwal over 6 yearsExplain how are using Debian on your Android ?
-
Abinash Dash over 6 yearsis it necessary? anyway I'm using 'termux' and chroot environment to use debian.
-
Abinash Dash over 6 yearsHere's a link to the complete procedure for installation github.com/sp4rkie/debian-on-termux
-
Arpit Agarwal over 6 yearsOn the debian page of debootstrap, it says it is debian base system and it is only meant to be installed on a folder or partition. So, it won't have GUI packages.
-
Abinash Dash over 6 yearsBut installing packages like octave automatically installs GUI packages. I was just curious about how to remove those auto-installed packages to free up some space.
-
Arpit Agarwal over 6 yearsThose packages are just installed for the sake of dependencies completion but complete set of packages for GUI is not going to be installed anyway.
-
Arpit Agarwal over 6 yearsGUI in linux means some Desktop Environment should be installed. In the output of purging x11 and wayland libraries there is no sign that any DE is installed. So, don't worry you are using minimalist debian.
-
Abinash Dash over 6 yearsI tried running
apt -s purge libx11-6 libwayland-client0
. I noticed it's going to remove some packages I use frequently(like octave, in fact octave is the main reason I've installed debian on my android). Then do i have to reinstall octave after running the purge code ? Or Is there any other way so that I don't have to reinstall octave after purging? -
Stephen Kitt over 6 yearsThe simplest approach is to reinstall
octave
after purging. If you really want to avoid that, you should look at the list of all packages which would be removed byapt purge libx11-6
, and remove those manually... -
Abinash Dash over 6 yearsThis solution also lists a frequently used package
octave
for purging (please check my comment on @Stephen kitt's answer). Is there any way to remove GUI packages without affecting packages like octave? reinstalling octave will take a long time. That's why I'm trying to avoid it. If there's no other way, I'll reinstall octave anyway. -
Abinash Dash over 6 yearsHow will i know which packages are octave's dependencies and filter those not for purging?
-
Stephen Kitt over 6 yearsThat’s why I said it would be simpler to reinstall
octave
after purging...apt-rdepends octave
will list all ofoctave
’s dependencies (recursively). -
Abinash Dash over 6 yearsOkay... i think reinstalling octave is far more easier than dependency checks. I'll stick to it though I've to install whole
octave
package again(downloads around 100mb and takes around half an hour for complete installation) :D -
Abinash Dash over 6 yearsIs it necessary to follow @WhiteWind 's answer? Running
apt purge libx11-6 libwayland-client0
purges x11-common and libwayland-server0 automatically... -
Stephen Kitt over 6 yearsNo, it’s not necessary to follow WhiteWind’s answer — the display servers end up depending on the client libraries too, so removing the latter removes the display servers.
-
Stephen Kitt over 6 yearsI only mentioned the client libraries because that’s all that’s needed — the display servers depend on those libraries too, so they get removed as well.
-
WhiteWind over 6 yearsI haven't tried it myself, but I see that package x11-common doesn't depend on libx11-6, so there may be other X-related packages that don't depend on libx11-6
-
WhiteWind over 6 yearsRegarding This might catch some packages : php7.0-gd depends on libx11-6, although it's purely server package
-
Abinash Dash over 6 yearsI tried purging GUI packages and reinstalling Octave. But i ended up finding all those packages(that i wanted to remove) again in my installed package list. Then i did some research on Octave and found out this ocatve nox. So I didn't bother compiling Octave myself and removed some packages manually(like adwaita-icon-theme,hicolor-icon-theme etc.) instead of
apt purge libx11-6 libwayland-client0
to free up space. It would be a great help, if someone could suggest what packages can be removed safely(just like icon-themes).