196 votes

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

J'ai utilisé le code source pour construire 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'était la dernière version et qu'elle comportait de nombreux bugs, donc je dois la supprimer/désinstaller. Mais comment puis-je le faire? J'ai essayé make clean; make uninstall mais je le vois toujours existant:

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

Comment pouvez-vous le supprimer maintenant?

2voto

sjsam Points 123

Nous devons négocier le fait que make uninstall ne fonctionnerait pas toujours, donc ci-dessous est plutôt une solution proactive.

Cela implique l'utilisation du programme paco qui est disponible dans le Centre de logiciels Ubuntu. Une fois que nous avons installé paco, nous pouvons l'utiliser en mode journal lorsque nous "make 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 vers divers répertoires. De plus, vous pouvez voir les fichiers dans l'interface graphique Paco.

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

paco -lp php5 "make install"

Le paramètre l fait fonctionner 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 qui sont copiés vers divers emplacements standard pendant l'installation. Vous pouvez utiliser un éditeur de ligne de commande ou une interface graphique paco pour visualiser les fichiers.

Ci-dessous est un exemple pour obtenir 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 transmettre 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'`

C'est fait !

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

2voto

Bruce Adams Points 141

Je connais peu de packages qui supportent "make uninstall", mais beaucoup plus de packages qui supportent "make install DESTDIR=xxx" pour les installations étape par étape.

Vous pouvez utiliser ceci pour créer un package que vous installez au lieu d'installer directement à partir de la source. Je n'ai eu aucun succès avec checkinstall mais fpm fonctionne très bien.

Cela peut également vous aider à supprimer un package précédemment installé en utilisant make install. Vous forcez simplement l'installation de votre package construit sur celui installé par make, puis vous le désinstallez.

Par exemple, j'ai utilisé ceci récemment pour traiter protobuf-3.3.0. Sur RHEL7 :

make install DESTDIR=dest
cd dest
fpm -f -s dir -t rpm -n protobuf -v 3.3.0 \
 --vendor "You Not RedHat" \
 --license "Google?" \
 --description "protocole buffers" \
 --rpm-dist el7 \
 -m you@youraddress.com \
 --url "http:/quelquepart/ou/vous/obtenez/le/package/oulasource" \
 --rpm-autoreqprov \
 usr

 sudo rpm -i -f protobuf-3.3.0-1.el7.x86_64.rpm
 sudo rpm -e protobuf-3.3.0      

Préférez yum à rpm si vous le pouvez.

Sur Debian9 :

make install DESTDIR=dest
cd dest
fpm -f -s dir -t deb -n protobuf -v 3.3.0 \
-C `pwd` \
--prefix / \
--vendor "You Not Debian" \
--license "$(grep Copyright ../../LICENSE)" \
--description "$(cat README.adoc)" \
--deb-upstream-changelog ../../CHANGES.txt \
 --url "http:/quelquepart/ou/vous/obtenez/le/package/oul

2voto

exud Points 289

Si vous utilisateur exécutez make install et make uninstall ne fonctionne pas, vous pouvez supprimer manuellement les fichiers installés.

Arrêtez le service Redis :

service redis_6379 stop

Supprimez maintenant tout ce qui concerne le serveur Redis de /usr/local/bin/ :

rm /usr/local/bin/redis-*

Supprimez le répertoire des fichiers de configuration Redis :

rm -r /etc/redis/

Supprimez le répertoire des données Redis existant :

rm -r /var/lib/redis/

Supprimez les scripts d'initialisation du serveur Redis existants :

rm /etc/init.d/redis_*

Supprimez les fichiers PID Redis existants (uniquement s'ils existent) :

rm /var/run/redis_*

Redémarrez votre serveur et Redis est maintenant complètement supprimé de votre serveur.

2voto

Mario Palumbo Points 243

Aussi, si vous avez installé une source avec la méthode traditionnelle, vous pouvez réinstaller le paquet en vous plaçant dans le même répertoire à partir duquel vous avez exécuté sudo make install, en exécutant sudo checkinstall. Vous pourrez ensuite le désinstaller simplement en tapant sudo apt-get purge $nom_du_programme

1voto

Abhinay Points 11

J'avais compilé php-5.6.30 à partir de la source sans le configurer avec openssl, donc j'ai dû revenir en arrière et l'installer à partir de zéro. Utiliser make uninstall n'a pas fonctionné car le Makefile pour php ne le prend pas en charge.

Cependant, cette étape a fonctionné pour moi - j'ai listé tous les fichiers liés à php et les ai supprimés manuellement, cela m'a pris environ 5 minutes sans transpirer. Vous pouvez utiliser ces étapes de la même manière pour désinstaller votre logiciel compilé.

Remplacez php par le logiciel que vous avez besoin de désinstaller

whereis php

La commande ci-dessus liste les répertoires où les binaires sont installés ex : /usr/local/bin/php, /usr/bin/php .. supprimez chaque fichier/répertoire listé 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 prêt à installer la nouvelle version à partir de zéro.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X