it-swarm.dev

Pokud sestavím balíček ze zdroje, jak mohu odinstalovat nebo úplně odebrat?

Použil jsem zdrojový kód k vytvoření jednoho balíčku, jako je níže:

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

Ale bohužel jsem zjistil, že jeho nejnovější verze, a má spoustu chyb, takže musím odstranit/odinstalovat. Ale jak to mohu udělat? Zkusil jsem make clean; make uninstall ale stále to vidím:

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

Jak to nyní odstraníte?

155
user25165

Obvykle stačí použít:

make uninstall

nebo

Sudo make uninstall

pokud byla aplikace nainstalována jako root.

To však bude fungovat, pouze pokud se vývojář balíčku postará o vytvoření dobrého pravidla pro odinstalování.

Můžete také vyzkoušet kroky použité k instalaci softwaru spuštěním:

make -n install

A pak zkuste tyto kroky obrátit ručně.

Chcete-li se v budoucnu vyhnout takovým problémům, zkuste použít checkinstall místo make install kdykoli je to možné (AFAIK vždy, pokud si nepřejete zachovat současně kompilovanou i zabalenou verzi). Vytvoří a nainstaluje soubor deb, který pak můžete odinstalovat pomocí svého oblíbeného správce balíčků.

make clean obvykle čistí adresáře budov, balíček neodinstaluje. Používá se, když chcete mít jistotu, že je celá věc zkompilovaná, nejen změněné soubory.

192
Javier Rivera

Nemyslím si, že se jedná o chybu, bylo by dobré číst a naučit se používat checkinstall při instalaci ze zdroje.

můžete nainstalovat checkinstall z úložišť, krátký popis balíčku;

CheckInstall sleduje všechny soubory vytvořené nebo upravené pomocí instalačního skriptu ("make install" "make install_modules", "setup" atd.), Vytvoří standardní binární balíček a nainstaluje ho do vašeho systému, což vám umožní odinstalovat jej pomocí standardní nástroje pro správu balíčků vaší distribuce.

Tyto odkazy níže mohou být užitečné pro lepší porozumění. http://en.wikipedia.org/wiki/CheckInstall

http://checkinstall.izto.org/

28
Sabacon

Nejedná se o chybu - kompilace ze zdroje je nepodporovaná metoda instalace softwaru, která zcela obchází systém správy balíků (který používá softwarové centrum).

Neexistuje žádný standardní způsob, jak je software zkompilovaný ze zdroje nainstalován nebo odinstalován, takže žádný způsob, jak může Ubuntu vědět, co dělat. Software není ani uveden jako nainstalovaný program.

Při instalaci a odebrání takového softwaru byste měli postupovat podle pokynů distributora. Můžete také kontaktovat vývojáře a požádat jej o vytvoření balíčku Debian, aby bylo možné použít systém správy balíků.

16
dv3500ea

Nejedná se o chybu, ale o to, co se stane, když se vývojáři uchýlí k distribuci prostřednictvím zdroje a ne prostřednictvím nativních metod balení.

Zdrojové soubory můžete získat tak, aby se staly debianovými balíčky pomocí checkinstall nebo dhbuild. Upřímně, podle mého názoru - noví uživatelé by se měli vyhnout instalaci ze zdroje a vývojáři by se měli vyhnout distribuci pouze podle zdroje.

3
RolandiXor

Vím o několika balíčcích, které podporují „make uninstall“, ale mnoho dalších, které podporují make install DESTDIR = xxx “pro fázové instalace.

Můžete použít k vytvoření balíčku, který instalujete místo instalace přímo ze zdroje. S checkinstallem jsem neměl štěstí, ale fpm funguje velmi dobře.

To vám může také pomoci odstranit dříve nainstalovaný balíček pomocí make install . Jednoduše vynutíte instalaci vestavěného balíčku přes nainstalovaný balíček a poté jej odinstalujte.

Například jsem to nedávno použil k řešení protobuf-3.3.0. Na 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 "protocol buffers" \
 --rpm-dist el7 \
 -m [email protected] \
 --url "http:/somewhere/where/you/get/the/package/oritssource" \
 --rpm-autoreqprov \
 usr

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

Pokud je to možné, dávejte přednost yum na rpm.

Na 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:/somewhere/where/you/get/the/package/oritssource" \
 usr/local/bin \
 usr/local/lib \
 usr/local/include

 Sudo apt install -f *.deb
 Sudo apt-get remove protobuf

Preferujte apt na dpkg, kde můžete.

Tuto odpověď jsem také zveřejnil na stackoverflow

1
Bruce Adams

Zkompiloval jsem php-5.6. ze zdroje, aniž bych to konfiguroval s openssl, takže jsem musel jít zpět a nainstalovat jej od nuly. Při použití odinstalovat ne fungovat jako Makefile pro php to nepodporuje.

Tento krok však pracoval pro mě, - vypsal jsem všechny soubory související s php a odstranil je ručně, trvalo mi to asi 5 minut, aniž by se potil. Tyto kroky můžete obdobně použít k odinstalování kompilovaného softwaru.

Nahraďte php softwarem, který potřebujete odinstalovat

whereis php

Výše uvedený příkaz uvádí adresáře, ve kterých jsou binární soubory nainstalovány. Příklad:/usr/local/bin/php,/usr/bin/php .. odebere každý soubor/adresář uvedený ve výstupu.

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

Udělejte to se všemi soubory uvedenými ve výše uvedeném výstupu a jste připraveni nainstalovat novější verzi od nuly.

0
Abhinay

Musíme vyjednat skutečnost, že make uninstall by not vždy fungovalo, takže níže je spíše proaktivní řešení.

To zahrnuje použití programu paco, který je k dispozici v softwarovém centru Ubuntu. Jakmile nainstalujeme paco, můžeme jej použít v logovacím režimu, když provedeme instalaci. Paco funguje jako wrapper pro vaši „make install“ a vytvoří protokol v adresáři/var/log/paco se seznamem souborů zkopírovaným do různých adresářů. Kromě toho jste mohli vidět soubory na frontě Paco.

Například když jsem kompiloval php ze zdroje, udělal jsem následující:

paco -lp php5 "make install"

Parametr l způsobí, že paco běží v režimu záznamu.To vytvořilo soubor protokolu v/var/log/paco s názvem php5 (jméno, které jsem uvedl v příkazu). Obsahoval všechny soubory, které se během instalace zkopírují na různá standardní umístění. K prohlížení souborů můžete použít editor příkazového řádku nebo paco gui.

Níže je uveden příklad získání seznamu souborů pomocí editoru příkazového řádku sed
(Nahraďte php5 vaším jménem).

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

Jakmile získáte seznam souborů, víte, jak je smazat, že? Opravdu byste mohli výsledky výše uvedeného příkazu předat rm pomocí backticků, jak je ukázáno níže:

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

Hotovo!

Poznámka: Vzhledem k omezením LD_PRELOAD nemůže paco sledovat stopy suid programů. Viz stránka man.

0
sjsam