Vraag Als ik een pakket bouw vanaf bron, hoe kan ik het verwijderen of helemaal verwijderen?


Ik heb de broncode gebruikt om een ​​pakket te bouwen zoals hieronder:

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

Maar helaas heb ik ontdekt dat het de nieuwste versie is en veel bugs bevat, dus ik moet het verwijderen / verwijderen. Maar hoe kan ik dat doen? Ik heb geprobeerd make clean; make uninstall maar toch zie ik het bestaan:

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

Hoe verwijder je dit nu?


120
2017-12-12 11:42


oorsprong




antwoorden:


Meestal kun je gewoon gebruik maken van:

make uninstall

of

sudo make uninstall

als de app als root is geïnstalleerd.

Maar dit werkt alleen als de ontwikkelaar van het pakket heeft gezorgd voor het maken van een goede verwijderingsregel.

U kunt ook proberen de stappen te bekijken die worden gebruikt om de software te installeren door het volgende uit te voeren:

make -n install

En probeer vervolgens die stappen handmatig terug te draaien.

In de toekomst om te voorkomen dat dergelijke problemen proberen te gebruiken checkinstall in plaats van make install waar mogelijk (AFAIK altijd tenzij u zowel de gecompileerde als een verpakte versie tegelijkertijd wilt bewaren). Het maakt en installeert een deb-bestand dat u vervolgens kunt verwijderen met uw favoriete pakketbeheerder.

make clean ruimt meestal de mappen van het gebouw op, het verwijdert het pakket niet. Het wordt gebruikt als u zeker wilt weten dat het hele proces is gecompileerd, niet alleen de gewijzigde bestanden.


150
2017-12-12 11:49



Ik deed dat ook. Maar toch bestaat het, zoals getoond pkg-config en ls /usr/lib/myplugin/libXYZ.so - YumYumYum
+1 voor gebruik checkinstall - het maakt dit hele probleem verdampen. - Oli♦
@Google: als het verwijderen van bestanden niet werkt, moet u bijhouden wat make install heeft gedaan en het handmatig ongedaan maken. - Javier Rivera
Een ander ding om in gedachten te houden is dat als make install werd gerund als root (bijv. sudo make install), wat meestal het geval is, is het virtueel altijd noodzakelijk om te worden uitgevoerd sudo make uninstall om de software te verwijderen. - Eliah Kagan
Als je al hebt gerund make install, je kunt nog steeds gebruiken checkinstall. Normaal gesproken checkinstall zal dat alles overschrijven make install aangemaakt. Daarna gewoon gebruiken dpkg -r <package.deb>en alles zou moeten worden verwijderd. - user502144


Ik denk niet dat dit een bug is, het zou een goed idee zijn om meer te lezen over en leren om checkinstall te gebruiken bij het installeren vanaf de bron.

u kunt checkinstall uit de repositories installeren, een korte beschrijving van het pakket;

CheckInstall houdt bij van alle bestanden die zijn gemaakt of aangepast door uw installatiescript ("make install" "make install_modules", "setup", etc), builds a standaard binair pakket en installeert het in uw systeem dat u de mogelijkheid biedt om het te de-installeren met uw distributie standaard pakketbeheerhulpprogramma's.

De onderstaande links kunnen nuttig zijn om een ​​beter begrip te krijgen. http://en.wikipedia.org/wiki/CheckInstall

http://checkinstall.izto.org/


26
2018-01-20 22:36





Dit is geen bug - het compileren van de bron is een niet-ondersteunde methode voor het installeren van software die het pakketbeheersysteem (dat wordt gebruikt door het Software Center) volledig omzeilt.

Er is geen standaard manier waarop software die is gecompileerd vanaf de bron is geïnstalleerd of gedeïnstalleerd, dus op geen enkele manier kan Ubuntu weten wat te doen. De software staat niet eens vermeld als een geïnstalleerd programma.

Volg de instructies van de distributeur voor het installeren en verwijderen van dergelijke aangepaste software. U kunt ook contact opnemen met de ontwikkelaar om hen te vragen een Debian-pakket te maken, zodat het pakketbeheersysteem kan worden gebruikt.


15
2018-01-20 22:38





Het is geen fout, het is wat er gebeurt als ontwikkelaars hun toevlucht nemen tot distributie via de bron en niet via de native verpakkingsmethoden.

U kunt uw bronbestanden debian-pakketten maken door checkinstall of dhbuild te gebruiken. Eerlijk gezegd, naar mijn mening - nieuwe gebruikers moeten voorkomen dat ze vanaf de bron installeren, en ontwikkelaars moeten voorkomen dat ze alleen via de bron worden verspreid.


3
2018-01-20 22:36



Ik weet het, maar soms is het onvermijdelijk ... In dit geval was het slechts een kleine game die niet echt nodig was, maar ooit moest ik MATLAB als een computertool installeren die ik in mijn universiteit gebruikte en moest het door de bron installeren, omdat ze het deden geen deb-bestand voor ubuntu ... Maar ik zal zeker de methoden checkinstall en dhbuild doornemen ... bedankt - nik90


We moeten onderhandelen over het feit dat maak de-installatie zou niet altijd werken, dus hieronder is meer een proactieve oplossing.

 Dit omvat het gebruik van het paco-programma welke beschikbaar is in het Ubuntu Software Center. Zodra we paco hebben geïnstalleerd, we kunnen het gebruiken in de logmodus wanneer we een programma "maken installeren". Paco fungeert als een verpakking voor uw "make install" en maakt een log in de map / var / log / paco met de lijst met bestanden die naar verschillende mappen zijn gekopieerd. Bovendien kon je de bestanden in het Paco Front-end zien.

 Toen ik bijvoorbeeld PHP uit de bron compileerde, deed ik het volgende:

paco -lp php5 "make install"

De parameter l maakt de paco in de logmodus.Dit creëerde een logbestand in / var / log / paco met de naam php5 (de naam die ik in de opdracht heb gegeven). Het bevatte alle bestanden die tijdens de installatie naar verschillende standaardlocaties werden gekopieerd. U kunt een opdrachtregeleditor of paco gui gebruiken om de bestanden te bekijken.

Hieronder is het voorbeeld van krijgen de bestandslijst met behulp van sed command line-editor
(Vervang php5 door uw bestandsnaam).

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

Zodra je de lijst met bestanden hebt, weet je hoe je ze moet verwijderen, toch? Inderdaad, je zou de resultaten van het bovenstaande commando kunnen doorgeven aan rm met behulp van backticks zoals hieronder getoond:

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

Klus geklaard!

Opmerking: vanwege LD_PRELOAD beperkingen, kan paco het spoor van suid-programma's niet volgen. Zie man pagina.


0
2018-03-09 12:56





Ik had gecompileerd php-5.6.30 van de bron zonder het te configureren met openssl, dus ik moest terug gaan en het vanaf nul installeren. Gebruik maken van uninstall deed niet werken als de Makefile voor php ondersteunt het niet.

Deze stap werkte echter voor mij, - ik vermeldde alle bestanden die gerelateerd zijn aan php en verwijderde ze handmatig, het kostte me ongeveer 5 minuten zonder te zweten. U kunt op dezelfde manier deze stappen gebruiken om uw gecompileerde software te verwijderen.

Vervangen php met de software die u moet verwijderen

whereis php

De bovenstaande opdracht bevat mappen waarin de binaire bestanden zijn geïnstalleerd ex: / usr / local / bin / php, / usr / bin / php .. verwijder elk bestand / map vermeld in uw uitvoer.

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

Doe dit met alle bestanden in de bovenstaande uitvoer en u bent helemaal klaar om de nieuwere versie helemaal opnieuw te installeren.


0
2018-04-03 19:25