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]
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ć bezsudo ś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).
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 wgetaptjest .debarchiwum i reinstall użyciu dpkg -i.
Jak pokazano w innych odpowiedziach, jeśli usuniesz za aptpomocą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.
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.
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.
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.
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.
# dnf remove dnf Dependencies resolved. Error: The operation would result in removing the following protected packages: dnf.
Odpowiedzi:
APT pozwala symulować polecenia za pomocą tej opcji
-s
. Możesz spróbować tego samodzielnie, wydając polecenieapt-get -s remove apt
(sudo
niepotrzebne).Daje to następujące dane wyjściowe:
Tak więc odpowiedź powinna brzmieć: tak, możesz.
źródło
sudo
(-s
tryb nie wprowadza żadnych zmian), więc prawdopodobnie lepiej jest go uruchomić bezsudo
środków ostrożności.Możesz...
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).
źródło
sudo apt-get remember-what-2002-was-like
chroot
iapt-get
, podobnie jak Arch?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).Kiedyś, kiedy uruchomiłem CoreUbuntu, zainstalowałem błędny pakiet ze źródła, który
apt
uznał za przestarzałyapt
. Następnym razem, gdy uruchomiłemapt autoremove
, nie spojrzałem na listę oprogramowania do usunięcia i znalazłem sięapt
na 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,
autoremove
nie zdejmowaćapt
's zależności więc wszystko, co musiałem zrobić, towget
apt
jest.deb
archiwum i reinstall użyciudpkg -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.
źródło
apt
nie 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.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.
źródło
dpkg
, a jeśli go usuniesz,dpkg
to czy naprawdę jest to już Ubuntu?/var/lib/dpkg/status
pliku. Jeśli chcesz, możesz odzyskać dpkg.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.prerm
i/var/lib/dpkg/info/dpkg.postrm
nie 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.
--purge
na 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/status
usunięty i nie będzie bieżącej kopii zapasowej, to tak, menedżer pakietów nie da się naprawić w tym systemie.źródło
Przysięgam, że widziałem
apt
ostatnio pliki binarne w/usr/local/bin
systemie opartym na Ubuntu, ale nie ma ich w moim obecnym systemie Ubuntu MATE 15.04 (są w/usr/bin
większości innych plików binarnych). Jeśli tak,/usr/local/bin
to prawdopodobnie nie można go odinstalować,apt
ponieważ/usr/local/bin
menedżer pakietów powinien zignorować te pliki . Muszę przyznać, że poddanie sięapt
(idpkg
również)/usr/local/bin
byłoby dobrym pomysłem.Bardziej interesujące pytanie - co się stanie, jeśli odinstalujesz
dpkg
? Rzeczywiście,dpkg
jest wymieniony jako pakiet przezapt
, ale nie zamierzam go teraz odinstalowywać (w tej chwili nie mam skonfigurowanej maszyny wirtualnej). Teoretycznie można go również odinstalowaćdpkg
sam. 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 pakietdpkg
jest teraz ponownie zainstalowany.(Żart :) Odpowiednikiem użytkownika Debiana
# rm -rf /
jest# apt-get purge ".*"
.źródło