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


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

Mais malheureusement, j'ai découvert que c'est la dernière version, et il y a beaucoup de bugs, donc 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 ceci maintenant?


120
2017-12-12 11:42


origine




Réponses:


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

Et puis essayez d'inverser ces étapes manuellement.

À l'avenir, pour éviter ce genre de problèmes, essayez d'utiliser checkinstall au lieu de make install chaque fois que 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.


150
2017-12-12 11:49



J'ai fait ça aussi. Mais il existe toujours, comme montré pkg-config et ls /usr/lib/myplugin/libXYZ.so - YumYumYum
+1 pour utiliser checkinstall - Cela fait disparaître tout ce problème. - Oli♦
@Google: Si make uninstall ne fonctionne pas, vous devrez suivre ce que make install a fait et le supprimer manuellement. - Javier Rivera
Une autre chose à garder à l'esprit est que si make install a été exécuté en tant que root (par exemple, sudo make install), ce qui est généralement le cas, il est toujours nécessaire de courir sudo make uninstall supprimer le logiciel. - Eliah Kagan
Si vous avez déjà couru make install, vous pouvez toujours utiliser checkinstall. Normalement checkinstall va écraser tout ce qui make install créé. Après cela, utilisez simplement dpkg -r <package.deb>, et tout devrait être enlevé. - user502144


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 courte 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 utilitaires de gestion de paquets standard de distribution.

Ces liens ci-dessous peuvent être utiles pour mieux comprendre. http://en.wikipedia.org/wiki/CheckInstall

http://checkinstall.izto.org/


26
2018-01-20 22:36





Ce n'est pas un bogue: la compilation à partir de la source est une méthode non prise en charge pour l'installation du logiciel qui contourne complètement le système de gestion des packages (utilisé par le Software Center).

Il n’existe pas de méthode standard pour installer ou 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é.


15
2018-01-20 22:38





Ce n'est pas un bug, c'est ce qui se passe lorsque 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.


3
2018-01-20 22:36



Je sais, mais parfois c'est inévitable ... Dans ce cas, c'était juste un petit jeu qui n'était pas vraiment nécessaire, mais il fallait parfois installer MATLAB, un outil informatique utilisé dans mon université et qui devait l'installer par la source pas de fichier deb pour ubuntu ... Mais je vais certainement passer par les méthodes checkinstall et dhbuild ... merci - nik90


Nous devons négocier le fait que désinstaller aurait ne pas travaille toujours, donc en 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 pouvez voir les fichiers dans le Front 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 fait fonctionner 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 visualiser les fichiers.

Voici 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 pourriez passer les résultats de la commande ci-dessus à rm en utilisant des punaises 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.


0
2018-03-09 12:56





J'avais compilé php-5.6.30 de source sans le configurer avec openssl, donc je devais revenir en arrière et l'installer à partir de zéro. Utiliser 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 une sueur. Vous pouvez également utiliser ces étapes pour désinstaller votre logiciel compilé.

Remplacer php avec 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-le avec tous les fichiers répertoriés dans la sortie ci-dessus et vous êtes tous prêts à installer la nouvelle version à partir de zéro.


0
2018-04-03 19:25