GNU/Linux >> Tutoriels Linux >  >> Linux

Comment nettoyer uniquement la cible dans buildroot

Buildroot suit la progression de la construction avec .stamp_xxx dans chaque package build dir.target install est en fait la dernière étape pour chaque package. Ainsi, la suppression du fichier .stamp_target_installed de chaque répertoire de construction de package entraînerait sa réinstallation sur la cible

Dans la dernière buildroot, vous pouvez simplement faire ce qui suit :

rm -rf output/target
find output/ -name ".stamp_target_installed" -delete
rm -f output/build/host-gcc-final-*/.stamp_host_installed

Dans certains buildroot plus anciens, il existe quelques autres fichiers en sortie qui suivent la création du répertoire cible avec le squelette. Citant le message de la liste de diffusion, nous pourrions résumer ce qui suit :

Est-ce qu'un "rm -rf output/target &&make" fonctionne ?

Comme l'a dit Thomas, ça ne marche pas. Mais, certains hacks non officiels existent :

  • supprimer build/.root forcera à réinstaller squelette
  • supprimer build/*/.stamp_target_installed forcer la réinstallation de chaque package cible
  • selon votre chaîne d'outils, vous pouvez réinstaller libc and co en supprimant :
  • stamps/ext-toolchain-installed (externe)
  • stamps/ct-ng-toolchain-installed (ctng)
  • target/lib/libc.so.0 (buildroot)

Et puis recommencez tout simplement.

Rappelez-vous, il y a des tonnes de raisons pour lesquelles ces conseils pourraient faire de mauvaises choses. Le seul moyen officiel actuel de reconstruire la cible est "rendre propre".


Buildroot a des cibles make spéciales pour nettoyer le répertoire de construction de packages spécifiques, mais cela ne touche aucun des fichiers installés. Pour citer le manuel d'utilisation :

Lorsqu'un paquet est supprimé de la configuration, Buildroot ne fait rien de spécial. Il ne supprime pas les fichiers installés par ce paquet du système de fichiers racine cible ou de la chaîne d'outils sysroot. Une reconstruction complète est nécessaire pour se débarrasser de ce paquet. Cependant, en général, vous n'avez pas nécessairement besoin que ce paquet soit supprimé immédiatement :vous pouvez attendre la prochaine pause déjeuner pour redémarrer la construction à partir de zéro.

Cela dit, vous pouvez supprimer les fichiers de construction d'un package spécifique en exécutant make <PKG-NAME>-dirclean . Par exemple, si je voulais supprimer les fichiers de construction pour i2c-tools , je lancerais make i2c-tools-dirclean . Le <PKG-NAME>-dirclean target exécute simplement un rm -rf sur le output/build/<PKG-NAME> annuaire. Cela ne supprimera pas les fichiers installés de output/target/ . Si vous voulez supprimer les fichiers de votre rootfs sans une reconstruction complète, c'est bien - vous pouvez simplement aller dans output/target/ , rm les fichiers dont vous ne voulez plus, puis exécutez make pour régénérer vos images finales. Assurez-vous également que votre configuration Buildroot n'est pas configurée pour reconstruire et installer le package que vous essayez de supprimer.


Linux
  1. Comment différencier un répertoire uniquement pour les fichiers d'un type spécifique ?

  2. Commande Linux :Comment "trouver" uniquement des fichiers texte ?

  3. Comment puis-je lister uniquement les fichiers non vides en utilisant ls ?

  4. Comment créer des liens symboliques vers tous les fichiers (classe de fichiers) d'un répertoire ?

  5. Systemd :Comment exécuter le script à l'arrêt uniquement (pas au redémarrage)

Comment trouver des fichiers sous Linux

Comment installer des fichiers Deb (paquets) sur Ubuntu

Comment désorganiser des fichiers sur Git

Comment compter le nombre de fichiers et de sous-répertoires dans un répertoire

Comment trouver des fichiers dans Debian

Comment nettoyer les fichiers inutiles