Чи можна видалити apt з apt?


45

Я знаю, що можу використовувати apt-get remove <package>для видалення програми.

Але aptце сама програма. Чи можу я її використати, apt-get remove aptщоб видалити її, або вона б заплуталася частково?


2
Це фактичне чи просто гіпотетичне питання? У випадку 1: Спробуйте. Інше: Я думаю, що він повинен мати можливість продути себе, якщо він не намагається запустити будь-який з його компонентів після їх видалення. Файли, які вже відкрилися, можна без проблем видалити.
Командир байт

@ByteCommander Це і те, і інше, але я зараз не можу спробувати.
Тим

13
Ви можете, але ви, мабуть, не повинні . Linux рідко запитує, чому його користувач хоче стріляти собі в ногу, він просто припускає, що у вас є вагома причина і дозволяє вам натиснути курок ...
Шадур

1
Для повноти, Fedoras dnf не дозволить вам це зробити. # dnf remove dnf Dependencies resolved. Error: The operation would result in removing the following protected packages: dnf.
Давидм

Яке цікаво зле питання! Логічним подальшим кроком є: чи можете ви відновитись після цього, чи потрібно повне перевстановлення?
KlaymenDK

Відповіді:


78

APT дозволяє імітувати ваші команди за допомогою параметра -s. Ви можете спробувати це самостійно, видавши команду apt-get -s remove apt(не sudoпотрібно).

Це дає такий результат:

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]

Тож відповідь повинна бути: так, можна.


8
Я не впевнений, що режим імітації apt охоплює повне випадання для чогось подібного. Безумовно, це був би кращий випадок, з яким код може звертатись, а не може.
Спархак

12
Це не вимагає sudo( -sрежим не вносить жодних змін), тому, ймовірно, краще запустити його без sudo запобіжних заходів.
Підроблене ім’я

3
Apt цілком може бути в змозі визначити, як видалити apt. Але чи може насправді це зробити? Неважко уявити, що він може видалити файл, від якого пізніше залежить, залишаючи установку в непослідовному стані.
користувач253751

1
@immibis Мене більше турбує проблема видалення dpkg. Apt сам просто каже dpkg, що робити, dpkg - це те, що насправді виконує (не) установки.
Випадково832

1
Тож якщо apt підказує dpkg що робити, що станеться, коли ви видалите dpkg ... lol
SuperSluether

30

Ти можеш...

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) ...

і буде попереджено, що ви збираєтесь зробити щось дуже руйнівне. Треба сказати ... список пакунків виглядає приголомшливо для економії місця менше 6000 кбіт: D

Це закінчується, але немає можливості повернутись за допомогою "apt-get". Програмний центр Ubuntu більше не працюватиме, і вам потрібно буде використовувати "dpkg" для повторної установки менеджера пакунків (і вручну також потрібно встановити всі залежності).


12
потрібно було б використовувати "dpkg" для повторної установки менеджера пакунків (і вручну також потрібно встановити всі залежності) , так іншими словами,sudo apt-get remember-what-2002-was-like
user1717828

Не могли б ви завантажитися на Live CD тоді chrootі apt-get, як і Арка?
Sparhawk

1
@Sparhawk Не впевнений, що ти прагнеш; після того, як ви chroot, ви знаходитесь в корені вашої звичайної системи і шукатимете apt-get там, який ви видалили. Я думаю, що apt-get (або, можливо, це dpkg) дозволяє вказати альтернативну кореневу директорію, але я не можу швидко знайти, як би ви це зробили.
CVn

Жоден з пакетів, які він вилучає, не є особливо «страшним» ІМО, за винятком, звичайно, самої придатної.
Випадково832

@ MichaelKjörling Я думав, що ви можете запустити вручну шлях до apt-getвстановлення в новому "root", але я забув, що вам також знадобляться всі файли конфігурації / кешу. Ваша можлива пропозиція, безумовно, буде більш чистою (якщо є така можливість).
Sparhawk

12

Одного разу, ще коли я запускав CoreUbuntu, я встановив помилковий пакет із джерела, який aptвирішив застаріти apt. Наступного разу, коли я бігав apt autoremove, я не переглядав перелік програмного забезпечення, яке потрібно видалити, і aptбув у списку.

Уявіть моє здивування наступного разу, коли я набрав apt install <package-name>та отримав The program 'apt' is currently not installed. You can install it by typing: sudo apt-get install apt.

На щастя, з якихось причин autoremoveне усунув жодної з apt'залежностей, тому все, що я повинен був зробити, - wget aptце .debархів та перевстановлення з використанням dpkg -i.


Як показано в інших відповідей, якщо ви видалите apt з apt , ви будете в більш складному становищі з - за залежностей він намагається вирішити.

Мені здається цікавим, але це дійсно так, що (безумовно, для Debian і, можливо, Fedora / openSUSE в тій чи іншій мірі?) Багато сучасних дистрибутивів визначаються і будуються значною мірою на інфраструктурі, яку надає їх менеджер пакунків на вибір.


5
Б'юсь об заклад, що причина aptне усунула залежності - це те, що встановлений вами пакет баггі перераховував їх як потрібно. Має сенс, якщо цей пакет мався на увазі як заміна.
Дмитро Григор’єв

5

Технічно apt не може видалити apt ... тому що apt не знає, як видалити, встановити або оновити пакети. Завдання встановлення, видалення, оновлення, налаштування пакетів залишаються на dpkg. Хоча ви можете сказати apt, щоб видалити пакунок під назвою "apt", що він робить, це перевірити зворотні залежності пакета apt, взяти до відома ці пакети та наказати dpkg видалити їх. Що можна побачити в інших відповідях .

Навіть без apt ви можете використовувати dpkg для встановлення, видалення або оновлення пакетів, просто так буде болісніше відстежувати залежності та необхідні оновлення, що є причиною apt.


Так, apt - це просто простіший фронтменд dpkg, і якщо ви його видалите dpkg, чи справді це вже Ubuntu?
кіт

@cat Я думаю, що це все одно буде ... до тих пір, поки ви не очистите пакет або не видалите /var/lib/dpkg/statusфайл. Ви можете відновити dpkg, якщо вам теж подобається.
Брайам

1

Звичайно, ви можете. Apt і dpkg - самі пакети, і вони повинні бути оновлені через себе, тому є положення про видалення; інакше /var/lib/dpkg/info/dpkg.prermі /var/lib/dpkg/info/dpkg.postrmне було б підстав існувати :)

Якщо ви випадково їх видалили таким чином, що не залишив вас без dpkg, ви все одно можете вручну розпакувати архів .deb для dpkg, якщо ви також не позбулися binutils, tar, gzip / bzip2.

--purgeна будь-яких пакунках, пов’язаних із підходящою ланцюжком інструментів, можна створити неприємні проблеми; важко сказати, що належить певним файлам /var/lib/dpkg. Якщо ви /var/lib/dpkg/statusвидалили та не було поточної резервної копії, то так, менеджер пакунків не підлягає ремонту в цій системі.


-1

Я клянусь, що недавно бачив aptбінарні файли в /usr/local/binсистемі, що базується на Ubuntu, але їх немає в моїй теперішній системі Ubuntu MATE 15.04 (вони знаходяться у /usr/binбільшості інших бінарних файлів). Якби це було, /usr/local/binтоді, можливо, не вдалося б його видалити, aptоскільки файли в, /usr/local/binяк передбачається, ігноруються менеджером пакунків. Я мушу визнати, що ставити aptdpkgтак само) /usr/local/binбуло б хорошою ідеєю.

Більш цікаве питання - що станеться, якщо ви видалите його dpkg? Впевнений, dpkgвказаний як пакунок від apt, але я зараз не збираюся його намагатися видалити (наразі не встановлена ​​віртуальна машина). Теоретично можна також видалити його із dpkgсобою. Я буду брати до уваги, що єдиним способом її перевстановлення було б це зробити вручну, тоді сподіваюся, що він підбере існуючі файли конфігурації (тому вам не доведеться знову вручну розповідати системі які пакунки встановлені), а потім скажіть, що пакунок dpkgзараз встановлено знову.


(Жарт :) Еквівалент користувача Debian # rm -rf /є # apt-get purge ".*".


Якщо що-небудь, що надходить з офіційного пакета розповсюдження, виявляється в / usr / local / bin, подайте помилку проти цього пакета.
rackandboneman

Річ у тім, що вона не надходила з пакету; він був встановлений окремо від менеджера пакунків із чіткою метою уникнути проблем "apt-get remove apt" та "apt-get remove dpkg". Я думаю, що насправді це був Linux Mint, який я використовував як свою основну систему.
Мікель Джонсон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.