Aller au contenu principal
Tags

,

États des paquets Debian chez les utilisateurs (selon PopCon) – 2

7 août 2012

Lors du précédent article, nous avions conclu que les paquets étaient surtout dans la catégorie « pas utilisé récemment ». Cependant, l’analyse ne prenait pas en compte deux cas :

  • les paquets non Debian
  • les bibliothèques

Éliminer ces incertitudes va-t-il changer quelque chose au résultat ? C’est ce que vous saurez à la fin de cet article dont les rebondissements rendraient jaloux un kangourou sous amphétamines ! (Ou pas.)

Sans paquet non officiel

Les statistiques fournies par PopCon incluent certains paquets avec des noms bizarres. Ainsi, on peut trouver des noms tels que « 204c45e1756d0aaff35eea07ac2a52a4.784[…]32.1 » ou « 0xffff » ainsi que d’autres plus ou moins expressifs (surtout plus de moins et moins de plus). On ne comprend pas bien ce que le nom signifie, mais comme lorsqu’il y a plein de câbles, ça impressionne toujours.

En réalité, la partie cliente de PopCon (celle qui est exécutée sur la machine des utilisateurs) renvoie les statistiques de tous les paquets installés, même s’ils n’existent pas dans les dépôts Debian (main, contrib, non-free). Les statistiques incluent donc les paquets que les utilisateurs ont installés ou développés pour leur propre usage. L’idée sous-jacente est que cela sert aussi d’indice pour inclure de nouveaux paquets qui seraient nécessaires au plus grand nombre. Ce n’est donc pas un bogue mais une fonctionnalité… Il y a maintenant une ligne de plus dans la base de données de bogues souhaitant la possiblité de désactiver cette fonctionnalité (bogue n° 681721).

Si l’on filtre de nouveau les données pour se cantonner uniquement aux paquets officiels, on obtient un résultat globalement équivalent :

Le nuage de points a la même forme, la moyenne reste comparable bien qu’il y ait un transvasement de l’état « peu utilisé » vers l’état « récemment installé » de 5 points.

La liste des paquets sélectionnés est celle fournie dans l’archive des binaires pour l’architecture AMD64 dans la version testing/main (téléchargeable à une adresse du type votre_protocole_préféré://votre_serveur_préféré/debian/dists/testing/main/binary-amd64/Packages.bz2).

Sans les bibliothèques

PopCon détermine la date d’utilisation du logiciel avec la date d’accès sur le disque (l’information atime du fichier) . Comme précisé dans la documentation (cf. /usr/share/doc/popularity-contest/README.gz), cela fonctionne bien avec les exécutables mais pas avec les bibliothèques partagées. Il semble donc souhaitable de visualiser le résultat en enlevant aussi les bibliothèques. En supprimant tous les paquets commençant par le terme « lib » (par exemple lib32bz2-dev ou libc6), nous obtenons un nouveau graphique :

La suppression des bibliothèque ne change rien en comparaison avec le filtre précédent. C’est à se demander pourquoi je pers mon temps à écrire cet article et pourquoi vous perdez votre temps à le lire !

En moyenne, seulement 20 % des paquets sont donc considérés comme utilisé fréquemment.

Sources

La moulinette qui filtre les données a été écrite en Python :

#! /usr/bin/env python

POPCON_FILE = "filtered_popcon.csv"
MAIN_PACKAGES_FILE = "Packages"
POPCON_FOR_MAIN_PACKAGES_FILE = "filtered_popcon_for_main_without_libs.csv"

WITH_LIBS = False

def get_main_packages():
    with open(MAIN_PACKAGES_FILE) as f:
        return [extract_package_name(line)
                for line in f.readlines()
                if is_package_name(line)]

def is_package_name(line):
    return line.startswith("Package: ")

def extract_package_name(line):
    return line.split()[1]

def get_popcon_stats():
    with open(POPCON_FILE) as f:
        if WITH_LIBS:
            _filter = is_official_package
        else:
            def _filter(line):
                return is_official_package(line) and not is_lib(line)

        return [line 
                for line in f.readlines()
                if _filter(line)]

def is_official_package(line):
    package_name = line.split(",")[0]
    return package_name in main_packages

def is_lib(line):
    return line.startswith("lib")

def write_filtered_popcon(stats):
    with open(POPCON_FOR_MAIN_PACKAGES_FILE, "w") as f:
        for stat in stats:
            f.write(stat)

main_packages = get_main_packages()
write_filtered_popcon(get_popcon_stats())

Le code produisant les graphiques est le même que dans l’article précédent, sauf pour les noms de fichier et la chaîne de caractère "Peu utilisé (« old »)" qui est suffixé par des espaces supplémentaires pour éviter de chevaucher la moyenne. L’intérêt étant proche de zéro, je préfère faire économiser quelques paquets TCP/IP à tout le monde en ne l’incluant pas.

About these ads

From → Debian

2 Commentaires
  1. Pour info 0xFFFF est un outils de flashage pour Maemo (Nokia 770, n800, n810 …) :)

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d bloggers like this: