如何使用apt-get仅移除一个特定的软件包?

我刚刚安装了MySQL服务器及其所有依赖项,以及其他必要的东西。 但是在配置mysql服务器时,它无法成功配置,并且报错了。这里不重要的是具体的错误,因为我已经找到了问题所在,即mysql-server和mysql-common之间的依赖性问题。需要移除mysql-common。
但是当我去...
apt-get purge remove mysql-common 

它自动想要移除与其相关的所有内容,包括所有的MySQL依赖项,甚至包括Apache2和PHP5。

那么,要卸载仅一个软件包,同时保留其他所有软件包不变,需要添加哪个参数到apt-get命令呢?

2个回答

apt-get不会让你这样做,因为对于一个软件包管理系统来说,这是一个潜在的危险步骤。
只要你意识到可能会有后果,可以使用dpkg命令加上--remove选项来执行。例如:
sudo dpkg --remove mysql-common

注意:在我安装了独立的apache2、php5和mysql-server的12.04系统上,使用apt-get删除mysql-common并不会删除apache2或php5。
根据insomnia的评论:如果你需要覆盖依赖系统的决定,你可以(非常小心,并确保你知道自己在做什么)使用额外的--force-depends选项。
sudo dpkg --remove --force-depends mysql-common

好的,谢谢。很多其他人声称它有效。我的意思是很多人都这么说。但是是的,在Ubuntu上会发生这种情况。但实际上我在使用Debian。但我在这里问是因为我是这里的用户,而且它们非常相似,软件包系统也是一样的。谢谢伙计。 - insomnia
别担心,兄弟。我不会丢下你不管的。我总是会接受的。只是通常人们在我接受后就忽视了问题的存在。但我刚刚尝试了一下,它不让我这么做。有没有强制命令? - insomnia
抱歉,没错 - 我觉得你必须等一段时间才能做这件事 - 大概15分钟吧?请在有机会的时候再试一次,不着急。另外,我刚注意到你提到你正在使用Debian - 请注意,涉及Debian的问题是不适合讨论的,通常会被关闭。将来如果有关于Debian特定的问题,请考虑在unix.stackexchange.com上提问 :) - ish
是的,我也猜到了。这就是为什么我一直没有提到,直到我需要的时候才说。我的意思是他们的软件包管理器是一样的,Ubuntu只是升级了Debian而已。但好吧,15分钟的方法并不起作用,因为我试过超过15分钟后仍然不行。但是我不能输入类似于“dpkg -f --remove mysql-common”的命令吗? - insomnia
如果使用--remove命令会给出警告并中止操作,那么你可以用-f来强制执行。顺便说一下,--remove-r是等价的。 - ish
好的。-r 应该可以工作。因为当我尝试使用 "dpkg -f --remove" 时,它不会作为正确的参数工作。所以也许 "dpkg -r --force" 可以。谢谢,我很感激你的帮助。 - insomnia
为了以后参考其他人。我设法通过输入“dpkg -r --force-depends mysql-commons”使其正常工作。所以,如果你一直收到有关依赖项的错误,导致无法删除文件,因为它的依赖项,请确保添加“--force-depends”,然后它将保留依赖项不变。但正如izx所说,要小心使用,因为你可能会造成更多的伤害。确保你绝对知道自己在这里做什么。祝大家好运。 - insomnia

如果有人想知道2014年的Debian命令,它是:
dpkg --force-all -r name_of_package

它有点变了

有很多--force-参数,为了依赖性的缘故最好通过以下方式检查它们:

dpkg --force-help

“--force-all” 绝对不安全,为什么不建议使用 “--force-depends”,并提供适当的警告呢? - guntbert
删除一个其他包所需的软件包而不卸载另一个软件包是绝对不安全的。--force-all只是一种快速而粗暴的方法。 - Michal Sapsa