Podczas biegu
./configure --prefix=/mingw
w systemie MinGW / MSYS dla biblioteki, którą wcześniej uruchomiłem
'./configure --prefix=/mingw && make && make install'
Natrafiłem na tę wiadomość:
OSTRZEŻENIE: Wersja zestawu SDK wtyczki Vamp jest już zainstalowana. Oczekuj zmartwień i smutków, jeśli zainstalujesz nową wersję bez uprzedniego usunięcia starej. (Kontynuacja)
Martwiło mnie to. Czym jest przeciwieństwo „make install”, tj. Jak odinstalowuje się bibliotekę w systemie Linux? Czy „czyści” wykona zadanie, czy też są jakieś inne kroki?
sudo make uninstall
jeśli pliki konfiguracyjne instalacji są nadal dostępne, ale nie ma innych oczywistych rozwiązań, jeśli nie, oprócz odinstalowywania za pomocą narzędzia do zarządzania pakietami systemowymi, jeśli jest instalowane z „checkinstall” „narzędzie.make install
nigdy nie musiałemmake uninstall
ich usuwać. Zawsze używałemxargs rm < install_manifest.txt
Odpowiedzi:
make clean
usuwa wszelkie pliki pośrednie lub wyjściowe z drzewa źródłowego / kompilacji. Jednak wpływa tylko na drzewo źródłowe / kompilacji; nie dotyka reszty systemu plików, a zatem nie usuwa wcześniej zainstalowanego oprogramowania.Jeśli masz szczęście, bieganie
make uninstall
będzie działać. Zapewnienie tego zależy jednak od autorów biblioteki; niektórzy autorzy podająuninstall
cel, inni nie.Jeśli nie masz szczęścia, musisz go ręcznie odinstalować. Uruchomienie
make -n install
może być pomocne, ponieważ pokaże kroki, jakie oprogramowanie wykona, aby się zainstalować, ale w rzeczywistości nic nie zrobi. Następnie możesz ręcznie cofnąć te kroki.źródło
Jeśli
sudo make uninstall
jest niedostępny:W systemie opartym o Debiana, zamiast (lub po *) robi
make install
można uruchomićsudo checkinstall
zrobić.deb
plik zostanie automatycznie zainstalowany. Następnie możesz go usunąć za pomocą menedżera pakietów systemowych (np.apt
/synaptic
/aptitude
/dpkg
). Checkinstall obsługuje również tworzenie innych typów pakietów, np. RPM.Zobacz także http://community.linuxmint.com/tutorial/view/162 oraz niektóre podstawowe zastosowania checkinstall i pakiet debian checkinstall .
*: Jeśli czytasz to po zainstalowaniu
make install
, nadal możesz postępować zgodnie z powyższymi instrukcjami i zrobićdpkg -r $PACKAGE_NAME_YOU_CHOSEN
później.źródło
make install
przed użyciemcheckinstall
.checkinstall
aby ta doskonała odpowiedź zadziałała.checkinstall
a jeśli nowa kompilacja ma te same ustawienia, co poprzednia, odinstalowanie zainstalowanego pakietu zcheckinstall
powinien usunąć wcześniej zainstalowane pliki.Jeśli masz
manifest
plik z listą wszystkich plików, które zostały z nim zainstalowanemake install
, możesz uruchomić polecenie, które mam z innej odpowiedzi:Jeśli tak
sudo make install
, musisz dodać sudo do dezinstalacji:źródło
xargs echo rm | sh
? Całkiem oczywiste, że ktokolwiek to zasugerował, nie jest szczególnie doświadczony ani nie ma wiedzy na temat używania powłoki.install_manifest.txt
zawiera gwiazdkę ...rm *
zostanie przeniesiony do skorupy.) Z tego powodu przegłosowano.install_manifest.txt
można się spodziewać?W zależności od tego, jak dobrze magia makefile / configure script / autofoo danego programu może rozwiązać Twój problem:
Problem polega na tym, że należy to wykonać w drzewie źródeł zainstalowanej wersji i przy użyciu dokładnie takiej samej konfiguracji, jak podczas instalacji.
źródło
Jak odinstalować po „make install”
Metoda nr 1 (dokonaj deinstalacji)
Krok 1: Musisz wykonać ten krok tylko wtedy, gdy usunąłeś / zmieniłeś katalog kompilacji w jakikolwiek sposób: Pobierz i dokonaj / make install stosując dokładnie taką samą procedurę jak poprzednio.
Krok 2: Spróbuj odinstalować.
Jeśli to się powiedzie, skończyłeś. Jeśli jesteś paranoikiem, możesz również spróbować wykonać kroki z „Metody nr 3”, aby upewnić się,
make uninstall
że nie przegapisz żadnych plików.Metoda nr 2 (checkinstall - tylko dla systemów opartych na Debianie)
Przegląd procesu
W systemach opartych na Debianie (np. Ubuntu) możesz
.deb
bardzo łatwo stworzyć pakiet, używając narzędzia o nazwiecheckinstall
. Następnie instalujesz pakiet .deb (to sprawi, że twój system debian zda sobie sprawę, że wszystkie części pakietu rzeczywiście zostały zainstalowane) i ostatecznie odinstalujesz go, aby Twój menedżer pakietów poprawnie wyczyścił twój system.Krok po kroku
W tym momencie
checkinstall
pojawi się monit o podanie nazwy pakietu. Wprowadź coś nieco opisowego i zanotuj to, ponieważ wykorzystasz to za minutę. Pojawi się również monit o podanie kilku dodatkowych danych, które możesz zignorować. Jeśli to narzeka wersji nie był dopuszczalny tylko wprowadzić coś rozsądnego jak1.0
. Po zakończeniu możesz zainstalować i ostatecznie odinstalować:Metoda nr 3 (install_manifest.txt)
Jeśli plik
install_manifest.txt
istnieje w katalogu źródłowym, powinien on zawierać nazwy plików każdego pliku utworzonego przez instalację.Najpierw sprawdź listę plików i ich czas modyfikacji:
Powinieneś dostać zero błędów, a czasy modów wymienionych plików powinny być włączone lub po czasie instalacji. Jeśli wszystko jest w porządku, możesz je usunąć za jednym razem:
Użytkownik Merlyn Morgan-Graham ma jednak poważne obawy dotyczące tej metody, o których należy pamiętać (skopiowano tutaj dosłownie): „Uważaj na pliki, które mogły być również zainstalowane przez inne pakiety. Po prostu usunięcie tych plików [...] może zepsuć inne pakiety. ” . To jest powód, dla którego stworzyliśmy
deleted-by-uninstall
katalog i przenieśliśmy tam pliki zamiast je usuwać.99% tego postu istniało w innych odpowiedziach. Właśnie zebrałem wszystko przydatne w (mam nadzieję) łatwym do naśladowania poradniku i starałem się zwrócić szczególną uwagę na ważne szczegóły (takie jak cytowanie argumentów xarg i przechowywanie kopii zapasowych usuniętych plików).
źródło
make clean
generalnie czyści tylko wbudowane pliki w katalogu zawierającym sam kod źródłowy i rzadko dotyka zainstalowanego oprogramowania.Pliki Makefile na ogół nie zawierają celu do odinstalowania - zwykle musisz to zrobić samodzielnie, usuwając pliki z katalogu, w którym zostały zainstalowane. Na przykład, jeśli wbudowany program i zainstalować go (za pomocą
make install
) w/usr/local
, którą chcesz przejrzeć/usr/local/bin
,/usr/local/libexec
,/usr/local/share/man
, itd., I usunąć niepotrzebne pliki. Czasami plik Makefile zawierauninstall
cel, ale nie zawsze.Oczywiście zazwyczaj w systemie Linux instaluje się oprogramowanie za pomocą menedżera pakietów , który jest w stanie „odinstalować” oprogramowanie „automatycznie”.
źródło
Narzędzie „stow” zostało zaprojektowane w celu rozwiązania tego problemu: http://www.gnu.org/software/stow/
źródło
stow
do rozwiązania tego problemu?Niestety nie ma standardu, jest to jedno z zagrożeń związanych z instalacją ze źródła. Niektóre pliki Makefile zawierają „odinstalowanie”, więc
z katalogu źródłowego może działać. W przeciwnym razie może to być kwestia ręcznego cofnięcia tego, co
make install
zrobiono.make clean
zwykle po prostu czyści katalog źródłowy - usuwając wygenerowane / skompilowane pliki i tym podobne, prawdopodobnie nie to, czego szukasz.źródło
Znam kilka pakietów, które obsługują „dokonaj deinstalacji”, ale wiele innych, które obsługują, instalują DESTDIR = xxx dla instalacji etapowych.
Możesz użyć tego do stworzenia pakietu, który instalujesz zamiast instalować bezpośrednio ze źródła. Nie miałem szczęścia z checkinstall, ale fpm działa bardzo dobrze.
Może to również pomóc usunąć pakiet wcześniej zainstalowany przy użyciu make install . Po prostu wymuś zainstalowanie wbudowanego pakietu w stosunku do make install a następnie odinstaluj.
Na przykład ostatnio użyłem tego, aby poradzić sobie z protobuf-3.3.0. Na RHEL7:
Jeśli to możliwe, wolę yum od rpm.
Na Debian9:
Wolę apt na dpkg tam, gdzie możesz.
Odpowiedziałem również tutaj
źródło
Make
może ci powiedzieć, co wie i co zrobi. Załóżmy, że masz cel instalacji, który wykonuje polecenia takie jak:W ogólnych zasadach dodaj:
Podobna sztuczka może zrobić rodzajową
make clean
.źródło
Preambuła
poniżej może działać, ale nie musi, wszystko to jest podane w obecnym stanie, a Ty i tylko Ty jesteś osobą odpowiedzialną w przypadku uszkodzenia, utraty danych i tak dalej. Ale mam nadzieję, że wszystko pójdzie gładko!
Aby cofnąć
make install
, zrobiłbym (i zrobiłem) to:Pomysł: sprawdź, co skrypt instaluje i cofnij to za pomocą prostego skryptu bash.
--prefix=$PWD/install
. W przypadku CMake możesz przejść do katalogu kompilacji, otworzyć plik CMakeCache.txt i naprawić wartość CMAKE_INSTALL_PREFIX.make install
ponownie).make install
skrypt instaluje w niestandardowym katalogu tylko tę samą zawartość, którą chcesz usunąć z innego miejsca (zwykle/usr/local
). Potrzebujemy więc skryptu. 3.1 Skrypt powinien porównać niestandardowy katalog z katalogiem, który chcesz wyczyścić. Używam tego:anti-install.sh
3.2 Teraz po prostu uruchom ten skrypt (będzie działał na sucho)
Np. Nie chcesz czyścić / usr / local, a twoim niestandardowym katalogiem instalacyjnym jest /user/me/llvm.build/install, to byłoby
3.3 Sprawdź dokładnie dziennik, jeśli polecenia są dla ciebie dobre, odkomentuj
rm $RM_DIR/$fn
i uruchom je ponownie. Ale przestań! Czy naprawdę sprawdziłeś dokładnie? Czy można sprawdzić ponownie?Źródło instrukcji: https://dyatkovskiy.com/2019/11/26/anti-make-install/
Powodzenia!
źródło