• [^] # Re: Réinstallation plutôt que mise à jour

    Posté par (site web personnel) . En réponse au journal Counter-troll Ubuntu, une fois n'est pas coutume. Évalué à 2.

    Et comment les enlever?
    Il y a bien sûr des procédés lourds, par exemple vérifier la provenance de chaque fichier avec dpkg, mais ce serait trop long, je pense (?). Personne n'a une astuce géniale?


    Une idée génial, je dirais non. Mais je vois bien un moyen d'arriver à trouver quels sont les fichiers qui sont "étranger" à système actuel :

    - D'abord récupérer la liste des paquets installés:
    dpkg -l|sed -e '/^[ir]/!d' -e 's/ */ /g' -e 's/^[^ ]* \([^ ]*\).*/1円/g'

    - Pour chaque élément de cette liste, faire un "dpkg -L" (qui donne la liste des fichiers du paquet). Trier le résultat. On en obtient la liste des fichiers normalement installés :

    (for I in `dpkg -l|sed -e '/^[ir]/!d' -e 's/ */ /g' -e 's/^[^ ]* \([^ ]*\).*/1円/g'`; do dpkg -L $I; done) | sort -u > liste_originelle.txt

    - D'un autre coté, on demande la liste des fichiers & répertoire du disque, auquel on appliquera des filtres, afin de supprimer ce qui ne vient pas de la distribution (/home/, /tmp/, ...)

    find /|sed -e '/\/home/d' -e '/\/tmp/d' -e '/\/var\/log/d' -e '/\/mnt/d' -e '/\/proc/d' -e '/\/dev/d' -e '/\/root/d' -e '/\/sys/d' | sort > /tmp/liste_actuelle.txt

    - Après, il faut faire un "diff", et analyser le résultat à la main : Long et fastidieux... Je viens de regarder le résultat chez moi, c'est assez intéressant. J'ai trouvé des programmes écrits en python que j'avais compilé par le passé, et dont j'avais oublié l'existence.

    - Il restera forcement des "choses" qui sont rajoutés par le système lors des scripts de post-installation, et qui n'apparaissent pas dans le "dpkg -L" :
    - Par exemple, les gestionnaires de paquets Debian crées pleins de fichiers utiles dans /var/lib/, ou /var/cache/
    - Autre exemple : Les paquets kernel ou initramfs créent en post-installation les /boot/vmlinuz*, qui sont primordiaux au boot de la machine