Odinstalowywanie programów w systemie Linux

30

Używam Windows i Mac OS od 5 lat i teraz rozważam używanie Linuksa na codzień. Zainstalowałem Ubuntu na maszynie wirtualnej i próbuję zrozumieć, jak mogę używać Linuksa do mojej codziennej pracy (jako programista js / web designer).

Przepraszam za pytanie początkującego, ale wydaje mi się, że czasami, kiedy zainstalować program za pośrednictwem make configi make installzmienia swój system w taki sposób, że nie można cofnąć łatwo. W systemie Windows podczas instalowania programu można go odinstalować i mam nadzieję , że jeśli będzie on odtwarzany przez książkę, w systemie plików lub rejestrze nie pozostaną żadne ślady programu. W systemie Mac OS wystarczy usunąć aplikację jak plik.

Ale w Linuksie jest, apt-geta potem jest make. Nie do końca rozumiałem, jak mogę zachować czystość i porządek mojej instalacji Linuksa. Wydaje się, że każda nowa instalacja aplikacji może uszkodzić mój system. Ale Linux ma reputację bardzo solidnej, więc musi być coś, czego nie rozumiem, w jaki sposób instalacja i dezinstalacja aplikacji wpływa na system. Czy ktoś może rzucić na to trochę światła?


Aktualizacja: podczas instalowania aplikacji jej pliki mogą rozprzestrzeniać się w dowolnym miejscu (menedżerowie pakietów zajmują się częścią problemu), ale istnieje fajny hack wokół tego: użyj Dockera do instalowania aplikacji i trzymaj je w piaskownicy, szczególnie jeśli nie zamierzasz używaj ich zbyt często. Możliwe jest również uruchamianie aplikacji GUI, takich jak Firefox, całkowicie w „piaskownicy” Dockera.

AlexStack
źródło
11
Jako prosty użytkownik powinieneś używać apt-getzamiast makeinstalować oprogramowanie. make installjest używany, gdy trzeba zbudować najnowszą (prawdopodobnie niestabilną) wersję oprogramowania ze źródeł, która nie jest jeszcze dostępna jako pakiet.
Dmitrij Grigoriew
@DmitryGrigoryev Korzystanie aptjest prostsze i zapewnia lepszy tui niż korzystanie apt-get.
Bakuriu
3
Kiedy korzystałem z systemu OS X, często stwierdziłem, że usunięcie *.apppliku jest niewystarczające, ponieważ instalacje aplikacji często zaśmiecały inne miejsca (np. Katalog Library, z pamięci). Ponadto, jeśli ręcznie budujesz ze źródła w Ubuntu make install, użyj checkinstallzamiast tego, aby umożliwić łatwe usunięcie.
Sparhawk
1
Nie używaj ./configure ; make ; make installdrogi. Wszystko czego potrzebujesz to nauka wspaniałego narzędzia fpm .
Deer Hunter
co to jest narzędzie fpm?
AlexStack

Odpowiedzi:

28

Nowa instalacja rzadko psuje system (chyba że robisz dziwne rzeczy, takie jak miksowanie źródeł i plików binarnych).

Jeśli używasz prekompilowanych plików binarnych w Ubuntu, możesz je usunąć i nie musisz się martwić o uszkodzenie systemu, ponieważ plik binarny powinien wypisać, co wymaga uruchomienia, a menedżer pakietów wyświetli listę programów, które możesz sprawdzić w tym programie.

Kiedy korzystasz ze źródła, musisz być bardziej ostrożny, aby nie usunąć czegoś krytycznego (jak glib). Podczas odinstalowywania ze źródła nie ma żadnych ostrzeżeń ani nic innego. Oznacza to, że możesz całkowicie zepsuć maszynę.

Jeśli chcesz odinstalować za pomocą apt-get, użyjesz, apt-get remove packagejak już wspomniano. Wszystkie programy korzystające z tego pakietu również zostaną odinstalowane i będziesz mieć możliwość ich przejrzenia.

Jeśli chcesz odinstalować, to ogólnie jest to proces make uninstall. Nie ma ostrzeżenia (jak powiedziałem powyżej).

make confignie zmieni twojego systemu, ale make installzrobi to.

Jako początkujący polecam używanie apt-getlub jakąkolwiek dystrybucję, której używasz do pakietów binarnych. Utrzymuje porządek i porządek i chyba, że ​​naprawdę tego chcesz, nie uszkodzi twojego systemu.

Mam nadzieję, że to wszystko wyczyści.

SailorCire
źródło
3
W przypadku odinstalowania bez śledzenia będziesz oczywiście używać --purgeopcji zapt-get
Hagen von Eitzen
16

Teoretycznie make uninstallnależy usunąć to, co make installdodane, a system nie gromadzi cruft. Problem oczywiście polega na tym, że nie wszystkie pliki makefile są sobie równe.

Niektórzy mogą pominąć uninstallregułę, pozostawiając ci ustalenie, co installzrobiła reguła. Co gorsza, jeśli reguła instalacji zastąpi podłączoną bibliotekę, głupia uninstallprocedura może przerwać zależności dla innego programu.

Najlepszym rozwiązaniem dla instalacji źródłowych jest użycie innego prefiksu niż pakiety zainstalowane przez systemowego menedżera pakietów. Apt instaluje pliki, aby /usr/użyć /usr/local/hierarchii dla instalacji źródłowych. To znacznie ułatwia śledzenie, które pliki należą do których pakietów i odinstalowanie nie spowoduje uszkodzenia systemu.

./configure --prefix=/usr/localdziała dla wielu skryptów konfiguracyjnych. Jeśli nie, możesz edytować Makefile ręcznie. Lub po prostu skopiuj pliki ręcznie.

Apt i inni menedżerowie pakietów śledzą, jakie pliki zainstalowali i ich odwrotne zależności, dzięki czemu ich funkcje odinstalowywania są bezpieczne.

Cudacki Wombat
źródło
15

Polecam użyć apt-get installdo zainstalowania dowolnego pakietu w systemie Linux i apt-get remove(nazwa pakietu) lub apt-get purge(nazwa pakietu), który usunie nie tylko pakiet główny, który chcesz odinstalować, ale wszystkie powiązane pakiety lub zależności, które zostały zainstalowane podczas instalacji.

Teraz, aby zachować czystość systemu, zalecamy użycie apt-get clean https://askubuntu.com/questions/144222/how-do-apt-get-clean-and-apt-get-clean-all-differ#144224 ( ten post jest interesujący), który usunie wszystkie pliki, które zostały pobrane podczas instalacji, ale nie są już potrzebne.

Innym poleceniem, które byłoby przydatne, jeśli chcesz usunąć wszystkie zależności zainstalowane w systemie, ale nie zostały one usunięte po odinstalowaniu apt-get autoremove.

Jeśli zainstalujesz pakiet za pomocą make i make install, będziesz odpowiedzialny za jego samodzielne odinstalowanie (może w pobranym pakiecie znajduje się plik README, który mówi, jak to zrobić), a także za próbę odinstalowania wszystkich powiązanych z nim zależności . Dlatego zawsze zaleca się instalowanie pakietów w Linuksie, które są oferowane przez menedżera pakietów dystrybucji, jeśli zrobisz to w ten sposób, możesz być pewien, że Twój pakiet został przetestowany na tyle, aby pracować z dystrybucją (smak Linuksa), którego używasz i jest bardzo mało prawdopodobne, aby uszkodzić twój system. Ponadto możesz mieć pewność, że Twój pakiet zostanie zaktualizowany w razie potrzeby, a jeśli zainstalujesz go samodzielnie, jesteś odpowiedzialny za to wszystko.

Mam nadzieję, że to pomoże :)

VaTo
źródło
11

Normalnym sposobem zarządzania zainstalowanymi aplikacjami w systemie Linux jest menedżer pakietów. Wybór menedżerów pakietów jest jedną z głównych rzeczy, które różnicują dystrybucje. Ubuntu, podobnie jak Debian (na którym jest oparty), używa dpkg i APT ; przez większość czasu wystarczy interakcja z jednym z interfejsów APT, npapt-get (linia poleceń), aptitude (linia poleceń lub tryb tekstowy) lub Synaptic (GUI).

Menedżer pakietów śledzi, które pliki należą do zainstalowanego programu. Podobnie jak w systemie Windows, programy mogą wykonywać dowolny kod w ramach procedury instalacji lub deinstalacji, ale zwykle zachowują się dobrze i nie psują innych programów. Ponadto (nie) kod instalacyjny jest napisany przez opiekuna pakietu, a nie przez autora (dla pakietów w głównej dystrybucji). W przeciwieństwie do systemu Windows istnieje ujednolicony interfejs instalacji, aktualizacji i deinstalacji: menedżer pakietów. Nie musisz szukać dezinstalatora (jeśli taki istnieje), wystarczy kliknąć ikonę „odinstaluj” w graficznym menedżerze pakietów lub uruchomićapt-get remove PACKAGENAME .

Jeśli potrzebujesz „egzotycznego” oprogramowania, być może będziesz musiał zainstalować go ręcznie, poprzez rozpakowanie archiwum lub kompilację ze źródła. Instalatory występujące w postaci programu wykonywalnego są rzadkie w świecie Linuksa. Bieganie make installma tendencję do rozprzestrzeniania się każdy program w ciągu kilku katalogów ( /usr/local/bin, /usr/local/man, /usr/local/lib, itd.). Aby utrzymać porządek, polecam użycie „menedżera pakietów biedaka”, takiego jak stow . Dzięki stow, każdy pakiet jest instalowany we własnym katalogu, a stownarzędzie zajmuje się tworzeniem dowiązań symbolicznych, tak aby polecenia zainstalowane przez pakiet znajdowały się w ścieżce wyszukiwania poleceń i tak dalej. Aby uzyskać więcej informacji, zobacz Śledzenie programów .

Gilles „SO- przestań być zły”
źródło
to „egzotyczne oprogramowanie” może napisać każdy, prawda? W jaki sposób to „egzotyczne oprogramowanie” staje się oficjalnie dostępne w dystrybucji? Czy ktoś przegląda kod źródłowy wiersz po wierszu? Jak na przykład Ubuntu decyduje się na dołączenie oprogramowania do polecenia APT-GET i zignorowanie innego?
AlexStack
1
@AlexStack Większość dystrybucji jest dokonywana przez wolontariuszy. Ubuntu jest sponsorowany przez Canonical, który płaci kilku osobom, ale nadal większość prac związanych z utrzymaniem pakietu jest wykonywana przez wolontariuszy. Najdokładniejszą odpowiedzią jest to, że Ubuntu zawiera oprogramowanie, które wolontariusz zdecydował się dołączyć. Mówiąc dokładniej, większość oprogramowania w Ubuntu pochodzi od Debiana, więc deweloper Debiana musiał zdecydować, że pakiet jest wart pracy, a oprogramowanie musi być zgodne z polityką (dopuszczalna licencja, niezbyt błędna).
Gilles „SO- przestań być zły”
@AlexStack nie ma gwarancji, że ktokolwiek przejrzałby konkretny fragment oprogramowania wiersz po wierszu, nawet jeśli to oprogramowanie jest dostępne w repozytoriach Ubuntu (tj. Poprzez domyślną instalację apt-getlub podobną). Ale umieszczają w repozytoriach tylko dość popularne programy, te, które mają wystarczającą liczbę użytkowników, aby mieć pewność, że w zasadzie robią to, co powinni.
David Z
8

Powinieneś spróbować użyć menedżera pakietów (apt-get, aptitude, synaptic lub aptdcon, centrum oprogramowania, mintinstall, ...), jeśli to możliwe. Użycie zadania make do instalacji jest bardzo surowe, nie ma gwarancji, że będzie miećuninstall odpowiednik i nie gwarantuje dobrej zabawy z resztą systemu (to tylko skrypt powiązany z systemem budowania make - iw przeciwieństwie do sprawdzonego pakietu, zadania make mogą zawierać dowolny kod wykonywalny, potencjalnie złośliwe oprogramowanie).

Jeśli nie znajdziesz potrzebnej wersji oprogramowania, może okazać się pomocne checkinstall( checkinstall make install).

PSkocik
źródło
3

Nie jestem ekspertem i nie wiem wiele na temat instalowania oprogramowania ze źródła, ale używając apt-get, możesz usunąć zainstalowane oprogramowanie za pomocą apt-get remove package-name. Aby usunąć również wszystkie pliki konfiguracyjne, użyj apt-get purge package-name. Najbezpieczniejszym sposobem na utrzymanie porządku w instalacji Linuksa jest używanie pakietów wyłącznie w oficjalnych repozytoriach. Gdy potrzebny jest pakiet, którego nie ma w oficjalnych repozytoriach, często można go znaleźć (ponieważ używasz Ubuntu) w PPA .

Gabe
źródło
apt-getnie ma pożytku dla PO, który używa configureimake install
roaima
3

Jak mówią inne odpowiedzi, obecnie typowe jest instalowanie zdecydowanej większości oprogramowania za pomocą wybranego przez ciebie menedżera pakietów. Jest to tak wygodne, że pewnie go przegapisz po powrocie do systemu Windows! W pewnym sensie różne „rynki” i „sklepy” idą w tym kierunku również w przypadku komercyjnych systemów operacyjnych.

Powiedziawszy to, pamiętam, że kiedy zacząłem uczyć się o Linuksie, byłem zaskoczony tym, jak zwykle instaluje się oprogramowanie. Podczas gdy w systemie Windows wszystkie pliki znajdują się w jednym katalogu poniżej c:\Programs, tradycyjny „uniksowy sposób” polega na rozproszeniu ich w „standardowych lokalizacjach” (szczegóły nie są tak ustandaryzowane, [zobacz LSB, aby uzyskać więcej informacji] [1] ), na przykład w /usr/local/binprzypadku plików wykonywalnych,/usr/local/doc dokumentacji i tak dalej.

W pewnym sensie system Windows „nie wie”, gdzie znajdują się pliki wykonywalne. Wie, że są „gdzieś pod c:\Program Files”, ale niewiele więcej. Skanowanie wszystkich tych katalogów w celu ich znalezienia jest lub było zbyt drogie. Link do pliku wykonywalnego zostałby więc wyraźnie umieszczony w znanej lokalizacji (menu Start) i właśnie tego użyłbyś do jego uruchomienia.

W systemach Unix / Linux twoja powłoka i większość innych programów w tym zakresie automatycznie będą szukać plików wykonywalnych lub innych zasobów w znanym zestawie lokalizacji. Dlatego właśnie, po prostu kopiując pliki do odpowiednich katalogów, automatycznie je „zobaczysz”, bez konieczności „rejestrowania” ich w dowolnym miejscu, aby użytkownicy wiedzieli o nich.

Oba mechanizmy mają swoje zalety i wady, ale przekonasz się, że podejście uniksowe jest zazwyczaj bardziej elastyczne.

Należy pamiętać, że istnieje wiele wyjątków i szczegółów, które sprawiają, że obraz nie jest tak wyraźny, jak to opisałem, ale myślę, że ten rodzaj wprowadzenia może być przydatny dla początkujących, aby przynajmniej zrozumieć podstawową logikę.

UncleZeiv
źródło
dzięki @unclezeif. Ten problem z „plikami rozproszonymi po całym miejscu” naprawdę mnie wkurza, ponieważ go nie rozumiem. Powiedziałeś, że podejście uniksowe jest zazwyczaj bardziej elastyczne. Czy możesz opracować proszę?
AlexStack
Na przykład dokumentacja jest w jednym miejscu, ikony są w jednym miejscu itp., Co w niektórych przypadkach jest naprawdę miłe! Mówiąc bardziej elastycznie, mam na myśli to, że w oparciu o całą ścieżkę możesz wykonywać następujące czynności: spawnować nową powłokę, w której zmienne środowiskowe są zmieniane, tak abyś widział pliki wykonywalne tylko w określonym katalogu, ograniczając w ten sposób (lub rozszerzając) swój wybór. To wszystko jest bardzo „proste”, ponieważ używasz tylko plików i zmiennych środowiskowych, aby osiągnąć duży stopień dostosowania.
UncleZeiv,
Innym przykładem jest: w zasadzie możesz zainstalować program w katalogu domowym, np. / Home / foo / bin, i po prostu dodać / home / foo / bin do środowisk ścieżkowych, bez dotykania systemu współdzielonego.
UncleZeiv
3

Myślę, że najlepszą radą jest tylko ten post na forum . Oto twoje opcje (2 i 3 są mniej więcej takie same pod względem efektu):

  1. Użyj menedżera pakietów i repozytorium. Oznacza to, że otrzymujesz aktualizacje, otrzymujesz oficjalne wersje, podpisane wersje itp. Itd. Itp.
  2. Jeśli nie możesz lub nie chcesz użyć pakietu z repozytorium, zbuduj pakiet dla oprogramowania i zainstaluj go za pomocą menedżera pakietów. Szczegółowe instrukcje, jak to zrobić w systemach opartych na Debianie, znajdują się w linku powyżej. Na początku wygląda przerażająco, ale jest naprawdę bardzo prosty, a zwłaszcza w przypadku Debiana dostępnych jest wiele skryptów, które wykonują za Ciebie całą ciężką pracę.
  3. Jeśli nie możesz uruchomić tej metody, użyj jej checkinstallzgodnie z zaleceniami innych. Jest to bardzo prosty zamiennik, aby zainstalować:

    $ ./configure
    $ make
    $ sudo checkinstall
    

    To powinno zbudować oprogramowanie w normalny sposób, a następnie uruchomić make installw ograniczonym środowisku, które śledzi to, co robi i buduje pakiet, który zrobiłby dokładnie te rzeczy. Następnie instaluje ten pakiet za pomocą menedżera pakietów. Usunięcie wtedy jest jak usunięcie dowolnego innego pakietu, tak jak w (2).

  4. Jeśli nie możesz lub nie chcesz użyć menedżera pakietów, cóż, więc użyj make install, tak myślę. I mam nadzieję, że opiekun oprogramowania utrzymuje procedurę odinstalowywania.
esme
źródło