如何在Linux中完全删除软件包
1. 概述
我们可以使用多种方式在 Linux 中安装包 /应用程序,例如从存储库、手动安装(从*.deb*或可执行文件)、Snap 或Flatpak 。
在本教程中,我们将介绍几种完全删除使用这些方法安装的包的方法,包括其配置和用户配置文件目录。
2. 删除从存储库安装的包
假设我们从存储库安装 Telegram 桌面应用程序:
$ sudo apt install telegram-desktop
...
The following additional packages will be installed:
fonts-open-sans libxxhash0
The following NEW packages will be installed:
fonts-open-sans libxxhash0 telegram-desktop
...
APT 将从存储库获取并安装telegram-desktop包和两个附加包(fonts-open-sans和libxxhash0)到我们的系统上。
安装成功后,我们可以使用dpkg 命令检查软件包复制到我们系统的所有文件:
$ dpkg -L telegram-desktop
/.
/usr
/usr/bin
/usr/bin/telegram-desktop
...
/usr/share/man/man1/telegram-desktop.1.gz
/usr/share/metainfo
/usr/share/metainfo/telegramdesktop.appdata.xml
一些应用程序还会在~/.local/share或~/.config*中创建一个目录来存储它们的配置和用户配置文件*。对于 Telegram,它会创建*~/.local/share/TelegramDesktop*目录。
现在,要删除 Telegram 包及其依赖项和其他包,我们可以使用apt remove:
$ sudo apt remove --purge --autoremove telegram-desktop
这个命令有几个部分:
- remove:删除包
- purge : 移除依赖
- autoremove : 移除额外的包
我们还必须记住使用 sudo来确保我们有权更改已安装的内容。
删除过程完成后,telegram-desktop包应该不再存在于我们的系统上。让我们使用dpkg验证这一点:
$ dpkg -L telegram-desktop
dpkg-query: package 'telegram-desktop' is not installed
Use dpkg --contents (= dpkg-deb --contents) to list archive files contents.
配置目录 ( ~/.local/share/TelegramDesktop ) 仍然存在,但我们可以手动删除它:
$ rm -r ~/.local/share/TelegramDesktop
现在我们已经完全删除了从存储库中安装的包。
3. 删除从可执行文件安装的包
如果我们从一个可执行文件安装一个包并且分发者没有提供卸载包的方法,我们可能需要手动删除它。
假设我们从他们的网站下载了 Telegram 应用程序并将其解压缩到我们的Downloads目录:
$ ls ~/Downloads/Telegram -l
total 122304
-rwxr-xr-x 1 blogdemo blogdemo 119899536 Apr 26 17:39 Telegram
-rwxr-xr-x 1 blogdemo blogdemo 5332648 Apr 26 17:36 Updater
我们运行可执行文件,它将创建桌面快捷方式和应用程序配置文件:
$ ./Telegram
Telegram 没有提供卸载包的方法,所以我们必须自己删除它。
3.1. 删除应用程序配置和用户配置文件目录
如果仅为当前用户安装应用程序,应用程序配置和用户配置文件目录通常位于*~/.local/share或~/.config*,否则可能位于*/opt*、/var或其他位置。
对于 Telegram,它位于*~/.local/share/TelegramDesktop*中,我们可以将其删除:
$ rm -r ~/.local/share/TelegramDesktop
删除目录后,如果我们再次运行应用程序,应用程序应该看起来像全新安装。接下来,我们将删除应用程序桌面快捷方式。
3.2. 删除桌面快捷方式
大多数应用程序将桌面快捷方式文件 (*.desktop) 存储在:
- /usr/share/applications,或
- /usr/local/share/applications,或
- ~/.local/share/applications
我们可以尝试使用find 命令在我们的主目录 ( ~ ) 中查找包含单词“ Telegram ”的*.desktop文件来查找它:
$ find ~ -type f -name '*.desktop' 2>/dev/null | grep Telegram
/home/blogdemo/.local/share/applications/userapp-Telegram Desktop-5SZOL1.desktop
/home/blogdemo/.local/share/applications/appimagekit_ded829c60cac78ccbd38351db01f038f-Telegram_Desktop.desktop
在我们删除快捷方式文件之前,我们可能想要打开它来验证可执行文件的位置,我们将在下一步中删除它:
$ cat ~/.local/share/applications/appimagekit_ded829c60cac78ccbd38351db01f038f-Telegram_Desktop.desktop
[Desktop Entry]
...
TryExec=/home/blogdemo/Downloads/Telegram/Telegram
Exec=/home/blogdemo/Downloads/Telegram/Telegram -workdir /home/blogdemo/.local/share/TelegramDesktop/ -- %u
...
之后,我们可以删除快捷方式:
$ cat ~/.local/share/applications/appimagekit_ded829c60cac78ccbd38351db01f038f-Telegram_Desktop.desktop
[Desktop Entry]
...
TryExec=/home/blogdemo/Downloads/Telegram/Telegram
Exec=/home/blogdemo/Downloads/Telegram/Telegram -workdir /home/blogdemo/.local/share/TelegramDesktop/ -- %u
...
删除这些文件后,桌面上不应再出现 Telegram 图标。
3.3. 卸下包装
最后一步是删除包本身:
$ rm -r ~/Downloads/Telegram
此时,我们应该已经从我们的系统中完全删除了 Telegram 包。
4. 删除从 .deb 文件安装的包
我们可以使用apt命令删除从*.deb*文件中安装的软件包,就像我们之前所做的那样:
$ sudo apt remove --purge --autoremove telegram-desktop
然后我们需要找到配置目录,手动删除。例如,对于 Telegram 应用程序,它位于*~/.local/share/TelegramDesktop*:
$ rm -r ~/.local/share/TelegramDesktop
此时,我们应该已经从*.deb*文件中完全删除了我们安装的包。
5. 删除 Snap 安装的包
Snap 是另一个包管理系统,它将包与其所有依赖项捆绑在一起。
当我们使用 Snap 安装应用程序时,它会将所有文件存储在*~/snap*目录中。
要删除 Snap 包,我们使用snap remove:
$ snap remove telegram-desktop
如果删除过程成功,目录*~/snap/telegram-desktop*应该会消失。
6. 删除使用 Flatpak 安装的软件包
Flatpak 也是另一个包管理系统。
当我们使用 Flatpak 安装应用程序时,它会将所有文件存储在*/var/lib/flatpak/app*目录中。
要删除 Flatpak 包,我们使用flatpak uninstall:
$ flatpak uninstall org.telegram.desktop
如果删除过程成功,目录*/var/lib/flatpak/app/org.telegram.desktop*应该会消失。