Shell:如何将所有相关软件包卸载到特定软件包? / 乌班图

Shell:如何将所有相关软件包卸载到特定软件包? / 乌班图

最近,我要求我的托管提供商重新加载操作系统,假设Ubuntu 12.04 64 bit minimal最小安装了所需的最少软件包,但我意识到 mysql 已安装,因此,因为我不需要它,所以我想卸载与其相关的所有软件包。

我所做的是:

$ sudo apt-get --purge remove mysql-client
$ sudo apt-get --purge remove mysql-server

但是我仍然在寻找 mysql 二进制文件和文件

$ whereis mysql
mysql: /usr/bin/mysql /etc/mysql /usr/bin/X11/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz

我在想类似的事情

$ dpkg -s mysql*

但这没有帮助。

有什么建议吗?

答案1

为什么你这么确定你不需要它?也许其他软件包依赖于它,它不仅仅用于设置 mysql 服务器,例如某些程序使用它来管理其内部数据库。

现在,要回答您的问题,第一步确实是找出哪个包安装了这些文件:

$ dpkg -S /usr/bin/mysql
mysql-client-core-5.5: /usr/bin/mysql

这是 Ubuntu 14.04 虚拟机的输出,您的版本可能不同,但适用相同的原理。现在您知道包名称并可以手动删除它。

基本上,您删除的两个包都是元包指向其他包。因此,当您删除它们时,您只删除了虚拟软件包,而不是随它们一起安装的所有内容。要删除与 mysql 相关的所有内容,请运行以下命令:

sudo apt-get remove --purge mysql-*

答案2

如果您想使用apt-get remove特定包中包含的文件,您可以执行以下操作:

apt-get remove $(dpkg  -S /usr/bin/mysql | cut -d ':' -f 1)

(将/usr/bin/mysql, 替换为您要删除的任何文件)

使用此功能,apt-get仍然会询问您是否真的要删除该软件包(dpkg 找到的),有时您在看到软件包名称后意识到您不希望这样做

相关内容