Zainstalowałem Carpadio na mojej instalacji Xubuntu (Live USB), która następnie ściągnęła ponad 50 pakietów z, jak sądzę, strony Ubuntu repozytorium. Teraz chciałbym to cofnąć. Jednak przez całe moje polowanie nie mogę znaleźć nic bardziej użytecznego niż polecenie Jak odwrócić sudo apt get install , co sugeruje apt-get purge
. Nie jest to przydatne, ponieważ wystarczy usunąć 2 pakiety (carpadio i carpadio-gnomepanel).
/var/log/apt/history.log
zawiera listę wszystkich pakietów zainstalowanych wraz z tym poleceniem. Zastanawiałem się więc, czy istnieje jakiś prosty sposób na usunięcie ich wszystkich ? W przeciwnym razie mogę po prostu zainstalować ponownie, to i tak była nowa instalacja, ale jestem ciekawy.
Mała próbka dziennika historii (1 / 5-1 / 10 całej listy)
Wiersz poleceń: apt-get install cardapio-gnomepanel
Zainstaluj: libdbusmenu-qt2: amd64 (0.9.2-0ubuntu1, automatyczny), python-packagekit: amd64 (0.7.2-4ubuntu3, automatyczny), cup-pk-helper: amd64 (0.2.1.2-1ubuntu0.1, automatyczny) , geoclue: amd64 (0.12.0-1ubuntu12, automatyczny), jedność: amd64 (5.18.0-0ubuntu1, automatyczny), drukarki wskaźnikowe: amd64 (0.1.6-0ubuntu1, automatyczny), libevolution: amd64 (3.2.3- 0ubuntu6, automatyczny), libqt4-deklaratywny: amd64 (4.8.1-0ubuntu4.3, automatyczny), libmtp9: amd64 (1.1.3-1ubuntu0.1, automatyczny), tracker-miner-fs: amd64 (0.14.0-2ubuntu1 , automatyczny), gir1.2-rb-3.0: amd64 (2.96-0ubuntu4.2, automatyczny), python-aptdaemon.pkcompat: amd64 (0,43 + bzr805-0ubuntu7, automatyczny), gnome-media: amd64 (3.4.0- 0ubuntu3.1, automatyczny), metacity: amd64 (2.34.1-1ubuntu11, automatyczny), nautilus: amd64 (3.4.2-0ubuntu6, automatyczny), libcompizconfig0: amd64 (0.9.7.0 ~ bzr428-0ubuntu6, automatyczny), compiz- wtyczki-domyślne:amd64 (0.9.7.12-0ubuntu1, automatyczny), libunistring0: amd64 (0.9.3-5, automatyczny), libebackend-1.2-1: amd64 (3.2.3-0ubuntu7, automatyczny), ubuntu-docs: amd64 (12.04.6 , automatyczny), python-mako: amd64 (0.5.0-1, automatyczny),
Wszystkim, którzy zasugerowali autoremove
: nie jestem pewien dlaczego, ale dostałem tylko 1 inny pakiet związany z pythonem (python-keybinder lub coś takiego) jako „niepotrzebny” i to wszystko, co autorove mógł usunąć.
Pomiędzy instalacją a odinstalowaniem instalowano tylko poważną zmianę xubuntu-restricted-extras
.
sudo apt-get install -s package
tam, gdzie-s
oznacza symulację ipackage
zostanie zastąpiona nazwą odpowiedniego oprogramowania.cardapio-gnomepanel
pakiet?apt-get remove carpadio
zabrałem.autoremove
nie pracuje dla ciebie. Albo jakoś oznaczyłeś teraz wszystkie pakiety jako zainstalowane ręcznie, albo istnieje oczywiste nieporozumienie. To bardzo proste:apt-get autoremove
po prostu usuwa wszystkie automatycznie zainstalowane oznaczone pakiety bez powodu, aby je teraz mieć. Jeśli to nie działa, myślę, że zmieniłeś coś w swoim systemie, o czym nie powiedziałeś w swoim pytaniu.Odpowiedzi:
Zasadniczo musisz zarówno
apt-get remove
(lub apt-get purge) pakiet, a następnie uruchomić goapt-get autoremove
, aby przywrócić instalacjępackage-one
.Spójrzmy na cały proces:
sudo apt-get install package-one
instaluje 50 zależności z oznaczeniem „automatyczny”, co można również zobaczyć w fragmencie dziennika w swoim pytaniusudo apt-get purge package-one
Wyrzuca (czystki) tylko jeden, ale zrobić uruchomić to!Wszystkie poniższe działania instalacyjne (jeśli je uruchomisz) przyniosą komunikat informacyjny z niepotrzebnymi już pakietami:
Ta lista jest w zasadzie tylko listą wszystkich pakietów oznaczonych jako „automatyczne” bez odwrotnej zależności od nich. Innymi słowy, nie ma powodu, aby instalować je w zakresie zarządzania pakietami.
Uwaga: instalacja nie jest wymagana! To tylko wykazanie, że APT jest mądry, aby powiedzieć ci o twoich niepotrzebnych pakietach!
sudo apt-get autoremove --purge
usuwa je (czyści)Więcej informacji
Oficjalna dokumentacja na
autoremove
stronieapt-get(8)
man:Jaki jest prawidłowy sposób całkowitego usunięcia aplikacji?
źródło
autoremove
.autoremove
nie pomogło.sudo apt-get update
wystarczające?Jeśli chcesz usunąć pakiet i jego zależności, które zostały zainstalowane w tym czasie, powinieneś użyć:
ale aby cofnąć
apt
akcje, możesz użyćapt-undo
skryptu. Jest to prosty skrypt, który może cofnąćapt
czynności wykonywane w systemie Ubuntu. Należy zauważyć, że ten skrypt może działać tylko wtedy, gdy użyjesz go zamiastapt-get
instalować / aktualizować / usuwać / czyścić / obniżać pakiety.Aby zainstalować
apt-undo
w Ubuntu, uruchom następujące polecenia w terminalu:stosowanie:
Aby cofnąć, powyższe
aptitude
akcje uruchamiają następujące polecenia w terminalu:źródło
Wykorzystaj moc Uniksa. Weź linię pliku dziennika, którą masz, i stwórz polecenie, które cofnie to, co zrobił apt. Na przykład:
Abyś mógł użyć tego usuwania wszystkich przypadkowo zainstalowanych pakietów, biorąc pod uwagę odpowiedni wiersz z pliku dziennika:
(Użyłem
perl
zamiast tego,sed
ponieważsed
używa rodzaju wyrażeń regularnych, które nie obsługują niepochodnych dopasowań, co było najłatwiejszym sposobem konstruowania tego, czego potrzebowałem)źródło
apt
dziennika do nowego pliku, a następnie zastosowałem go do tego:perl -pe 's/\(.*?\)(, )?//g' /path/to/apt-history.log
Potem wszystko, co zrobiłem, to wstawienie tego wyjściasudo apt-get remove
i byłem gotowy do pracy!Po usunięciu jeden pakiet, a można go usunąć dokładnie dodając --purge, bo
apt-get remove --purge <package>
powinno dać ci wiadomość, że pakiety biblioteczne to wciągnięta zostały zainstalowane automatycznie i nie są już konieczne, w tym momencie można uruchomićapt-get autoremove
do Usuń ich.źródło
Postępuj zgodnie
sudo apt-get purge packagename
zO ile nie jest to metapakiet, powinno to załatwić.
Zobacz też często zadawane pytania na stronie Jak ręcznie usunąć wszystkie pliki Cardapio? .
źródło
new_file.txt
perl -pe 's/\(.*?\)(, )?//g' /path/to/new_file.txt
sudo apt-get remove
[wklej tutaj zawartość schowka]Gotowy.
Zasadniczo musimy sformatować listę pakietów z logu apt w coś, co apt-get może zrozumieć. Nawiasy, słowa pomiędzy nimi i przecinki muszą iść, więc w tym miejscu pojawia się perl. Tak, istnieją lepsze (bardziej wydajne) sposoby - ale zrobiłem to, jest łatwy do zrozumienia i działa.
źródło
Aby cofnąć ostatnią instalację apt, możesz również użyć czegoś takiego:
Spowoduje to przechwycenie ostatniej instalacji apt z historii i usunięcie wszystkich zainstalowanych tutaj pakietów.
Możesz utworzyć funkcję o nazwie aptpurgelastinstall, aby mieć ją zawsze pod ręką (doda kod do ~ / .bashrc):
Teraz wystarczy wpisać w powłoce aptpurgelastinstall, aby ponownie wykonać ostatnią instalację.
źródło
Jeśli właśnie dodałeś ppa i chcesz przywrócić, musisz wykonać czynności opisane poniżej. Zrozum, że to może się nie powieść, gdy zainstalujesz inne pakiety, których nie chcesz odinstalować. Jestem pewien, że można to zrobić za pomocą skryptu. Osobiście uważam, że powinno to być częścią apt, i powinna istnieć lepsza administracja, które pakiety są instalowane z powodu zależności, a które instalowane są na żądanie użytkownika.
1) usuń ppa z /etc/apt/sources.list Pamiętaj, kiedy dodałeś ppa. Jeśli masz szczęście, nie musisz być precyzyjny.
2) sporządzić listę elementów do ponownej instalacji, od momentu zainstalowania PPA: cat /var/log/dpkg.log | grep 'upgrade'
3) Zrób listę rzeczy do usunięcia, od momentu zainstalowania PPA: cat /var/log/dpkg.log | grep 'install'
4) usuń wszystkie pakiety z kroku 3: sudo apt-get remove {lista pakietów z kroku 3}
5) zainstaluj ponownie wszystkie pakiety z kroku 2: sudo apt-get install --reinstall {lista pakietów z kroku 2}
6) Jeśli coś poszło nie tak i nie możesz znaleźć rozwiązania, odłóż PPA i zainstaluj ponownie wszystkie pakiety z dwóch list.
źródło
Wiem, że to dość stare pytanie, ale przyszedłem tutaj, szukając pomocy i może mogę komuś pomóc. Po instalacji miałem sytuację podobną do tej w @ Karthik-T
unity8-desktop-session-mir
. Wiem, że to duży. Pociągnął za sobą 233 paczki.Używając
autoremove
, usuwam tylko 34 z nich. Chodzi o to, że podczasunity8-desktop-session-mir
instalacji usunął dwa pakiety (python3-aptdaemon.pkcompat
ievolution-data-server-online-accounts
). Jest napisane w/var/log/apt/history.log
, poInstall
części.Aby całkowicie cofnąć instalację Unity 8, wydałem następujące informacje:
sudo apt-get purge unity8-desktop-session-mir
sudo apt-get --purge autoremove
sudo apt-get install python3-aptdaemon.pkcompat evolution-data-server-online-accounts
(usunęło 8 pakietów związanych z Unity 8)sudo apt-get --purge autoremove
Nie usunie to absolutnie wszystkiego, co wcześniej zainstalowałeś, ale w niektórych przypadkach jest wystarczająco dobre.
PS: być może
autoremove
drugi krok nie jest konieczny, ponieważ wydałem ponownie w czwartym kroku.źródło
Technicznie operacje „usuń” lub „autorove” nie są „cofane”, chociaż można je wykonać tak, aby wykonały zadanie wystarczająco dobrze przez większość czasu.
Domyślnie apt-get pozostawia pakiety, o ile nie określisz tego
-o APT::Suggests-Important=0 -o APT::Recommends-Important=0
Bardziej niezawodne jest spojrzenie na apt
history.log
i odinstalowanie wszystkich zainstalowanych pakietów. Utworzyłem mały skrypt oparty na węzłach, aby ułatwić ten proces:https://github.com/rolfen/apt-history
Oto kolejne, bardziej ręczne podejście do „wycofywania” zmian:
https://unix.stackexchange.com/a/236711
źródło