Czy mogę usunąć apt za pomocą apt?

45

Wiem, że mogę użyć apt-get remove <package>do usunięcia programu.

Ale aptto sam program. Czy mogę użyć, apt-get remove aptaby go usunąć, czy też mógłby się pomylić w połowie?

Tim
źródło
2
Czy to pytanie rzeczywiste czy tylko hipotetyczne? W przypadku 1: wypróbuj. W przeciwnym razie myślę, że powinien być w stanie oczyścić się, jeśli nie spróbuje uruchomić żadnego ze swoich komponentów po ich usunięciu. Pliki, które są już otwarte, można usunąć bez problemów.
Bajt Dowódca
@ByteCommander To jedno i drugie, ale nie mogę teraz tego wypróbować.
Tim
13
Państwo może , ale prawdopodobnie nie powinien . Linux rzadko pyta, dlaczego jego użytkownik chce strzelić sobie w stopę, po prostu zakłada, że ​​masz dobry powód i pozwala pociągnąć za spust ...
Shadur
1
Dla kompletności, dnf Fedory nie pozwoli ci tego zrobić. # dnf remove dnf Dependencies resolved. Error: The operation would result in removing the following protected packages: dnf.
Davidmh,
Cóż za ciekawie złe pytanie! Logicznym następstwem jest: czy można się z tego zregenerować, czy też wymaga całkowitej ponownej instalacji?
KlaymenDK

Odpowiedzi:

78

APT pozwala symulować polecenia za pomocą tej opcji -s. Możesz spróbować tego samodzielnie, wydając polecenie apt-get -s remove apt( sudoniepotrzebne).

Daje to następujące dane wyjściowe:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  apturl-common xul-ext-ubufox
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  apt apt-utils apturl nautilus-share python3-software-properties
  software-properties-common software-properties-gtk ubuntu-desktop
  unattended-upgrades
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
  apt
0 upgraded, 0 newly installed, 9 to remove and 0 not upgraded.
Remv ubuntu-desktop [1.341]
Remv nautilus-share [0.7.3-1ubuntu5]
Remv apturl [0.5.2ubuntu9]
Remv software-properties-gtk [0.96.13.1]
Remv software-properties-common [0.96.13.1]
Remv python3-software-properties [0.96.13.1]
Remv unattended-upgrades [0.86.2ubuntu1]
Remv apt-utils [1.0.10.2ubuntu1]
Remv apt [1.0.10.2ubuntu1]

Tak więc odpowiedź powinna brzmieć: tak, możesz.

Causeon
źródło
8
Nie jestem pewien, czy tryb symulacji apt obejmuje pełny opad czegoś takiego. Z pewnością byłby to przypadek skrajny, do którego kod może się zwrócić lub nie.
Sparhawk
12
Nie wymaga to sudo( -stryb nie wprowadza żadnych zmian), więc prawdopodobnie lepiej jest go uruchomić bez sudo środków ostrożności.
Fałszywe imię
3
Apt może być w stanie ustalić, jak usunąć apt. Ale czy może to rzeczywiście zrobić? Łatwo sobie wyobrazić, że może usunąć plik, od którego później będzie zależał, pozostawiając instalację w niespójnym stanie.
user253751
1
@immibis Byłbym bardziej zaniepokojony tym, że usuwam dpkg. Apt sam mówi po prostu dpkg, co ma robić, dpkg właśnie wykonuje (nie) instalacje.
Random832
1
Jeśli więc apt powie dpkg, co ma robić, co się stanie po usunięciu dpkg ... lol
SuperSluether
30

Możesz...

sudo apt-get remove apt
Reading package lists... Done
Building dependency tree      
Reading state information... Done
The following packages will be REMOVED:
  apt apt-utils apturl nautilus-share python3-software-properties
  software-center software-properties-common software-properties-gtk
  ubuntu-desktop ubuntu-extras-keyring ubuntu-minimal unattended-upgrades
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
  apt
0 upgraded, 0 newly installed, 12 to remove and 0 not upgraded.
After this operation, 9,031 kB disk space will be freed.
You are about to do something potentially harmful.
To continue type in the phrase 'Yes, do as I say!'
?] Yes, do as I say!
(Reading database ... 179817 files and directories currently installed.)
Removing ubuntu-desktop (1.327) ...
Removing nautilus-share (0.7.3-1ubuntu5) ...
Removing apturl (0.5.2ubuntu4) ...
dpkg: warning: while removing apturl, directory '/usr/lib/python3/dist-packages/AptUrl/gtk/backend' not empty so not removed
Removing software-properties-gtk (0.94) ...
dpkg: warning: while removing software-properties-gtk, directory '/usr/lib/python3/dist-packages/softwareproperties/gtk' not empty so not removed
Removing software-properties-common (0.94) ...
Removing python3-software-properties (0.94) ...
Removing unattended-upgrades (0.82.8) ...
Removing ubuntu-minimal (1.327) ...
Removing apt-utils (1.0.9.2ubuntu2) ...
Removing software-center (13.10-0ubuntu4.1) ...
Removing ubuntu-extras-keyring (2010.09.27) ...
OK
Removing apt (1.0.9.2ubuntu2) ...
Processing triggers for man-db (2.7.0.2-2) ...
Processing triggers for gconf2 (3.2.6-2ubuntu1) ...
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for shared-mime-info (1.2-0ubuntu3) ...
Processing triggers for gnome-menus (3.10.1-0ubuntu2) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu2) ...
Processing triggers for bamfdaemon (0.5.1+14.10.20140925-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for mime-support (3.55ubuntu1) ...
Processing triggers for dbus (1.8.8-1ubuntu2) ...
Processing triggers for libc-bin (2.19-10ubuntu2) ...

i zostanie ostrzeżony, że zamierzasz zrobić coś bardzo destrukcyjnego. Muszę powiedzieć ... lista pakietów wygląda przerażająco, jeśli chodzi o oszczędność miejsca poniżej 6000 KB: D

Kończy się, ale nie ma odwrotu za pomocą „apt-get”. Centrum oprogramowania Ubuntu nie będzie już działać i należy użyć „dpkg”, aby ponownie zainstalować menedżera pakietów (i ręcznie również zainstalować wszystkie zależności).

Rinzwind
źródło
12
musiałby użyć „dpkg”, aby ponownie zainstalować menedżera pakietów (i ręcznie również zainstalować wszystkie zależności) , innymi słowy,sudo apt-get remember-what-2002-was-like
user1717828,
Nie mógłbyś wtedy uruchomić się na Live CD chrooti apt-get, podobnie jak Arch?
Sparhawk
1
@Sparhawk Nie wiesz, do czego dążysz; po chroot znajdujesz się w katalogu głównym swojego normalnego systemu i szukałbyś apt-get tam, który usunąłeś. Myślę, że apt-get (a może to dpkg) pozwala na określenie alternatywnego katalogu głównego, ale nie mogę szybko znaleźć sposobu, w jaki to zrobiłbyś.
CVn
Żaden z usuwanych pakietów nie jest szczególnie „przerażający” IMO, z wyjątkiem oczywiście samego apt.
Random832
@ MichaelKjörling Myślałem, że możesz uruchomić ręczną ścieżkę do apt-get, instalując w nowym „katalogu głównym”, ale zapomniałem, że potrzebujesz również wszystkich plików config / cache. Twoja ewentualna sugestia byłaby jednak z pewnością czystsza (jeśli jest taka opcja).
Sparhawk
12

Kiedyś, kiedy uruchomiłem CoreUbuntu, zainstalowałem błędny pakiet ze źródła, który aptuznał za przestarzały apt. Następnym razem, gdy uruchomiłem apt autoremove, nie spojrzałem na listę oprogramowania do usunięcia i znalazłem się aptna liście.

Jakież było moje zdziwienie następnym razem wpisałem apt install <package-name>i dostał The program 'apt' is currently not installed. You can install it by typing: sudo apt-get install apt.

Na szczęście, z jakiegoś powodu, autoremovenie zdejmować apt's zależności więc wszystko, co musiałem zrobić, to wget aptjest .debarchiwum i reinstall użyciu dpkg -i.


Jak pokazano w innych odpowiedziach, jeśli usuniesz za apt pomocą apt , będziesz miał większe kłopoty z powodu zależności, które próbuje rozwiązać.

Uważam to za interesujące, ale w rzeczywistości (z pewnością dla Debiana, a może do pewnego stopnia Fedora / openSUSE?) Wiele nowoczesnych dystrybucji jest zdefiniowanych i zbudowanych w dużej mierze na infrastrukturze dostarczonej przez wybranego przez nich menedżera pakietów.

kot
źródło
5
Założę się, że powodem, dla którego aptnie usunąłem zależności, jest to, że zainstalowany przez ciebie pakiet błędny zawierał je zgodnie z wymaganiami. Ma sens, jeśli ten pakiet miał być zamiennikiem.
Dmitrij Grigoriew
5

Technicznie rzecz biorąc, apt nie może usunąć apt ... ponieważ apt nie wie, jak usunąć, zainstalować lub zaktualizować pakiety. Zadania instalowania, usuwania, aktualizowania i konfigurowania pakietów są pozostawione dpkg. Chociaż możesz powiedzieć aptowi, aby usunął pakiet o nazwie „apt”, sprawdza on odwrotne zależności pakietu apt, bierze pod uwagę te pakiety i nakazuje dpkg ich usunięcie. Co widać w innych odpowiedziach .

Nawet bez apt możesz używać dpkg do instalowania, usuwania lub aktualizacji pakietów, po prostu bardziej bolesne będzie śledzenie zależności i potrzebnych aktualizacji, co jest racją bytu apt.

Braiam
źródło
Tak, apt jest naprawdę prostszym frontendem dpkg, a jeśli go usuniesz, dpkgto czy naprawdę jest to już Ubuntu?
kot
@cat Myślę, że tak będzie ... dopóki nie wyczyścisz pakietu ani nie usuniesz /var/lib/dpkg/statuspliku. Jeśli chcesz, możesz odzyskać dpkg.
Braiam
1

Oczywiście, że możesz. Apt i dpkg same w sobie są pakietami i powinny być w stanie aktualizować się same, więc istnieją przepisy dotyczące ich usuwania; inaczej /var/lib/dpkg/info/dpkg.prermi /var/lib/dpkg/info/dpkg.postrmnie miałby powodu do istnienia :)

Jeśli przypadkowo usunąłeś je w sposób, który pozostawił cię bez dpkg, nadal możesz ręcznie rozpakować archiwum .deb dla dpkg, chyba że pozbyłeś się również binutils, tar, gzip / bzip2.

--purgena każdym pakiecie związanym z apt toolchain może jednak przysporzyć ci nieprzyjemnych problemów; trudno powiedzieć, do czego należą określone pliki /var/lib/dpkg. Jeśli zostanie /var/lib/dpkg/statususunięty i nie będzie bieżącej kopii zapasowej, to tak, menedżer pakietów nie da się naprawić w tym systemie.

rackandboneman
źródło
-1

Przysięgam, że widziałem aptostatnio pliki binarne w /usr/local/binsystemie opartym na Ubuntu, ale nie ma ich w moim obecnym systemie Ubuntu MATE 15.04 (są w /usr/binwiększości innych plików binarnych). Jeśli tak, /usr/local/binto prawdopodobnie nie można go odinstalować, aptponieważ /usr/local/binmenedżer pakietów powinien zignorować te pliki . Muszę przyznać, że poddanie się apt(i dpkgrównież) /usr/local/binbyłoby dobrym pomysłem.

Bardziej interesujące pytanie - co się stanie, jeśli odinstalujesz dpkg? Rzeczywiście, dpkgjest wymieniony jako pakiet przez apt, ale nie zamierzam go teraz odinstalowywać (w tej chwili nie mam skonfigurowanej maszyny wirtualnej). Teoretycznie można go również odinstalować dpkgsam. Zgaduję, że jedynym sposobem na ponowną instalację byłoby zrobienie tego ręcznie, a następnie mam nadzieję, że przejmie istniejące pliki konfiguracyjne (więc nie musisz ręcznie powtarzać systemowi od nowa jakie pakiety są zainstalowane), a następnie powiedz, że pakiet dpkgjest teraz ponownie zainstalowany.


(Żart :) Odpowiednikiem użytkownika Debiana # rm -rf /jest # apt-get purge ".*".

Micheal Johnson
źródło
Jeśli cokolwiek pochodzącego z oficjalnego pakietu dystrybucyjnego znajdzie się w / usr / local / bin, zgłoś błąd w stosunku do tego pakietu.
rackandboneman
Chodzi o to, że nie pochodziło ono z paczki; został zainstalowany osobno od menedżera pakietów w celu uniknięcia problemów „apt-get remove apt” i „apt-get remove dpkg”. Myślę, że tak naprawdę był to Linux Mint, którego używałem jako mojego głównego systemu.
Micheal Johnson