Jaka jest różnica między tymi poleceniami?
sudo apt-get autoremove --purge packagenames
sudo apt-get remove --purge packagenames
sudo apt-get purge purge packagenmaes
sudo apt-get remove packagenames
sudo apt-get autoremove
źródło
Jaka jest różnica między tymi poleceniami?
sudo apt-get autoremove --purge packagenames
sudo apt-get remove --purge packagenames
sudo apt-get purge purge packagenmaes
sudo apt-get remove packagenames
sudo apt-get autoremove
remove
odinstalowuje pakiety nazwane po nim.autoremove
odinstalowuje wszystkie automatycznie zainstalowane pakiety, które nie są już potrzebne. Niepoprawne jest wyświetlanie nazw pakietów po autoremove
; zostaną zignorowane (i wszystkie kwalifikujące się pakiety zostaną usunięte), co prawdopodobnie nie jest tym, co zamierzasz.--purge
powoduje również usunięcie ogólnosystemowych plików konfiguracyjnych powiązanych z usuwanymi pakietami. Musi mu towarzyszyć polecenie, takie jak remove
lub autoremove
. --purge
Flag modyfikuje działanie polecenia; nie działa samodzielnie.purge
oznacza to samo co --purge remove
(co jest takie samo jak remove --purge
). Nie można powiedzieć purge
dwa razy; drugi purge
jest interpretowany jako nazwa pakietu purge
, który ma być d, co prawdopodobnie nie jest tym, co zamierzasz.Aby zrozumieć, co robią te polecenia i jak się różnią, pomaga (i prawdopodobnie jest nawet niezbędne) zrozumieć dwie koncepcje:
Zainstalowany pakiet jest instalowany ręcznie lub automatycznie .
Po określeniu pakietu do zainstalowania, który jest zainstalowany, jest on instalowany ręcznie .
Ale mogą być również instalowane inne pakiety. Większość pakietów ma zależności - inne pakiety, które należy zainstalować, aby działały zgodnie z przeznaczeniem. Podczas instalowania pakietu instalowane są jego zależności (tj. Inne pakiety, od których zależy), z wyjątkiem tych, które były wcześniej instalowane.
Jeśli pakiet nie jest określony przez Ciebie do zainstalowania, ale zamiast tego jest instalowany jako zależność od pakietu określonego do zainstalowania, jest on instalowany automatycznie .
Należy pamiętać, że jeśli masz zainstalowane dwa pakiety, a jeden z nich jest zależnością drugiego, nie oznacza to, że zależność jest instalowana automatycznie. Możliwe jest również, że zależność została zainstalowana ręcznie (tj. Określona przez Ciebie, na przykład zainstalowana przed lub w tym samym czasie, co pakiet, który jest od niej zależny).
Wreszcie:
apt-mark
polecenia), bez względu na to, w jaki sposób lub w jakich okolicznościach zostały one faktycznie zainstalowane.Zazwyczaj dla każdego automatycznie instalowanego pakietu będziesz mieć co najmniej jeden ręcznie zainstalowany pakiet, który zależy od niego (i który spowodował, że został on automatycznie zainstalowany). Jeśli jednak usuniesz wszystkie ręcznie zainstalowane pakiety, które zależą od automatycznie zainstalowanego pakietu, automatycznie zainstalowany pakiet nie będzie już potrzebny, ale nadal będzie zainstalowany.
apt-get autoremove
usuwa automatycznie zainstalowane pakiety, które nie mają już żadnych ręcznie zainstalowanych pakietów w zależności od nich.
Pakiet zawiera pliki, które mają pozostać takie same w każdym systemie, w którym zainstalowana jest ta wersja tego pakietu. Takie pliki zapewniają pliki wykonywalne, zasoby, dokumentację i inne „zasoby” dla zainstalowanych programów. Zwykle nazywaliśmy je „plikami” dostarczanymi przez pakiet.
Ale pakiet zawiera również inne pliki, które mają (ewentualnie) zostać zmienione. Są to tak zwane globalne (lub systemowe) pliki konfiguracyjne. Prawie zawsze są instalowane w /etc
katalogu i można je automatycznie i ręcznie modyfikować, aby zmienić zachowanie zainstalowanych programów. Na przykład sudo
ma plik konfiguracyjny /etc/sudoers
i katalog na więcej plików konfiguracyjnych /etc/sudoers.d
. Ten plik i wszystkie pliki dodane do tego katalogu określają, kto może korzystać sudo
w jaki sposób.
Zwykle pożądane jest, aby odinstalowanie pakietu, a następnie ponowne zainstalowanie go nie zmieniło jego zachowania (chyba że pliki pakietu były uszkodzone i dlatego oczywiście go ponownie zainstalowałeś). Dlatego zazwyczaj, gdy pakiet jest odinstalowywany, pliki pakietu są usuwane, ale pliki konfiguracji systemu pozostają niezmienione.
Po odinstalowaniu pakietu bez określenia, że jego systemowe pliki konfiguracyjne również powinny zostać usunięte, jest to nazywane „usuwaniem” pakietu.
Jeśli chcesz również usunąć pliki konfiguracji całego pakietu podczas odinstalowywania pakietu, nazywa się to „czyszczeniem” pakietu.
apt-get remove
usunie paczkę; oznacza to, że odinstaluje pakiet, ale pozostawi pliki konfiguracji systemu.
apt-get purge
oczyści paczkę; oznacza to, że odinstaluje pakiet, a także usunie swoje systemowe pliki konfiguracyjne.
Innym sposobem na wyczyszczenie pakietów jest użycie --purge
flagi. To nie mówi, apt-get
co robić; zamiast tego modyfikuje to, co oznaczają takie polecenia (lub „polecenia”) remove
. --purge
Flaga powoduje żadnych uninstallations pakietów towarzyszyć skreślenia systemowy plików konfiguracyjnych dla pakietu (ów) jest odinstalowane. Innymi słowy, --purge
flaga zmienia przeprowadzki w czystki.
Dlaczego mamy --purge
flagę, kiedy mamy purge
polecenie? W końcu nie jest sudo apt-get --purge remove packagename
równoważne z sudo apt-get purge packagename
. Są równoważne. Gdzie --purge
jest przydatna jest, gdy chcesz zmienić zachowanie poleceń innych niż remove
.
Załóżmy na przykład, że chcesz odinstalować automatycznie zainstalowane pakiety, które nie są już potrzebne (ponieważ w zależności od nich nie ma już żadnych ręcznie zainstalowanych pakietów), ale nie chcesz tylko usunąć tych automatycznie zainstalowanych pakietów, ale chcesz również usunąć ich systemowe pliki konfiguracyjne. Następnie możesz uruchomić:
sudo apt-get --purge autoremove
Rozważmy jeszcze jedno zastosowanie --purge
. Istnieje flaga o nazwie --reinstall
, która zmienia instalacje w ponowne instalacje. Oznacza to, że zwykle przy próbie zainstalowania pakietu, który jest już zainstalowany, nic się nie stanie lub (jeśli pakiet zostanie oznaczony jako zainstalowany automatycznie), pakiet zostanie oznaczony jako zainstalowany ręcznie. Ale z --reinstall
flagą zainstalowanie pakietu, który jest już zainstalowany, powoduje jego usunięcie, a następnie ponowne zainstalowanie :
sudo apt-get --reinstall install packagename
Załóżmy jednak, że chcesz usunąć ogólnosystemowe pliki konfiguracyjne ponownie instalowanego pakietu. Jest to dość powszechne; gdy pakiet nie działa i nie wiesz dlaczego, możesz spróbować zainstalować go ponownie, a także usunąć jego pliki konfiguracyjne, aby przywrócić domyślną konfigurację. Aby to osiągnąć, możesz uruchomić:
sudo apt-get --purge --reinstall install packagename
--reinstall
Instalacja zamienia reinstalacji (czyli usunięcie następuje instalacji), a --purge
zamienia część usuwania reinstalacji do czystki.
Teraz powinno być jasne dokładnie, co każdy z twojego przykładu apt-get
poleceń:
sudo apt-get autoremove --purge packagenames
Spowoduje to automatyczne zainstalowanie pakietów, które nie mają już żadnych ręcznie zainstalowanych pakietów, które od nich zależą. Oznacza to, że odinstalowuje te pakiety (co pociąga za sobą usunięcie ich plików), a także usuwa ich ogólnosystemowe pliki konfiguracyjne.
Tutaj packagenames
nic nie robi. W szczególności, jeśli zamierzasz po prostu usunąć pakiety, których nazwy są tam wymienione, nie będzie to działało tak, jak chcesz.
sudo apt-get remove --purge packagenames
To czyści packagenames
; zakładając, że packagenames
lista nazw pakietów jest oddzielona spacjami, wyczyści je wszystkie. Oznacza to, że odinstaluje je (co pociąga za sobą usunięcie ich plików pakietu), a także usunie ich systemowe pliki konfiguracyjne.
Jeśli którykolwiek z wymienionych w nim pakietów packagenames
nie zostanie zainstalowany, jego obecność na liście nie przyniesie żadnego efektu (poza tym, że zostaniesz poinformowany, że nie został zainstalowany). Jeśli podasz nazwy pakietów, które nie są nazwami rzeczywistych pakietów, polecenie zakończy się niepowodzeniem z błędem.unable to locate packagename
sudo apt-get purge purge packagenmaes
Jeśli usuniesz jedno z wystąpień purge
tego polecenia, będzie ono równoważne z poprzednim. W obecnej postaci próbuje wyczyścić pakiet o nazwie purge
, a także wyczyścić pakiety wymienione w packagenames
. Ponieważ purge
nie jest to nazwa żadnego pakietu, nie powiedzie się komunikat o błędzie.
sudo apt-get remove packagenames
Spowoduje to usunięcie pakietów wymienionych w packagenames
, co pociąga za sobą usunięcie ich plików pakietów. Nie usuwa to ich ogólnosystemowych plików konfiguracyjnych (ponieważ jest to jedynie usunięcie, a nie wyczyszczenie).
sudo apt-get autoremove
Spowoduje to odinstalowanie automatycznie zainstalowanych pakietów, które już nie mają zależnych od nich pakietów. Oznacza to usunięcie ich plików pakietu, ale nie ich systemowych plików konfiguracyjnych (to znaczy, że jest to usunięcie, ale nie czyszczenie).
Aby uzyskać więcej informacji na temat korzystania apt-get
, polecam jego stronę podręcznika . Więcej ogólnych informacji znajduje się w tym przewodniku .