Могу ли я удалить apt с помощью apt?


45

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

Но aptэто сама программа. Могу ли я использовать, apt-get remove aptчтобы удалить его, или он запутается частично?


2
Это актуальный или только гипотетический вопрос? В случае 1: попробуйте. Иначе: я думаю, что он сможет очистить себя, если не попытается запустить какой-либо из своих компонентов после их удаления. Уже открытые файлы могут быть удалены без проблем.
Byte Commander

@ByteCommander Это и то и другое, но я не могу попробовать это прямо сейчас.
Тим

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

1
Для полноты, dnf Fedora не позволит вам сделать это. # dnf remove dnf Dependencies resolved. Error: The operation would result in removing the following protected packages: dnf.
Davidmh

Какой интересный злой вопрос! Логическое продолжение: вы можете восстановиться после этого или требует полной переустановки?
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 покрывает все последствия для чего-то подобного. Конечно, это будет крайний случай, который код может или не может адресовать.
Sparhawk

12
Это не требует sudo( -sрежим не вносит никаких изменений), поэтому, вероятно, лучше запустить его без sudo предосторожности.
Фальшивое имя

3
Apt вполне может определить, как удалить apt. Но может ли это на самом деле сделать это? Легко представить, что он может удалить файл, от которого он зависит позже, и оставить установку в несогласованном состоянии.
user253751

1
@immibis Я бы больше беспокоился об удалении dpkg. Сам по себе Apt просто указывает dpkg, что делать, dpkg - это то, что фактически выполняет (не) установку.
Random832

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 Software Center больше не будет работать, и вам нужно будет использовать «dpkg» для переустановки менеджера пакетов (и вручную также необходимо установить все зависимости).


12
нужно будет использовать «dpkg» для переустановки менеджера пакетов (и вручную также необходимо установить все зависимости) , другими словами,sudo apt-get remember-what-2002-was-like
user1717828

Не могли бы вы загрузиться с Live CD, chrootи apt-get, как это делает Arch?
Sparhawk

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

Ни один из пакетов, которые он удаляет, не является особенно "пугающим" IMO, за исключением, конечно, самого apt.
Random832

@ MichaelKjörling Я думал, что вы можете запустить путь вручную apt-get, установив в новом «root», но я забыл, что вам также понадобятся все файлы config / cache. Ваше возможное предложение, безусловно, будет чище, хотя (если есть такая возможность).
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однако, любые пакеты, связанные с набором инструментов apt, могут привести к неприятным проблемам; Трудно сказать, кому принадлежат определенные файлы /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, сообщите об ошибке в этот пакет.
стеганые кости

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