Quel est le contraire de "make install", c'est-à-dire comment désinstaller une bibliothèque sous Linux?
en cours d'exécution
./configure --prefix=/mingw
sur un MinGW/MSYS pour une bibliothèque j'avais déjà exécuté
'./configure --prefix=/mingw && make && make install'
j'ai trouvé ce message:
avertissement: une version du plugin Vamp SDK est déjà installée. Attendons de soucis et de chagrins si vous installez une nouvelle version sans supprimer l'ancien premier. (Continue)
cela m'a inquiété. Quel est le contraire de "make install", c'est-à-dire comment une bibliothèque est-elle désinstallée sous Linux? Le travail sera-t-il "propre" ou y aura-t-il d'autres étapes à suivre?
8 réponses
make clean
supprime tous les fichiers intermédiaires ou de sortie de votre arborescence source / build. Cependant, il n'affecte que l'arborescence source / build; il ne touche pas le reste du système de fichiers et ne supprimera donc pas le logiciel déjà installé.
si vous avez de la chance, make uninstall
marchera. C'est aux auteurs de la bibliothèque de fournir cela, cependant; certains auteurs fournissent une cible uninstall
, d'autres non.
si vous n'avez pas de chance, vous devrez le désinstaller manuellement. Lancer make -n install
peut être utile, car il montrera les étapes que le logiciel prendrait pour s'installer, mais ne fera rien. Vous pouvez manuellement inverser ces étapes.
si sudo make uninstall
n'est pas disponible:
dans un système basé sur Debian, au lieu de (ou après*) faire make install
, vous pouvez lancer sudo checkinstall
pour créer un fichier .deb
qui est automatiquement installé. Vous pouvez ensuite le supprimer en utilisant le gestionnaire de paquets système (par exemple apt
/ synaptic
/ aptitude
/ dpkg
). Checkinstall supporte également la création d'autres types de paquet, par exemple RPM.
voir aussi http://community.linuxmint.com/tutorial/view/162 et un contrôle de base de l'utilisation et paquet Debian checkinstall .
*: si vous lisez ceci après avoir installé avec make install
vous pouvez toujours suivre les instructions ci-dessus et faire un dpkg -r $PACKAGE_NAME_YOU_CHOSEN
par la suite.
si vous avez un fichier manifest
qui liste tous les fichiers qui ont été installés avec make install
vous pouvez exécuter cette commande que j'ai d'une autre réponse:
cat install_manifest.txt | xargs echo rm | sh
si vous avez sudo make install
vous aurez besoin d'ajouter un sudo à votre désinstallation:
cat install_manifest.txt | xargs echo sudo rm | sh
en fonction de la façon dont le makefile/script configure/autofoo magique du programme en question Est le suivant pourrait résoudre votre problème:
make uninstall
le problème est que vous devez exécuter ceci sur l'arbre des sources de la version que vous avez installée et avec exactement la même configuration que celle que vous avez utilisée pour installer.
make clean
nettoie généralement seulement les fichiers construits dans le répertoire contenant le code source lui-même, et touche rarement un logiciel installé.
les Makefiles ne contiennent généralement pas de cible pour la désinstallation -- vous devez généralement le faire vous-même, en retirant les fichiers du répertoire dans lequel ils ont été installés. Par exemple, si vous avez construit un programme et l'avez installé (en utilisant make install
) dans /usr/local
, vous voulez regarder à travers /usr/local/bin
, /usr/local/libexec
, /usr/local/share/man
, etc. et de supprimer les fichiers indésirables. Parfois, un Makefile inclut une cible uninstall
, mais pas toujours.
bien sûr, typiquement sur un système Linux vous installez un logiciel en utilisant un package manager , qui est capable de désinstaller le logiciel"automagiquement".
l'utilitaire "stow" a été conçu pour résoudre ce problème: http://www.gnu.org/software/stow/
Comment désinstaller après" make install "
Method #1 (make uninstall)
Étape 1: vous n'avez besoin de suivre cette étape que si vous avez supprimé/modifié le répertoire de compilation de quelque manière que ce soit: télécharger et faire/faire installer en utilisant la exacte même procédure que vous l'avez fait avant.
Étape 2: Essayez de faire désinstaller.
cd $SOURCE_DIR
sudo make uninstall
If cela réussit, vous avez terminé. Si vous êtes paranoïaque, vous pouvez également essayer les étapes de "Méthode #3" pour vous assurer que make uninstall
n'a pas manqué de fichiers.
méthode n ° 2 (chectinstall -- seulement pour les systèmes basés sur debian)
aperçu du procédé
dans les systèmes basés sur debian (par exemple Ubuntu), vous pouvez créer un paquet .deb
très facilement en utilisant un outil nommé checkinstall
. Ensuite, vous installez le .paquet deb (cela permettra à votre système debian de se rendre compte que toutes les parties de votre paquet ont été effectivement installées) et finalement de le désinstaller pour permettre à votre gestionnaire de paquets de nettoyer correctement votre système.
étape par étape
sudo apt -y install checkinstall
cd $SOURCE_DIR
sudo checkinstall
à ce point, checkinstall
demandera un nom de paquet. Entrez quelque chose d'un peu descriptif et notez-le parce que vous allez l'utiliser dans une minute. Il également demander un peu plus de données que vous pouvez ignorer. S'il se plaint que la version n'était pas acceptable, il suffit d'entrer quelque chose de raisonnable comme 1.0
. Une fois terminé, vous pouvez installer et finalement désinstaller:
sudo dpkg -i $PACKAGE_NAME_YOU_ENTERED
sudo dpkg -r $PACKAGE_NAME_YOU_ENTERED
la Méthode #3 (install_manifest.txt)
si un fichier install_manifest.txt
existe dans votre répertoire source, il doit contenir les noms de fichier de chaque fichier créé par l'installation.
So consultez d'abord la liste des fichiers et leurs mod-temps:
cd $SOURCE_DIR
sudo xargs -I{} stat -c "%z %n" "{}" < install_manifest.txt
vous devriez obtenir zéro erreur et les mod-times des fichiers énumérés devraient être sur ou après le temps d'installation. Si tout est OK, vous pouvez les supprimer en une seule fois:
cd $SOURCE_DIR
mkdir deleted-by-uninstall
sudo xargs -I{} mv -t deleted-by-uninstall "{}" < install_manifest.txt
L'utilisateur Merlyn Morgan-Graham a cependant un avis sérieux concernant cette méthode que vous devez garder à l'esprit (copié ici mot à mot): "Faites attention aux fichiers qui pourraient aussi avoir été installés par d'autres paquets. Il suffit de supprimer ces fichiers [...] pourrait briser les autres paquets." . C'est la raison pour laquelle nous avons créé le dir deleted-by-uninstall
et y avons déplacé des fichiers au lieu de les supprimer.
99% de ce poste existait dans d'autres réponses. Je viens de recueillir tout utile dans un (espérons) facile à suivre comment - to et essayé de donner une attention supplémentaire à des détails importants (comme citer des arguments xarg et garder des sauvegardes de fichiers supprimés).
il n'y a pas de norme malheureusement, c'est l'un des périls de l'installation à partir de la source. Quelques Makefiles comprendra un "désinstaller", donc
make uninstall
du répertoire source peut fonctionner. Dans le cas contraire, il pourrait s'agir de défaire manuellement ce que le make install
a fait.
make clean
nettoie habituellement le répertoire source en supprimant les fichiers générés/compilés et autres, probablement pas ce que vous recherchez.