Comparaison rudimentaire de distribution Linux

Bonjour,

Juger de la qualité d’une distribution Linux est éminemment subjectif. On peut cependant se faire une idée de la qualité technique en testant la cohérence dans les méta-données associées aux différents paquets.
On peut aussi apprécier l’ergonomie de l’installeur. (1)
J’ai aidé un collègue du Département Recherche à installer une xubuntu 14.04 sur sa nouvelle station de travail. J’avais déjà été irrité de devoir utiliser une iso netinstall ubuntu-serveur uniquement pour avoir une option expert et que cette option expert ne permettait même pas de faire le gros de l’installation via ssh et de plus on se retrouve avec un choix de paquets assez discutable.

fpetitjean@drstage01:~$ aptitude why brltty
i   brltty-x11 Depends brltty (= 5.0-2ubuntu2)
fpetitjean@drstage01:~$ aptitude why brltty-x11
i   xubuntu-desktop Recommends brltty-x11
fpetitjean@drstage01:~$

J’ai été aussi énervé par la présence de zeitgeist, et avec ma chance habituelle je suis tombé sur un bug factuel dans le paquet gedit d’ubuntu.
Le message sur le forum d’ubuntu problèmes généraux a été déplacé d’office dans la section café https://forum.ubuntu-fr.org/viewtopic.php?id=1992882

Voici une ébauche de script qui permet d’avoir les dépendances réelles d’un binaire

#!/bin/bash

# comparaison rudimentaire de distribution Linux

distrib=$(lsb_release --short --id | sed -e 's/ /_/')
version=$(lsb_release --short -r)
dvers=${distrib}_${version}

pgm=/usr/bin/gedit

# script supposé $etre dans $HOME/compar
parent=$(dirname $0)

fname=ldd_gedit

OUT=${parent}/"${fname}.${dvers}"

echo "distribution ${distrib} version ${version}" # >> $OUT
nlibs=$(ldd $pgm | wc -l)
echo "binaire ${pgm} Nombre libs ${nlibs}"  #>> $OUT

ldd $pgm | sed -e 's/^  //' | sort | cut --fields=1 --delimiter=' '  >> $OUT

Ce qui donne

fpetitjean@drlouis:~/dcompar$ wc ldd_gedit.*
  49   49  781 ldd_gedit.CentOS_6.6
  63   63 1036 ldd_gedit.Debian_8.5
  68   68 1089 ldd_gedit.SUSE_LINUX_12
  62   62 1024 ldd_gedit.Ubuntu_14.04

Et la comparaison

fpetitjean@drlouis:~/dcompar$ diff --side-by-side --width=80 ldd_gedit.Debian_8.5 ldd_gedit.SUSE_LINUX_12
/lib64/ld-linux-x86-64.so.2             /lib64/ld-linux-x86-64.so.2
libatk-1.0.so.0                         libatk-1.0.so.0
libatk-bridge-2.0.so.0                  libatk-bridge-2.0.so.0
libatspi.so.0                           libatspi.so.0
                                      > libbz2.so.1
libcairo-gobject.so.2                   libcairo-gobject.so.2
libcairo.so.2                           libcairo.so.2
libc.so.6                               libc.so.6
libdatrie.so.1                        <
libdbus-1.so.3                          libdbus-1.so.3
libdl.so.2                              libdl.so.2
                                      > libdrm.so.2
                                      > libEGL.so.1
libexpat.so.1                           libexpat.so.1
libffi.so.6                           | libffi.so.4
libfontconfig.so.1                      libfontconfig.so.1
libfreetype.so.6                        libfreetype.so.6
                                      > libgbm.so.1
libgdk-3.so.0                           libgdk-3.so.0
libgdk_pixbuf-2.0.so.0                  libgdk_pixbuf-2.0.so.0
libgedit.so                           | libgedit-private.so
libgio-2.0.so.0                         libgio-2.0.so.0
libgirepository-1.0.so.1                libgirepository-1.0.so.1
                                      > libglapi.so.0
libglib-2.0.so.0                        libglib-2.0.so.0
                                      > libGL.so.1
libgmodule-2.0.so.0                     libgmodule-2.0.so.0
libgobject-2.0.so.0                     libgobject-2.0.so.0
libgraphite2.so.3                       libgraphite2.so.3
libgthread-2.0.so.0                   <
libgtk-3.so.0                           libgtk-3.so.0
libgtksourceview-3.0.so.1               libgtksourceview-3.0.so.1
libharfbuzz.so.0                        libharfbuzz.so.0
liblzma.so.5                            liblzma.so.5
libm.so.6                               libm.so.6
libpango-1.0.so.0                       libpango-1.0.so.0
libpangocairo-1.0.so.0                  libpangocairo-1.0.so.0
libpangoft2-1.0.so.0                    libpangoft2-1.0.so.0
libpcre.so.3                          | libpcre.so.1
libpeas-1.0.so.0                        libpeas-1.0.so.0
libpeas-gtk-1.0.so.0                    libpeas-gtk-1.0.so.0
libpixman-1.so.0                        libpixman-1.so.0
libpng12.so.0                         | libpng16.so.16
libpthread.so.0                         libpthread.so.0
libresolv.so.2                          libresolv.so.2
librt.so.1                              librt.so.1
libselinux.so.1                         libselinux.so.1
libthai.so.0                          | libudev.so.1
libwayland-client.so.0                <
libwayland-cursor.so.0                <
libX11.so.6                             libX11.so.6
                                      > libX11-xcb.so.1
libXau.so.6                             libXau.so.6
                                      > libxcb-dri2.so.0
                                      > libxcb-glx.so.0
libxcb-render.so.0                      libxcb-render.so.0
libxcb-shm.so.0                         libxcb-shm.so.0
libxcb.so.1                             libxcb.so.1
                                      > libxcb-xfixes.so.0
libXcomposite.so.1                      libXcomposite.so.1
libXcursor.so.1                         libXcursor.so.1
libXdamage.so.1                         libXdamage.so.1
libXdmcp.so.6                         <
libXext.so.6                            libXext.so.6
libXfixes.so.3                          libXfixes.so.3
libXinerama.so.1                        libXinerama.so.1
libXi.so.6                              libXi.so.6
libxkbcommon.so.0                     <
libxml2.so.2                            libxml2.so.2
libXrandr.so.2                          libXrandr.so.2
libXrender.so.1                         libXrender.so.1
                                      > libXxf86vm.so.1
libz.so.1                               libz.so.1
linux-vdso.so.1                         linux-vdso.so.1
fpetitjean@drlouis:~/dcompar$

Je connais très mal les systèmes à base rpm comme SLES (zypper/rpm) ou CentOS (yum/rpm).
Quelles sont les commandes équivalentes à

apt-cache depends
apt-cache rdepends

Pour un seul paquet Ubuntu (gedit) je suis tombé sur plusieurs incohérences entre les dépendances déclarées dans le paquet (debian/control) et les dépendances réelles (sortie de ldd ). Pour un autre (whiptail) le binaire se trouve dans /bin/whiptail alors que debmany s’attend à le trouver en /usr/bin/whiptail . Des détails certes, mais j’ai du mal à comprendre pourquoi les gens de Canonical ne reprennent pas les empaquetages de Debian.

Notes
(1) j’ai été impressionné par la justesse des choix de partitionnement de l’installateur de Centos : par défaut les disques choisis sont dans groupe de volumes LVM nommé vg_NomMachine , simple et de bon goût.

Cordialement,
Regards,
Mit freundlichen Grüssen,
مع تحياتي الخالصة

F. Petitjean

« Moi, lorsque je n’ai rien à dire, je veux qu’on le sache. » (R. Devos)