on a new jessie system, I have installed a minimal X11 that required 71MB of disk space, but after some investigation I have stripped down the size to 25MB, saving the 64% of the needed disk space
further dependency tuning can saves a bunch of MB more and allows a cleaner installation, based on the needs of the end user, that is simpler to audit and debug too * DETAILED DESCRIPTION that system has an old radeon (r100), so to install xserver-xorg they are needed these packages (72677KB): libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libdrm2 libedit2 libegl1-mesa libelf1 libepoxy0 libevdev2 libexpat1 libfontenc1 libgbm1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libice6 libllvm3.5 libmtdev1 libpciaccess0 libpixman-1-0 libsm6 libwayland-client0 libwayland-server0 libx11-6 libx11-data libx11-xcb1 libxau6 libxaw7 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-render0 libxcb-shape0 libxcb-sync1 libxcb-xfixes0 libxcb1 libxdamage1 libxdmcp6 libxext6 libxfixes3 libxfont1 libxkbfile1 libxmu6 libxpm4 libxshmfence1 libxt6 libxxf86vm1 x11-common x11-xkb-utils xserver-common xserver-xorg-core xserver-xorg-input-evdev xserver-xorg-video-radeon the biggest package is libllvm3.5 that is 32MB, so I started to check its usage in the installed packages, concluding that it is used by the gallium infrastructure, that is not available on my hardware to get around of the llvm package I modified (with dpkg-deb) the binary packages libgl1-mesa-dri and libgbm1, splitting them in classic and gallium flavors: - libgl1-mesa-dri-classic contains the mega driver (i915 i965 nouveaux_vieux radeon r200), has a size of 6MB and does not depends on libelf1 nor libllvm3.5 - libgl1-mesa-dri-gallium contains the gallium driver (kms_swrast nouveau r300 r600 radeonsi swrast vmwgfx), has a size of 8MB and does not depends on libdrm-intel1 - libgbm1 contains only the library, has a size of 100KB and does not depends on libdrm-nouveau2, libdrm-radeon1, libelf1, libgcc1, libllvm3.5 nor libstdc++6 - libgbm1-gallium contains only gbm_gallium_drm.so and has a size of 4MB both libgl1-mesa-dri-classic and libgl1-mesa-dri-gallium provides libgl1-mesa-dri, where instead libgbm1-gallium depends on libgbm1 with this setup I removed libedit2, libelf1 and libllvm3.5 (33787KB) and the reduced size of the modified packages saved 12931KB more, totalizing 46718KB of saved disk space, the 64% of the standard setup I obviously tested only the "classic" setup, as it is the only supported one on that hardware * AFFECTED USERS the classic drivers cover all the intel hardware, old radeon and nvidia hardware, where the gallium covers only new radeon and nvidia hardware and the software rendering (no 3d hardware), but many users prefer the proprietary drivers instead (nearly all the nvidia users) anyway all the non gallium users can take advantage of this setup, even if only a minority cares about a finer dependency selection, as based on popcon they seems to be 10% circa of the total X11 users: https://qa.debian.org/popcon-graph.php?packages=xserver-xorg+xserver-xorg-video-all+xserver-xorg-video-intel+xserver-xorg-video-radeon+xserver-xorg-video-nouveau+&show_installed=on&want_legend=on&from_date=2014-01-01&to_date=&hlght_date=&date_fmt=%25Y-%25m&beenhere=1 the Debian mirrors bandwidth will be affected too, as some of the users will not download and never upgrade the unneeded packages * FURTHER CHANGES users that does not need opengl (no games and no fancy 3d desktops) or that does not have the hardware (vesa and fbdev for example) can take advantage of a further split in the xserver-xorg-core package, as it depends on libgl for the glx extension and libepoxy/libgbm/libegl for the glamoregl module we can make a new package for the glx and another for glamoregl or we can adopt the wheezy way to do dependencies handling, that recommended the libgl1-mesa-dri without an hard dependency (and we can do the same thing with epoxy/gbm/egl) anyway these changes will allow again to install X11 without needing opengl nor egl (and thus the big llvm package) further, egl seems to be not available with non-gallium hardware as egl_dri2 is not included in libegl1-mesa-drivers, so egl and glamoregl is completely unusable on that hardware * ALTERNATIVE SOLUTIONS if the package split is not comfortable from the developer view or the end user view, the dependencies of the included modules (dri drivers, gbm modules, x11 extensions and modules) can be downgraded from depends to recommended, conforming to the policy: - Depends: This declares an absolute dependency. A package will not be configured unless all of the packages listed in its Depends field have been correctly configured - Recommends: This should list packages that would be found together with this one in all but unusual installations https://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps the users will not be affected by the change if they not explicitly want it, as apt automatically install recommended packages since 2007: https://lists.debian.org/debian-devel-announce/2007/08/msg00000.html * CONCLUSION Debian allows a fine grained package selection, with more than 58000 binary pakages in jessie (10K more than wheezy), many of them are very small, since in the main archive area: - 50% of the packages are under 248KB of installed size - 75% are under 1MB - 95% are under 10MB this wonderful freedom given to the user is somewhat degraded by big dependencies like that, which double the required disk space to install one of the most used software (xserver-xorg is present on the 58% of all debian installations) I have not yet filed bug reports, as I do not want to flood you with similar requests all to one maintainer and moreover I would like to discuss with you and help implementing these changes for jessie or jessie+1, so just tell me what to do ciao! -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: https://lists.debian.org/20150220211143.1fc87eba@enterprise

