我可以用apt删除apt吗?


45

我知道我可以apt-get remove <package>用来删除程序。

但是apt是程序本身。我可以使用apt-get remove apt它来删除它,还是将其混淆掉?


2
这是一个实际的还是只是一个假设的问题?第一种情况:尝试一下。其他:我认为,如果在删除组件后不尝试启动其任何组件,它应该能够进行自我清除。可以将已打开的文件删除而不会出现问题。
字节指挥官

@ByteCommander都是,但是我现在不能真正尝试。
蒂姆(Tim)2016年

13
可以,但您可能不应该。Linux很少问用户为什么要用脚射击自己,它只是假设您有充分的理由并允许您扳动扳机……
Shadur

1
为了完整起见,Fedoras的dnf不允许您这样做。# dnf remove dnf Dependencies resolved. Error: The operation would result in removing the following protected packages: dnf.
Davidmh '16

这是一个多么有趣的邪恶问题!合理的后续措施是:您可以从中恢复吗,还是需要完全重新安装?
KlaymenDK '16

Answers:


78

APT使您可以使用选项模拟命令-s。您可以自己尝试,发出命令apt-get -s remove aptsudo不需要)。

这将产生以下输出:

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

1
@immibis对于删除dpkg,我会更加担心。Apt本身只是告诉dpkg该做什么,dpkg是实际执行(取消)安装的操作。
Random832 '16

1
因此,如果apt告诉dpkg怎么办,那么删除dpkg时会发生什么...大声笑
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) ...

并会警告您,您将要做一些非常具有破坏性的事情。我必须说...软件包列表对于不到6000kb的节省空间来说是可怕的:D

它确实完成了,但是使用“ apt-get”无法回退。Ubuntu软件中心将不再工作,您将需要使用“ dpkg”重新安装软件包管理器(并且还需要手动安装所有依赖项)。


12
将需要使用“ dpkg”重新安装程序包管理器(并且手动还需要安装所有依赖项),换句话说,sudo apt-get remember-what-2002-was-like
user1717828 2016年

难道您不能启动到Live CD,然后,chrootapt-getArch一样吗?
Sparhawk

1
@Sparhawk不确定您的目标是什么;chroot之后,您就位于普通系统的根目录中,并且会在这里找到apt-get,并将其删除。我认为apt-get(或者它可能是dpkg)允许指定备用根目录,但是我似乎无法快速找到要怎么做。
CVn

它删除的软件包中没有一个特别适合“吓人”的IMO,当然还有它本身。
Random832 '16

@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',所以我不得不做的呈S依赖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。
Braiam '16

1

当然可以。Apt和dpkg本身是软件包,它们可以通过自身进行更新,因此有删除的规定。否则/var/lib/dpkg/info/dpkg.prerm/var/lib/dpkg/info/dpkg.postrm将没有理由存在:)

如果不小心以某种方式删除了它们,使您失去了dpkg,那么仍然可以手动解压缩dpkg的.deb存档,除非您也摆脱了binutils,tar,gzip / bzip2的困扰。

--purge但是,在与apt工具链有关的任何软件包上,都可能给您带来棘手的问题;。很难知道什么拥有/var/lib/dpkg。如果/var/lib/dpkg/status被删除并且没有当前备份,那么是的,程序包管理器将无法修复该系统。


-1

我发誓不久前我在基于Ubuntu的系统上看到了这些apt二进制文件/usr/local/bin,但是它们在我当前的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's

事实是,它不是来自包装件。它是与软件包管理器分开安装的,其主要目的是避免出现“ apt-get remove apt”和“ apt-get remove dpkg”问题。我认为实际上是Linux Mint,我曾经将其用作主系统。
米歇尔·约翰逊
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.