Si je construis un paquet à partir de la source, comment puis-je le désinstaller ou le supprimer complètement?

118

J'ai utilisé le code source pour créer un paquet tel que ci-dessous:

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib --with-package-name="Myplugin" --with-package-origin="http://www.ubuntu.org/" --enable-gtk-doc --disable-static
make
make install

Malheureusement, j'ai découvert que c'est la dernière version, et qu'il y a beaucoup de bogues, alors je dois le supprimer / le désinstaller. Mais comment puis-je le faire? J'ai essayé make clean; make uninstall mais je vois quand même qu'il existe:

# pkg-config --list-all | grep Myplugin
myplugin-....
$ ls /usr/lib/myplugin/libXYZ.so
exist....

Comment supprimez-vous cela maintenant?

    
posée YumYumYum 12.12.2011 - 12:42
la source

6 réponses

149

Habituellement, vous pouvez simplement utiliser:

make uninstall

ou

sudo make uninstall

si l'application a été installée en tant que root.

Mais cela ne fonctionnera que si le développeur du paquet a pris soin de faire une bonne règle de désinstallation.

Vous pouvez également essayer d’examiner les étapes d’installation du logiciel en exécutant:

make -n install

Puis essayez d’inverser manuellement ces étapes.

À l'avenir, pour éviter ce genre de problèmes, essayez d'utiliser checkinstall au lieu de make install lorsque cela est possible ( AFAIK toujours sauf si vous souhaitez conserver à la fois la version compilée et une version packagée en même temps). Il créera et installera un fichier deb que vous pourrez ensuite désinstaller avec votre gestionnaire de paquets préféré.

make clean nettoie généralement les répertoires de construction, il ne désinstalle pas le package. Il est utilisé lorsque vous voulez être sûr que tout est compilé, pas seulement les fichiers modifiés.

    
réponse donnée Javier Rivera 12.12.2011 - 12:49
la source
26

Je ne pense pas que ce soit un bogue, ce serait une bonne idée de lire et d’apprendre à utiliser checkinstall lors de l’installation à partir de la source.

vous pouvez installer checkinstall à partir des référentiels, une brève description du package;

CheckInstall garde la trace de tous les fichiers créés ou modifié par votre script d'installation ("make install" "make install_modules", "setup", etc), construit un paquet binaire standard et l'installe dans votre système vous donnant la possibilité de le désinstaller avec votre les utilitaires de gestion de paquets standard de distribution.

Ces liens ci-dessous peuvent vous aider à mieux comprendre. lien

lien

    
réponse donnée Sabacon 20.01.2011 - 23:36
la source
15

Ce n’est pas un bogue: la compilation à partir de sources est une méthode non prise en charge d’installation de logiciels qui contourne complètement le système de gestion de paquets (utilisé par le Software Center).

Il n’existe aucun moyen standard d’installer ou de désinstaller un logiciel compilé à partir de sources, de sorte qu’Ubuntu ne peut pas savoir quoi faire. Le logiciel n'est même pas répertorié en tant que programme installé.

Vous devez suivre les instructions du distributeur pour l’installation et le retrait d’un tel logiciel personnalisé. Vous pouvez également contacter le développeur pour lui demander de créer un paquet Debian afin que le système de gestion des paquets puisse être utilisé.

    
réponse donnée dv3500ea 20.01.2011 - 23:38
la source
3

Ce n’est pas un bogue, c’est ce qui arrive quand les développeurs ont recours à la distribution via la source et non via les méthodes de packaging natives.

Vous pouvez obtenir que vos fichiers sources deviennent des paquets Debian en utilisant checkinstall ou dhbuild. Honnêtement, à mon avis, les nouveaux utilisateurs devraient éviter d'installer à partir de la source, et les développeurs devraient éviter de distribuer par source uniquement.

    
réponse donnée RolandiXor 20.01.2011 - 23:36
la source
0

Nous devons négocier le fait que make uninstall ne serait pas toujours opérationnel, donc ci-dessous est plus une solution proactive.

 Cela implique l'utilisation du programme paco qui est disponible dans le centre logiciel Ubuntu. Une fois que nous avons installé paco, nous pouvons l'utiliser en mode log lorsque nous "installons" un programme. Paco agit comme un wrapper pour votre "make install" et crée un journal dans le répertoire / var / log / paco avec la liste des fichiers copiés dans différents répertoires. De plus, vous pouviez voir les fichiers dans Front End Paco.

Par exemple, lorsque j'ai compilé php depuis la source, j'ai fait ce qui suit:

paco -lp php5 "make install"

Le paramètre l exécute le paco en mode journal. Cela a créé un fichier journal dans / var / log / paco nommé php5 (le nom que j'ai donné dans la commande). Il contenait tous les fichiers copiés dans divers emplacements standard au cours de l'installation. Vous pouvez utiliser un éditeur de ligne de commande ou paco gui pour afficher les fichiers.

Ci-dessous, l'exemple de l'obtention la liste des fichiers en utilisant l'éditeur de ligne de commande sed (Remplacez php5 par votre nom de fichier).

cat /var/log/paco/php5 | sed -n 's/|\(.*\)//;/^#\(.*\)/d;p'

Une fois que vous avez la liste des fichiers, vous savez comment les supprimer, n'est-ce pas? En effet, vous pouvez passer les résultats de la commande ci-dessus à rm en utilisant des backticks comme indiqué ci-dessous:

sudo rm 'cat /var/log/paco/php5 | sed -n 's/|\(.*\)//;/^#\(.*\)/d;p''

Travail terminé!

Note: En raison des limitations de LD_PRELOAD, paco ne peut pas suivre la trace des programmes suid. Voir la page de manuel.

    
réponse donnée sjsam 09.03.2015 - 13:56
la source
0

J'ai compilé php-5.6.30 depuis le source sans le configurer avec openssl, donc je devais le réinstaller et l'installer à partir de zéro. L'utilisation de make uninstall n'a pas travailler comme le Makefile pour php ne le supporte pas.

Cependant, cette étape a fonctionné pour moi, - j'ai répertorié tous les fichiers liés à php et les ai supprimés manuellement, cela m'a pris environ 5 minutes sans casser. Vous pouvez également utiliser ces étapes pour désinstaller votre logiciel compilé.

Remplacez php par le logiciel que vous devez désinstaller

whereis php

La commande ci-dessus répertorie les répertoires dans lesquels les fichiers binaires sont installés ex: / usr / local / bin / php, / usr / bin / php .. supprime chaque fichier / répertoire répertorié dans votre sortie.

sudo rm -f /usr/local/bin/php

Faites cela avec tous les fichiers listés dans la sortie ci-dessus et vous êtes tous prêt à installer la nouvelle version à partir de rien.

    
réponse donnée Abhinay 03.04.2018 - 21:25
la source

Lire d'autres questions sur les étiquettes