Frage Wenn ich ein Paket von der Quelle her aufbaue, wie kann ich es komplett deinstallieren oder entfernen?


Ich habe Quellcode verwendet, um ein Paket wie das folgende zu erstellen:

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

Aber leider habe ich entdeckt, dass es die neueste Version ist und viele Bugs hat, also muss ich es entfernen / deinstallieren. Aber wie kann ich das tun? Ich habe es versucht make clean; make uninstall aber ich sehe es noch:

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

Wie entfernst du das jetzt?


120
2017-12-12 11:42


Ursprung




Antworten:


Normalerweise können Sie einfach verwenden:

make uninstall

oder

sudo make uninstall

wenn die App als root installiert wurde.

Dies funktioniert jedoch nur, wenn der Entwickler des Pakets sich um eine gute Deinstallationsregel gekümmert hat.

Sie können auch versuchen, die Schritte zur Installation der Software zu lesen, indem Sie Folgendes ausführen:

make -n install

Versuchen Sie dann, diese Schritte manuell umzukehren.

In der Zukunft, um diese Art von Problemen zu vermeiden versuchen zu verwenden checkinstall Anstatt von make install wann immer möglich (AFAIK immer, wenn Sie nicht gleichzeitig die kompilierte und eine gepackte Version behalten wollen). Es erstellt und installiert eine Deb-Datei, die Sie dann mit Ihrem bevorzugten Paket-Manager deinstallieren können.

make clean In der Regel werden die Gebäudeverzeichnisse bereinigt, das Paket wird nicht deinstalliert. Es wird verwendet, wenn Sie sicher sein wollen, dass das Ganze kompiliert ist, nicht nur die geänderten Dateien.


150
2017-12-12 11:49



Das habe ich auch gemacht. Aber es existiert immer noch, wie gezeigt, pkg-config und ls /usr/lib/myplugin/libXYZ.so - YumYumYum
+1 für die Verwendung checkinstall - Es lässt dieses ganze Problem verschwinden. - Oli♦
@Google: Wenn make uninstall nicht funktioniert, müssen Sie nachverfolgen, was make install getan hat und es manuell rückgängig machen. - Javier Rivera
Eine andere Sache zu beachten ist, dass wenn make install wurde als root ausgeführt (z. B. sudo make install), was normalerweise der Fall ist, ist es virtuell immer notwendig zu laufen sudo make uninstall um die Software zu entfernen. - Eliah Kagan
Wenn du schon gelaufen bist make installkannst du noch benutzen checkinstall. Normalerweise checkinstall überschreibt alles, was make install erstellt. Danach einfach benutzen dpkg -r <package.deb>und alles sollte entfernt werden. - user502144


Ich denke nicht, dass dies ein Fehler ist, es wäre eine gute Idee, über checkinstall zu lesen und zu lernen, wenn man von der Quelle installiert.

Sie können checkinstall aus den Repositories installieren, eine kurze Beschreibung des Pakets;

CheckInstall verfolgt alle erstellten Dateien oder geändert durch Ihr Installationsskript ("make install" "make install_modules", "setup", etc), erstellt ein Standard-Binärpaket und installiert es in Ihrem System gibt Ihnen die Möglichkeit, es mit Ihrem zu deinstallieren Standard-Paketverwaltungsdienstprogramme der Distribution.

Diese Links können hilfreich sein, um ein besseres Verständnis zu erhalten. http://en.wikipedia.org/wiki/CheckInstall

http://checkinstall.izto.org/


26
2018-01-20 22:36





Dies ist kein Fehler - das Kompilieren von der Quelle ist eine nicht unterstützte Methode zum Installieren von Software, die das Paketverwaltungssystem (das vom Software Center verwendet wird) vollständig umgeht.

Es gibt keinen Standard, wie Software, die von der Quelle kompiliert wird, installiert oder deinstalliert wird, also kann Ubuntu nicht wissen, was zu tun ist. Die Software ist nicht einmal als installiertes Programm aufgeführt.

Sie sollten die Anweisungen des Distributors für die Installation und Deinstallation solcher benutzerdefinierten Software befolgen. Sie können sich auch an den Entwickler wenden, um ihn zu bitten, ein Debian-Paket zu erstellen, damit das Paketverwaltungssystem verwendet werden kann.


15
2018-01-20 22:38





Es handelt sich nicht um einen Fehler, sondern darum, wenn Entwickler auf die Verteilung über die Quelle und nicht über die nativen Verpackungsmethoden zurückgreifen.

Sie können Ihre Quelldateien mithilfe von checkinstall oder dhbuild zu debian-Paketen machen. Ehrlich, meiner Meinung nach - neue Benutzer sollten die Installation von der Quelle vermeiden, und Entwickler sollten die Verteilung nur nach der Quelle vermeiden.


3
2018-01-20 22:36



Ich weiß, aber manchmal ist es unvermeidbar ... In diesem Fall war es nur ein kleines Spiel, das nicht wirklich notwendig ist, aber irgendwann musste ich MATLAB ein Computer-Tool installieren, das in meiner Universität verwendet wurde und es seit der Quelle installieren musste habe keine Deb-Datei für Ubuntu ... Aber ich werde definitiv die Methoden checkinstall und dhbuild durchgehen ... danke - nik90


Wir müssen darüber verhandeln, dass Deinstallieren würde nicht arbeite immer, also unten ist eher eine proaktive Lösung.

 Dies beinhaltet die Verwendung des Paco-Programms welches im Ubuntu Software Center verfügbar ist. Sobald wir Paco installiert haben, Wir können den Log-Modus verwenden, wenn wir ein Programm "installieren". Paco fungiert als Wrapper für Ihre make install und erstellt ein Protokoll im Verzeichnis / var / log / paco mit der Liste der Dateien, die in verschiedene Verzeichnisse kopiert wurden. Außerdem konnten Sie die Dateien im Paco Frontend sehen.

 Zum Beispiel als ich PHP aus der Quelle kompiliert habe, habe ich Folgendes getan:

paco -lp php5 "make install"

Der Parameter l lässt den Paco im Log-Modus laufen. Dies erzeugte eine Protokolldatei in / var / log / paco mit dem Namen php5 (der Name, den ich im Befehl angegeben habe). Es enthielt alle Dateien, die während der Installation an verschiedene Standardspeicherorte kopiert wurden. Sie können einen Befehlszeileneditor oder Paco GUI verwenden, um die Dateien anzuzeigen.

Unten ist das Beispiel des Erhaltens die Dateiliste mit dem sed-Befehlszeilen-Editor
(Ersetzen Sie PHP5 durch Ihren Dateinamen).

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

Sobald Sie die Liste der Dateien haben, wissen Sie, wie Sie sie löschen, nicht wahr? In der Tat könnten Sie die Ergebnisse des obigen Befehls an übergeben rm mit Backticks wie unten gezeigt:

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

Job erledigt!

Hinweis: Aufgrund von LD_PRELOAD-Einschränkungen kann Paco der Ablaufverfolgung von SUID-Programmen nicht folgen. Siehe Manpage.


0
2018-03-09 12:56





Ich hatte zusammengestellt php-5.6.30 von der Quelle, ohne es mit openssl zu konfigurieren, also musste ich zurückgehen und es von Grund auf neu installieren nicht arbeiten als Makefile für PHP unterstützt es nicht.

Dieser Schritt funktionierte jedoch für mich, - Ich ordnete alle mit php zusammenhängenden Dateien an und entfernte sie manuell, ich brauchte ungefähr 5 Minuten, ohne ins Schwitzen zu kommen. Sie können diese Schritte auch verwenden, um Ihre kompilierte Software zu deinstallieren.

Ersetzen php mit der Software müssen Sie deinstallieren

whereis php

Der obige Befehl listet Verzeichnisse auf, in denen die Binärdateien installiert sind. Beispiel: / usr / local / bin / php, / usr / bin / php .. Entfernen Sie jede in Ihrer Ausgabe aufgeführte Datei / das Verzeichnis.

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

Tun Sie dies mit allen Dateien, die in der obigen Ausgabe aufgelistet sind, und Sie sind alle bereit, die neuere Version von Grund auf neu zu installieren.


0
2018-04-03 19:25