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?

337
demandé sur Alex Riley 2009-09-17 20:37:06

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.

445
répondu Josh Kelley 2015-03-26 16:21:55

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.

295
répondu Nisse 2018-06-15 13:25:58

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
50
répondu three 2014-01-13 07:45:48

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.

21
répondu Joachim Sauer 2009-09-17 16:39:15

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".

10
répondu mipadi 2009-09-17 16:40:46

l'utilitaire "stow" a été conçu pour résoudre ce problème: http://www.gnu.org/software/stow/

6
répondu jjw 2013-08-04 17:54:04

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).

6
répondu ndemou 2018-08-25 15:43:49

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.

5
répondu Brenton Alker 2009-09-17 16:41:25