Ubuntu、Debian、Deepin 怎样删除多安装的桌面环境?- Linux 小妙招

今天跟大家分享一点使用 Linux 的小技巧。我们在使用桌面 Linux 的时候,有时会尝试多一种的桌面环境,尝试过后却发现并不是自己需要的类型。这时,怎样彻底删除新桌面环境所带来的数百个软件包呢?本文以 Deepin 20.8 Linux 发行版删除新安装 gnome 桌面为例,分享一则如何在 Debian 系 Linux 中操作的小技巧。文中有任何错漏,欢迎交流指正,谢谢。视频演示地址: https://www.bilibili.com/video/BV1W24y1L7MH/?share_source=copy_web&vd_source=d1925b070926f23b2b6676137251e9ea

在 Debian 系 Linux 中,添加新桌面环境最方便的方式就是使用 tasksel 命令安装。Deepin Linux 使用的是自己的 DDE 桌面环境。使用 “tasksel --list-tasks” 可以查看供安装的第二个桌面环境。这里我们使用 “sudo tasksel install gnome-desktop” 在 Deepin 中安装上 gnome-desktop 桌面环境,从安装界面的提示信息可以看到会新安装近 500 个软件包。安装后,重启选择 gnome 桌面,我发现不能登录桌面,于是准备卸载掉新安装桌面所增加的这数百个软件包。提示一下,我在 Deepin 中曾经安装第二个 cinnamon-desktop 桌面环境是可以正常使用的。

首先,我试了一下那个 tasksel 命令,“sudo tasksel remove gnome-desktop”,确实有 6 个软件卸载了,但还有近500个呢。而且,登录界面的桌面类型选择还是有 gnome 的那几个。作为有点小强迫症的我简直不能忍。怎么办呢?好办。我们去系统的安装日志中看当时都安装了哪些软件,找出来把它们全部干掉不就行了。

找到系统的安装日志文件 /var/log/apt/history.log,可以在最近的日志行里找到那条安装数百软件包的记录。一次完整的操作记录包括下面5行,其中的 “Install:” 后面就是安装的具体软件记录 :

Start-Date: 2023-03-25 16:30:19
Commandline: apt install screen
Requested-By: littlebat (1000)
Install: screen:amd64 (4.6.2-3+deb10u1)
End-Date: 2023-03-25 16:30:20

我们把 Install: 那一行后面的部分单独保存为一个文件 $HOME/tmp.txt。你没看错,安装了数百软件包的记录就是那一行。每个软件包的记录格式为如“speech-dispatcher-espeak-ng:amd64 (0.9.0-5+deb10u1, automatic),”这样的。我们只需要把“(0.9.0-5+deb10u1, automatic),”这部分去掉。这样,就得到了一行以空格分开的软件包列表。在这个列表前面加上“sudo apt purge”,就能完全卸载掉当时安装 gnome-desktop 环境新增加的近500个软件包了。看看,我们是不是很聪明?

要实现上面的想法可以借助强大 sed 命令工具,我们用下面的命令来完成:

sed 's/ ([^)]\+)//g;s/,//g;s/^/sudo apt purge /' $HOME/tmp.txt > $HOME/tmp2.txt
sh $HOME/tmp2.txt

第一行是 sed 的三个替换操作生成包含完全卸载(包括配置文件)的命令文件,第二行就是执行文件。
sed 的三个替换操作以两个分号隔开。第一个替换操作表示把以“空格(”开头,以“)”结尾,中间不含“)”的字符串删除掉;第二个表示把“,”删除掉;第三个表示在行首加上“sudo apt purge”。这样就大功告成。看看,是不是很简单?很强大?

所以,在本文的结尾来一句广告词,“要想 Linux 玩得好,命令工具少不了。”

发表评论

电子邮件地址不会被公开。 必填项已用*标注