Jaki jest poprawny sposób całkowitego usunięcia aplikacji?

491

Przeszukałem sieć w poszukiwaniu takich informacji i znalazłem różne wiersze poleceń, takie jak te:

sudo apt-get remove application
sudo apt-get remove application*

sudo apt-get remove --purge application
sudo apt-get remove --purge application*

sudo apt-get purge application
sudo apt-get purge application*

A więc, jaki jest właściwy sposób? Czy konieczne jest użycie tego "*"?

Następnie znalazłem te polecenia:

sudo updatedb
sudo locate application
sudo rm -rf (file/folder name)
    
zadawane user48949 14.09.2012, 23:54
źródło

8 odpowiedzi

654
  • apt-get remove packagename

    usunie pliki binarne, ale nie pliki konfiguracyjne ani pliki danych pakietu packagename . W tym czasie instalacje pozostaną niezmienione w czasie instalacji.

  • apt-get purge packagename lub apt-get remove --purge packagename

    usunie około wszystkiego w pakiecie packagename , ale nie zależność zainstalowanych razem z nim podczas instalacji. Oba polecenia są równoważne.

    Jest to szczególnie przydatne, gdy chcesz "zacząć wszystko od nowa" z aplikacją, ponieważ pomieszałeś konfigurację. Jednak nie usuwa plików konfiguracyjnych ani danych znajdujących się w katalogach domowych użytkowników, zwykle w ukrytych folderach. Nie ma łatwego sposobu na ich usunięcie.

  • apt-get autoremove

    usuwa osierocone pakiety, tj. instaluje pakiety, które były instalowane jako zależność, ale już ich nie ma. Użyj tego po usunięciu pakietu, który ma zainstalowane zależności, które już Cię nie interesują.

  • aptitude remove packagename lub aptitude purge packagename (podobnie)

    spróbuje także usunąć inne pakiety, które są wymagane przez packagename , ale nie są wymagane przez żadne pozostałe pakiety. Zauważ, że aptitude pamięta tylko informacje o zależnościach dla pakietów, które zainstalował.

I wiele więcej istnieje. Można używać niższego poziomu dpkg (zaawansowane) lub narzędzi GUI, takich jak Muon, Synaptic, Software Center itp. Nie ma jednego "właściwego sposobu" usuwania aplikacji lub wykonywania innych zadań związanych z zarządzaniem pakietami .

Znajdowana lista to tylko przykłady. Upewnij się, że rozumiesz znaczenie i wypróbuj to, co chcesz zrobić przed zaakceptowaniem działania (musisz nacisnąć Y , zanim faktycznie wykona proponowane działania).

Wersja gwiazdki w pytaniu jest prawdopodobnie nieprawidłowa ; apt-get akceptuje wyrażenie regularne, a nie wzór globu jako powłokę. Co się dzieje z

sudo apt-get remove application*

jest następujące:

  1. Powłoka próbuje rozszerzyć application* patrząc na pliki w bieżącym katalogu. Jeśli (jak zwykle) nic nie znajdzie, zwraca niezmieniony wzorzec globu (jeśli przyjmiemy bash z domyślnym zachowaniem --- zsh spowoduje błąd).

  2. apt-get usunie pakiety, których nazwa zawiera ciąg spełniający wyrażenie regularne application* , czyli applicatio , po którym następuje dowolna liczba n : applicatio , application , applicationn , libapplicatio , itd.

  3. Aby zobaczyć, jak może to być niebezpieczne, spróbuj (bez roota dla podwójnego bezpieczeństwa) apt-get -s remove "wine*" ( -s będzie symulować rzecz zamiast robić to) --- powie, że usunie wszystkie pakiety ma "wygrać" w swoim imieniu i zależnym, prawie cały system ...

Prawdopodobnie polecenie, które miało na myśli, jest naprawdę

 sudo apt-get remove "^application.*"

(zanotuj cytaty i kropkę), które usunie wszystkie pakiety, których nazwa zaczyna się od application .

Te polecenia,

sudo updatedb                  # <-- updates the locate database (index). harmless
sudo locate application        # <-- locates the file 'application'. harmless
sudo rm -rf (file/folder name) # <-- removes files/dirs recursively. dangerous.

są całkowicie poza zakresem zarządzania pakietami. Nie usuwaj plików należących do pakietów bez użycia menedżera pakietów! Będzie się mylić i jest niewłaściwy sposób robienia rzeczy.

Jeśli nie wiesz, do którego pakietu należy plik, spróbuj tego:

dpkg -S /path/to/file
    
odpowiedział gertvdijk 15.09.2012, 00:04
źródło
94

W przypadku Ubuntu 12.04 i być może wyższej poprawna metoda to:

sudo apt-get --purge autoremove packagename

Szczegółowe tutaj .

Nie używaj packagename* , ponieważ może to usunąć niezamierzone pakiety i spowodować więcej problemów niż rozwiązuje. Lub, jeśli musisz, uruchom przynajmniej najpierw flagę -s , --simulate , --dry-run , aby zobaczyć dokładnie, co zrobi bez tego.

    
odpowiedział Kurtosis 20.11.2013, 21:01
źródło
17

Możesz użyć tego polecenia:

sudo apt-get purge --auto-remove packagename

To usunie wymagane pakiety wraz z zależnościami, które są zainstalowane z tymi pakietami. Opcja --auto-remove (będącą aliasem autoremove ) działa podobnie do sudo apt-get autoremove . Za pomocą tego polecenia możemy uruchomić pojedyncze polecenie:

sudo apt-get purge --auto-remove packagename

Zamiast:

sudo apt-get purge packagename
sudo apt-get autoremove
    
odpowiedział pl_rock 16.09.2015, 22:08
źródło
7

Możesz bezpiecznie używać sudo apt-get remove --purge application lub sudo apt-get remove applications 99% czasu. Kiedy używasz flagi purge , po prostu usuwa wszystkie pliki konfiguracyjne. Które mogą być lub nie być, co chcesz, w zależności od tego, czy chcesz ponownie zainstalować wspomnianą aplikację. application* będzie pasował do wszystkich aplikacji, które zaczynają się od application , które są zwykle wtyczkami, dodatkowymi funkcjami itd. Głównej usuwanej aplikacji. tj.

sudo apt-get remove gedit*

usunie gedit , gedit-plugins i gedit-common . Zazwyczaj nie jest to konieczne, ponieważ większość wtyczek / powiązanych programów zależy od głównej aplikacji i zostanie automatycznie usunięta (lub oznaczona do usunięcia) po odinstalowaniu głównej aplikacji.

Ostatnim poleceniem jest usunięcie resztek z aplikacji, które są znane z niechlujnych deinstalatorów, i to po prostu usunięcie wszelkich pozostałości aplikacji.

    
odpowiedział reverendj1 15.09.2012, 00:05
źródło
5

Otrzymałem kilka komunikatów o błędach, które usunęły paczkę. Jedynym sposobem, jaki udało mi się znaleźć, było:

mv /var/lib/dpkg/info/package.* /tmp/
dpkg --remove --force-remove-reinstreq package

Znalazłem, że chociaż używam tylko

dpkg --remove --force-remove-reinstreq package

nie usuwa pakietu, pokazuje mi poprawną ścieżkę do pliku, do którego można przejść:

mv /var/lib/dpkg/info/package.* /tmp/

Zastąp pakiet nazwą swojej aplikacji. Użyj sudo w Ubuntu, zostań rootem w Debianie.

    
odpowiedział DangerFireBob 26.02.2015, 10:26
źródło
3

Znalazłem to polecenie w Internecie.

dpkg --purge --force-depends application

link .

    
odpowiedział vrcmr 15.09.2012, 00:10
źródło
1

To zależy od aplikacji, którą chcesz usunąć. Zawsze upewnij się, że sprawdzasz jego zależności przed wydaniem polecenia yes. Gdy usuniesz coś za pomocą wiersza poleceń, będzie on czasami pokazywał garść bibliotek, które nie są już potrzebne. Można je usunąć za pomocą apt-get autorove.

Pamiętaj, że używając poleceń, takich jak sudo apt-get remove --purge nazwa_aplikacji, możesz usunąć pewne zależności, które są wymagane przez inne aplikacje i, jako takie, mogą złamać twój system.

Jeśli chcesz zrobić to w bezpieczniejszy sposób, zawsze możesz go usunąć za pomocą centrum oprogramowania lub apt-get removenamename. Jeśli zależności nie są już potrzebne, wydaj apt-get autorove później.

    
odpowiedział gustavokrm 15.09.2012, 00:10
źródło
1

Chciałem tylko wyjaśnić jedną rzecz, która wydaje się być źródłem nieporozumień. Narzędzie dpkg nie wie ani nie śledzi zależności między pakietami w stosunku do siebie, co było dużym powodem, dla którego wierzyłem, że apt został opracowany. Możesz przeczytać o tym w sekcji 8.6 na tej stronie. Często zadawane pytania dotyczące Debiana GNU / Linux - Narzędzia do zarządzania pakietami Debiana

  • Z apt: Jeśli chciałem wyczyścić pakiet A i ma on zależność nazywa się pakiet B, a pakiet B nie ma żadnych innych zależnych pakietów opakowanie A i B zostaną wyczyszczone. Jeśli pakiet B DID ma inne zależne pakiety, a następnie tylko pakiet A zostanie wyczyszczony.

  • Z dpkg: Jaka zależność? Właśnie powiedziałeś mi, żebym usunął tę cholerną ... pakiet, więc to właśnie zrobiłem! Złe planowanie z twojej strony nie jest możliwe Stanowi awarię z mojej strony.

Mając to na uwadze, oto dwie jednolinijki, które mogą być użyte dla każdej metody oczyszczania:

dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --dry-run --purge

apt-get autoremove -y; apt-get --dry-run purge -y $(dpkg --list |grep '^rc' |awk '{print $2}')

Usuń --dry-run , aby wykonać rzeczywistą operację czyszczenia, zamiast zgłaszać, jakie działania miałoby podjąć.

    
odpowiedział Travis R. 24.08.2018, 01:32
źródło

Przeczytaj inne pytania na temat tagów