我知道我可以apt-get remove <package>
用来删除程序。
但是apt
是程序本身。我可以使用apt-get remove apt
它来删除它,还是将其混淆掉?
# dnf remove dnf Dependencies resolved. Error: The operation would result in removing the following protected packages: dnf.
我知道我可以apt-get remove <package>
用来删除程序。
但是apt
是程序本身。我可以使用apt-get remove apt
它来删除它,还是将其混淆掉?
# dnf remove dnf Dependencies resolved. Error: The operation would result in removing the following protected packages: dnf.
Answers:
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]
因此答案应该是:是的,可以。
sudo
(-s
模式不会进行任何更改),因此最好在没有 sudo
预防措施的情况下运行它。
您可以...
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”重新安装软件包管理器(并且还需要手动安装所有依赖项)。
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
',所以我不得不做的呈S依赖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,那么仍然可以手动解压缩dpkg的.deb存档,除非您也摆脱了binutils,tar,gzip / bzip2的困扰。
--purge
但是,在与apt工具链有关的任何软件包上,都可能给您带来棘手的问题;。很难知道什么拥有/var/lib/dpkg
。如果/var/lib/dpkg/status
被删除并且没有当前备份,那么是的,程序包管理器将无法修复该系统。
我发誓不久前我在基于Ubuntu的系统上看到了这些apt
二进制文件/usr/local/bin
,但是它们在我当前的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 ".*"
。