From Mageia wiki
Jump to: navigation, search


Drakconf multiflag.png
Other languages
English ;

Introduction

This page documents the evolution of the minimal basesystem from the latest Mandriva release up to the latest Mageia release. The minimal basesystem is created by installing both basesystem and urpmi packages.

The metrics of basesystem-minimal could be interesting to add in order to measure the bloat of kernel (+firmwares & the like).

Evolution of the size of the minimal basesystem for x86_64

When there's two sizes (eg: 410Mb / 463Mb), the first size is the one reported by urpmi & and the second one is the one reported by du -sh. Overall, there's a ~12-13% difference on the checked distros (but for mga8 where the difference was slighly smaller at 11% without recommends).
The / ?? text indicates that the actual installation wasn't actually performed and thus du -sh was never run.

As we can see:

  • the minimal install w/o recommends slightly increase over time
  • the minimal install with recommends enlarge quite a lot over time. Action must be taken in order to break too generous deps

Usually the newly added/removed packages are only listed for the without recommends case. Sometimes, it's mentioned for the recommends case using recommends/suggests:.

Evolution of the size of the minimal basesystem
Distro basesystem-minimal basesystem + urpmi without recommended packages basesystem + urpmi + recommends Comments
mga9/cauldron 213Mb 410Mb / 463Mb
347Mb / 398Mb
1.4Gb / 1.6Gb
1.3Gb / 1.4Gb
(including 871Mb in /lib/firmware/)

Without recommends, basesystem was improved. Sg bad happens to recommends
VS mga8:
+ bc ifmetric libselinux mtools(grub2) pkgconf(systemd)
- gettext-base net-tools perl python3 xz zstd

mga8 337Mb 485Mb / 547Mb 679Mb / 756Mb VS mga7: we loose a cople packages: - diffutils info-install
mga7 318Mb 463Mb / 523Mb 622Mb / 698Mb VS mga6:

+console-setup crypto-policies ipcalc p11-kit-trust
-dmsetup elfutils lockdev multiarch-utils nss samba-client

mga6 267Mb 463Mb / 521Mb 504Mb / 565Mb VS mga5:

+ elfutils mageia-repos python traceroute
- binutils cifs-utils drakx-kbd-mouse-x11-text keyutils update-alternatives

mga5 251Mb 441Mb / ?? 476Mb / ?? Sg bad happened in mga5 vs 4

VS mga4:
+ cifs-utils icu53-data keyutils nmap samba-client
- alsa-utils aumix-text mingetty pciutils prcsys
(suggests are renamed recommends)

mga4 205Mb 296Mb / ?? 399Mb / ?? Sg bad happened in mga4 vs 3

VS mga3: +drakx-kbd-mouse-x11-text (in place of libdrakx-kbd-mouse-x11), vim-minimal

mga3 195Mb 278Mb / ?? 290Mb / ?? VS mga2:

+ grub2
- acl x11 stuff

mga2 187Mb 275Mb / ?? 290Mb / ?? improved over mga1 regarding suggests!

VS mga2:
+acl alsa-utils binutils bootsplash bridge-utils carl9170-firmware dash desktop-file-utils dracut, fontconfig hicolor-icon-theme kmod lockdev mageia-theme-Default menu-messages mkfontdir mkfontscale nss-myhostname pango pciutils plymouth thai-data x11-font-* xprop xset
-drakx-kbd-mouse-x11 drakx-net-text drakxtools-curses gamin glib2.0-common gnupg iw kpartx mkinitrd module-init-tools monitor-edid nash nash

mga1 197Mb 266Mb / ?? 588Mb / ?? VS mdv2010.2: bzip2 curl chkconfig dbus dmsetup drakx-net-text nash

Suggests adds:
acl alsa-plugins-pulse-config aria2 atk1.0-common avahi canberra-gtk ccp comgt consolekit cryptsetup dbus desktop-file-utils dconf dirmngr dosfstools fontconfig fuse GConf2 gdk-pixbuf2.0 gnome-icon-theme gnome-disk-utility gnome-keyring gnupg2 gsettings-desktop-schemas gtk+2.0 gvfs hal hicolor-icon-theme ia_ora-gnome kernel-firmware-extra lib64alsa2 lib64alsa-plugins-pulseaudio mdadm mkfontdir mkfontscale mtools notification-daemon nss_mdns ntfs-3g ntfsprogs openssl ORBit2 pango pciutils pinentry-gtk2 pkgconfig policykit polkit-gnome python rarian seahorse sgml-common sound-theme-freedesktop thai-data udisks usb_modeswitch usbutils wireless-tools x11-font-daewoo-misc x11-font-isas-misc x11-font-jis-misc xdg-user-dirs-gtk xfsprogs

Mandriva:
mdv2010.2 158Mb 250Mb / ?? 419Mb / ?? same as mdv2010.1, just include updates
mdv2010.1 158Mb 250Mb / ?? 419Mb / ? sg bad happened in mdv2010.1 vs 2010.0:

VS 2010.0: gamin

mdv2010.0 176Mb 238Mb / ?? 251Mb / ?? VS 2009.1: crda, drakx-kbd-mouse-x11 drakx-net-text drakxtools-curses iw kpartx monitor-edid perl wireless-regdb
mdv2009.1 142Mb 180Mb / ?? 218Mb / ?? suggests: crda, perl, exra firmware, wireless-regdb

VS 2009.0: +cronie, libdb; libs, nss, xz

mdv2009.0 125Mb 159Mb / ?? 191Mb / ?? VS 2008.0: + anacron, aria2 perl with suggests. Vs 2008.0: firmware, nss{,_tcb}, genhdlist2, policykit, libs(lzma/parted/polkit)
mdv2008.0 n/a 135Mb / ?? n/a
mdv2007.1 n/a 129Mb / ?? n/a improved
mdv2007.0 n/a 176Mb / ?? n/a sg bad happened:

+dmsetup, ethtool, glib2.0-common, openssl, perl, prcsys, rootcerts
-rpmtools, wireless-tools

mdv2006.0 n/a 122Mb / ?? n/a

Notes

  • the main difference between basesystem-minimal & basesystem is that the former pulls the kernel & the grub2 boot loader for 83Mb.
    Adding urpmi to basesystem adds 7Mb
  • basesystem-minimal didn't exist prior to mdv2009.0
  • suggest didn't exist before mdv2009.0

Fixed in cauldron

The following deps were fixed in Cauldron:

  • bootloader-utils -> drakxtools-backend -> samba-client (for lsnetdrake, see mga#12579)
  • perl-base -> perl
  • systemd -> pkgconfig
  • shared-mime-info -> pkgconfig
  • lvm2 -> glibc-devel & the like (lib64blkid-devel, lib64udev-devel, lib64uuid-devel & lib64xcrypt-devel)
  • mtools -> libx11 (for /usr/bin/floppyd which is not enabled in Fedora or in OpenMandriva. In OpenSuse & Debian, it's enabled but packaged as a subpkg. Later Suse disabled it)
  • network-scripts -> ipcalc -> geoip -> geoip-database
  • rpm -> sqlite -> libicu -> icu-data
  • xorrisso -> tcl/tk -> fontconfig

ToDo: what remains to be fixed

The recommended packages bloat quite a lot the minimal install:

  • big ones
    • basesystem -> dnf -> python3 + python3-dnf -> python3-libmodulemd -> pygobject -> python3-gobject-base -> gobject-introspection
      dnf pulls 90Mo with recommended packages (80Mb without)
    • requested radeon-firmware, ralink-firmware, rtlwifi-firmware, iwlwifi-firmware recommended by kernel-firmware-nonfree
      Lessen this in favor of rpmsrate & x11-driver-video-ati?
  • small ones
    • grub2 -> os-prober -> btrfs-progs
    • lvm2 -> thin-provisioning-tools -> expat
    • gnupg2 -> pinentry

Code used to collect the data

Here's the commands used in order to collect the abova data:

mkdir RU for i in cauldron 8 7; do sudo rm -fr RU/*; LOG=mga$i-basesystem+urpm; sudo urpmi.addmedia --urpmi-root RU --distrib http://ftp.free.fr/mirrors/mageia.org/distrib/${i}/x86_64/; sudo eatmydata urpmi --urpmi-root RU --no-recommends urpmi basesystem 2>&1 |tee -a $LOG; sudo du -sh RU|tee ${LOG}; LOG=${LOG}+recommends; sudo eatmydata urpmi --urpmi-root RU urpmi basesystem 2>&1 |tee -a mga$i-basesystem+urpmi+recommend; udo du -sh RU|tee ${LOG};done diff -u gmga8-basesystem+urpmi LOG4.basesystem+urpmi>mga8-mga9.diff vim mga8-mga9.diff # Mageia archive: # Just press <enter> until it asks to actually install the pkg set: (no "du" this time) for i in 6 5 4 3 2 1; do sudo rm -fr RU/*; sudo urpmi.addmedia --urpmi-root RU --distrib http://distrib-coffee.ipsl.jussieu.fr/pub/linux/Mageia-archive/distrib/${i}/x86_64/; sudo eatmydata urpmi --urpmi-root RU urpmi basesystem 2>&1 |tee -a mga$i-basesystem+urpmi+recommends; sudo eatmydata urpmi --urpmi-root RU urpmi basesystem 2>&1 |tee -a gmga$i-basesystem+urpmi+recommend;done # BUG: it didn't worked for mdv2011, but it was after the fork, so we don't care. Might be due to rpm5 and all the regressions introduced along for i in 2011 2010.{2,1,0} 2009.{1,0}; do sudo rm -fr RU/*; sudo urpmi.addmedia --urpmi-root RU --distrib http://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/${i}/x86_64/; sudo eatmydata urpmi --urpmi-root RU --no-recommends urpmi basesystem 2>&1 |tee -a mdv$i-basesystem+urpmi; sudo eatmydata urpmi --urpmi-root RU urpmi basesystem 2>&1 |tee -a gmdv$i-basesystem+urpmi+recommend;done # No suggests in earlier versions: for i in 2008.0 2007.{1,0} 2006.0; do sudo rm -fr RU/*; sudo urpmi.addmedia --urpmi-root RU --distrib http://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/${i}/x86_64/; sudo eatmydata urpmi --urpmi-root RU --no-recommends urpmi basesystem 2>&1 |tee -a mdv$i-basesystem+urpmi; done

Then simple diff commands were used to compare packages list (either sorting urpmi output or comparing rpm -qa from chroots)

If one wants to understand what bloats the minimal install when new pkgs appears, just add --debug option to above urpmi calls.

Commands for getting data about basesystem-minimal:

for i in cauldron 8 7; do sudo rm -fr RU/*; LOG=mga$i-basesystem-minimal; sudo urpmi.addmedia --urpmi-root RU --distrib http://ftp.free.fr/mirrors/mageia.org/distrib/${i}/x86_64/; sudo eatmydata urpmi --urpmi-root RU --no-recommends urpmi basesystem-minimal 2>&1 |tee $LOG;done for i in 6 5 4 3 2 1; do sudo rm -fr RU/*; sudo urpmi.addmedia --urpmi-root RU --distrib http://distrib-coffee.ipsl.jussieu.fr/pub/linux/Mageia-archive/distrib/${i}/x86_64/; LOG=mga$i-basesystem-minimal; sudo eatmydata urpmi --urpmi-root RU --no-recommends urpmi basesystem-minimal 2>&1 |tee $LOG;done # basesystem-minimal didn't exist before 2009.0: for i in 2010.{2,1,0} 200{9,7}.{1,0}; do sudo rm -fr RU/*; sudo urpmi.addmedia --urpmi-root RU --distrib http://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/${i}/x86_64/; LOG=mdv$i-basesystem-minimal; sudo eatmydata urpmi --urpmi-root RU --no-recommends urpmi basesystem-minimal 2>&1 |tee $LOG;done