Это актуальный или только гипотетический вопрос? В случае 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]
Я не уверен, что режим имитации 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» для переустановки менеджера пакетов (и вручную также необходимо установить все зависимости).
нужно будет использовать «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зависимостей, поэтому все, что мне нужно было сделать, wgetaptэто .debархив и переустановить с помощью dpkg -i.
Как показано в других ответах, если вы удалите aptс помощьюapt , вы будете иметь больше проблем из-за зависимостей, которые он пытается разрешить.
Я нахожу это интересным, но это действительно тот случай, когда (конечно, для Debian и, может быть, для Fedora / openSUSE в некоторой степени?) Многие современные дистрибутивы определены и построены в основном на основе инфраструктуры, предоставленной их менеджером пакетов.
Могу поспорить, что причина aptне удалила зависимости в том, что установленный вами пакет с ошибками перечислил их по мере необходимости. Имеет смысл, если этот пакет предназначен для замены.
Дмитрий Григорьев
5
Технически, apt не может удалить apt ... потому что apt не знает, как удалять, устанавливать или обновлять пакеты. Задачи по установке, удалению, обновлению, настройке пакетов оставлены для dpkg. Хотя вы можете указать apt удалить пакет с именем «apt», он проверяет обратные зависимости пакета apt, принимает к сведению эти пакеты и выдает команду dpkg для их удаления. Что и можно увидеть в других ответах .
Даже без apt вы можете использовать dpkg для установки, удаления или обновления пакетов, просто вам будет сложнее отслеживать зависимости и необходимые обновления, что является смыслом apt.
Конечно вы можете. 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удалить его и текущей резервной копии не было, то да, менеджер пакетов в этой системе не подлежит восстановлению.
Клянусь, я недавно видел aptисполняемые файлы в системе /usr/local/binна основе Ubuntu, но их нет в моей нынешней системе Ubuntu MATE 15.04 (они включены в /usr/binбольшинство других двоичных файлов). Если бы он был, /usr/local/binто, вероятно, было бы невозможно удалить его, aptпотому что файлы /usr/local/binдолжны игнорироваться менеджером пакетов. Я должен признать, что положить apt(и dpkgтакже) под /usr/local/binбыло бы хорошей идеей.
Более интересный вопрос - что произойдет, если вы удалите dpkg? Конечно, dpkgон указан как пакет apt, но я не собираюсь пытаться удалить его сейчас (на данный момент не настроена виртуальная машина). Теоретически можно также удалить его с dpkgсобой. Я собираюсь сделать обоснованное предположение, что единственный способ переустановить его - это сделать это вручную, а затем надеяться, что он подберет существующие файлы конфигурации (чтобы вам не приходилось вручную снова сообщать системе) какие пакеты установлены), а затем скажите, что пакет dpkgтеперь установлен снова.
Если что-то из официального дистрибутива попадает в / usr / local / bin, сообщите об ошибке в этот пакет.
стеганые кости
Дело в том, что это не из пакета; он был установлен отдельно от менеджера пакетов с целью избежать проблем "apt-get remove apt" и "apt-get remove dpkg". Я думаю, что на самом деле это был Linux Mint, который я использовал в качестве основной системы.
# dnf remove dnf Dependencies resolved. Error: The operation would result in removing the following protected packages: dnf.
Ответы:
APT позволяет имитировать ваши команды, используя опцию
-s
. Вы можете попробовать это самостоятельно, введя командуapt-get -s remove apt
(неsudo
нужно).Это дает следующий вывод:
Поэтому ответ должен быть: да, вы можете.
источник
sudo
(-s
режим не вносит никаких изменений), поэтому, вероятно, лучше запустить его безsudo
предосторожности.Ты можешь...
и будет предупрежден, что вы собираетесь сделать что-то очень разрушительное. Я должен сказать ... список пакетов выглядит ужасно для экономии места менее 6000 КБ: D
Это заканчивается, но пути назад с помощью «apt-get» нет. Ubuntu Software Center больше не будет работать, и вам нужно будет использовать «dpkg» для переустановки менеджера пакетов (и вручную также необходимо установить все зависимости).
источник
sudo apt-get remember-what-2002-was-like
chroot
иapt-get
, как это делает Arch?apt-get
, установив в новом «root», но я забыл, что вам также понадобятся все файлы config / cache. Ваше возможное предложение, безусловно, будет чище, хотя (если есть такая возможность).Однажды, когда я запускал 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 в некоторой степени?) Многие современные дистрибутивы определены и построены в основном на основе инфраструктуры, предоставленной их менеджером пакетов.
источник
apt
не удалила зависимости в том, что установленный вами пакет с ошибками перечислил их по мере необходимости. Имеет смысл, если этот пакет предназначен для замены.Технически, apt не может удалить apt ... потому что apt не знает, как удалять, устанавливать или обновлять пакеты. Задачи по установке, удалению, обновлению, настройке пакетов оставлены для dpkg. Хотя вы можете указать apt удалить пакет с именем «apt», он проверяет обратные зависимости пакета apt, принимает к сведению эти пакеты и выдает команду dpkg для их удаления. Что и можно увидеть в других ответах .
Даже без apt вы можете использовать dpkg для установки, удаления или обновления пакетов, просто вам будет сложнее отслеживать зависимости и необходимые обновления, что является смыслом apt.
источник
dpkg
, и если вы удалитеdpkg
его, то действительно ли это Ubuntu?/var/lib/dpkg/status
файл. Вы можете восстановить dpkg, если хотите.Конечно вы можете. 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
удалить его и текущей резервной копии не было, то да, менеджер пакетов в этой системе не подлежит восстановлению.источник
Клянусь, я недавно видел
apt
исполняемые файлы в системе/usr/local/bin
на основе Ubuntu, но их нет в моей нынешней системе Ubuntu MATE 15.04 (они включены в/usr/bin
большинство других двоичных файлов). Если бы он был,/usr/local/bin
то, вероятно, было бы невозможно удалить его,apt
потому что файлы/usr/local/bin
должны игнорироваться менеджером пакетов. Я должен признать, что положитьapt
(иdpkg
также) под/usr/local/bin
было бы хорошей идеей.Более интересный вопрос - что произойдет, если вы удалите
dpkg
? Конечно,dpkg
он указан как пакетapt
, но я не собираюсь пытаться удалить его сейчас (на данный момент не настроена виртуальная машина). Теоретически можно также удалить его сdpkg
собой. Я собираюсь сделать обоснованное предположение, что единственный способ переустановить его - это сделать это вручную, а затем надеяться, что он подберет существующие файлы конфигурации (чтобы вам не приходилось вручную снова сообщать системе) какие пакеты установлены), а затем скажите, что пакетdpkg
теперь установлен снова.(Шутка :) Эквивалентом пользователя Debian
# rm -rf /
является# apt-get purge ".*"
.источник