18 November 2011

HowTo: Using Aptitude to Minimize Software Bloat in Debian, Ubuntu

In my recent writeup of Specific Debian Package Installation, I came across an article by Jeff Hoogland about minimizing bloat when installing software with apt-get.  Here is the same thing, but with our friend aptitude:

root-shell#  apt-get install --no-install-recommends packagename
root-shell#  aptitude install --without-recommends packagename

Using the above --without-recommends flag to install the metacity window manager (usually used on GNOME and so my KDE systems don't have it), aptitude wants to install 98 packages when it pulls in the recommended apps and libraries, and their recommended apps and libraries, and so forth:
root-shell#   aptitude install metacity
The following NEW packages will be installed:
 alacarte{a} app-install-data{a} brasero{a} brasero-common{a} capplets-data{a} deskbar-applet{a} desktop-base{a} desktop-file-utils{a}
 evolution-data-server{a} evolution-data-server-common{a} gnome-about{a} gnome-applets{a} gnome-applets-data{a} gnome-control-center{a}
 gnome-desktop-data{a} gnome-dictionary{a} gnome-doc-utils{a} gnome-icon-theme{a} gnome-media{a} gnome-media-common{a} gnome-menus{a}
 gnome-netstatus-applet{a} gnome-panel{a} gnome-panel-data{a} gnome-power-manager{a} gnome-session{a} gnome-session-bin{a} gnome-session-common{a}
 gnome-settings-daemon{a} gnome-system-monitor{a} gnome-user-guide{a} gnome-utils-common{a} gstreamer0.10-plugins-ugly{a} gvfs-backends{a} hwdata{a}
 libbrasero-media0{a} libburn4{a} libcamel1.2-14{a} libcdio-cdda0{a} libcdio-paranoia0{a} libebackend1.2-0{a} libebook1.2-9{a} libecal1.2-7{a}
 libedata-book1.2-2{a} libedata-cal1.2-7{a} libedataserver1.2-13{a} libedataserverui1.2-8{a} libegroupwise1.2-13{a} libexempi3{a} libgdata-google1.2-1{a}
 libgdata1.2-1{a} libgdict-1.0-6{a} libgmime-2.4-2{a} libgnome-desktop-2-17{a} libgnome-media0{a} libgnome-menu2{a} libgnome-window-settings1{a}
 libgnomekbd-common{a} libgnomekbd4{a} libgucharmap7{a} libgweather-common{a} libgweather1{a} libisofs6{a} libmetacity-private0{a}
 libnautilus-extension1{a} libnet-dbus-perl{a} liboil0.3{a} liboobs-1-4{a} libpanel-applet2-0{a} librsvg2-common{a} libsidplay1{a} libslab0a{a}
 libtie-ixhash-perl{a} libtotem-plparser17{a} libtracker-client-0.8-0{a} libunique-1.0-0{a} libupower-glib1{a} libxml-parser-perl{a} libxml-twig-perl{a}
 libxml-xpathengine-perl{a} metacity metacity-common{a} nautilus{a} nautilus-data{a} python-gconf{a} python-gmenu{a} python-gnome2{a} python-gnomeapplet{a}
 python-gnomedesktop{a} python-gnomekeyring{a} python-libxml2{a} python-pyorbit{a} python-wnck{a} system-tools-backends{a} upower{a} xsltproc{a} yelp{a}
 zenity{a}
0 packages upgraded, 98 newly installed, 0 to remove and 23 not upgraded.
Need to get 126 MB of archives. After unpacking 330 MB will be used.
Do you want to continue? [Y/n/?] n
Abort.
Using --without-recommends, aptitude only pulls in 3 packages to install metacity, and the chain of dependencies has shrunk considerably.  Much better:
root-shell#  aptitude install --without-recommends metacity
The following NEW packages will be installed:
 libmetacity-private0{a} metacity metacity-common{a} zenity{a}
The following packages are RECOMMENDED but will NOT be installed:
 gnome-session lxsession openbox xfce4-session
0 packages upgraded, 4 newly installed, 0 to remove and 23 not upgraded.
Need to get 6,107 kB of archives. After unpacking 17.9 MB will be used.
Do you want to continue? [Y/n/?] n
Abort.
root-shell#  

Thank you Jeff Hoogland for the insight into apt-get and the inspiration for this HowTo!

No comments: