web-dev-qa-db-fra.com

liste les fichiers ne provenant pas de paquets

De nombreux fichiers sont installés par les packages sur mon système de fichiers.

  • Comment pourrais-je lister les fichiers qui sont not? Par exemple, les utilisateurs ont créé, comme la compilation manuelle de logiciels, la rédaction de documents.
  • Existe-t-il un moyen de répertorier les fichiers provenant de packages, mais modifiés? Pour vérifier qu'est-ce que j'ai modifié?.

Cela me serait utile lors d'un projet pour mettre à jour des images personnalisées utilisées en interne. Aussi, lors de la réinstallation à la maison et que j'ai oublié ce que j'ai fait. Bien sûr, les plus intéressants sont en dehors du répertoire home, mais les modifications apportées par exemple aux fichiers de configuration de points dans home sont également intéressantes.

5
n611x007

Pour répondre littéralement à votre question, vous pouvez lister les fichiers qui ne proviennent pas de paquets de cette façon:

find / -xdev -type f | sort >/tmp/root.files
sort /var/lib/dpkg/info/*.list >/tmp/installed.files
comm -23 /tmp/root.files /tmp/installed.files

Cela inclura bien sûr tous les fichiers dans les répertoires personnels. Vous pouvez ignorer certains répertoires de la commande find en ajoutant les directives -Prune (vous devrez également ajouter -print pour imprimer le reste, car l'action -print est uniquement implicite. s'il n'y a pas d'action).

find / -xdev -type f -path /home -Prune -o -path /var -Prune -o -print | sort >/tmp/root.files

Pour vérifier si un fichier a changé, vous pouvez comparer sa somme de contrôle à celle de /var/lib/dpkg/info/$PACKAGE.md5sum. Si vous voulez comparer chaque fichier (ce qui prendra très longtemps):

for p in /var/lib/dpkg/info/*.list; do
  diff <(md5sum $(cat $p) | sort) <(sort ${p#.list}.md5sums);
done

Vous ne devriez pas en avoir besoin, car vous ne devriez pas modifier les fichiers provenant de packages. Vous ne devez pas non plus ajouter vos propres fichiers dans les répertoires système.

Si vous modifiez un fichier de configuration, il réside dans /etc; c'est le seul endroit où vous devriez modifier les fichiers système. Installez le paquet etckeeper pour suivre vos modifications dans /etc. Exécutez Sudo etckeeper init et /etc sera sous contrôle de version ( Bazaar par défaut).

Si vous installez un logiciel sur l’ensemble du système, installez-le sous /usr/local. Ne touchez rien dans /bin, /sbin, /lib (sauf les modules de noyau installés manuellement si vous en avez besoin car vous avez un matériel inhabituel), ou /usr (sauf /usr/local qui est pour votre propre usage).

Tous les fichiers de votre répertoire personnel ont été créés par vos soins (à l’exception de quelques-uns qui ont été copiés à partir de /etc/skel lors de la création de votre compte). Il n’existe aucun moyen général de savoir quelles sont les valeurs par défaut de l’application, lesquelles résultent de la sélection des options de configuration et lesquelles enregistrent l’état actuel (fichiers ouverts, historique des commandes, etc.).

5
Gilles

Pour votre deuxième point, vous pouvez utiliser debsums -ac (du paquet du même nom) pour lister tous les fichiers du paquet (y compris les fichiers de configuration) qui ont été modifiés.

3
Christian David