How to uninstall applications on Linux.
好問題。
首先,軟體不是天降之物,你不可以指著桌面的一個圖示就說我要把它刪掉!!!
你要先問軟體是哪來的?了解如何透過Desktop Entry找到程式具體路徑,了解程式是怎麼安裝的,使用對應的指令移除。最後再來刪除殘餘的軟體檔案。
本文以Ubuntu 24.04 LTS桌面版為例。
1. Desktop Entry與Linux軟體的關係#
儘管我們可以使用apt list --installed
指令列出系統所安裝的套件,但Linux不是只有APT一種安裝軟體方法,有時你會搞不清楚桌面上的某程式是哪裡來的。
要找出程式在哪裡,直觀的方式是使用Desktop Entry。
Linux萬物皆是檔案,很多程式通常就是一個執行檔,然後再透過桌面環境的Desktop Entry讓你方便開啟他們。你在Linux桌面看到的應用程式多半是由「Desktop Entry」組成,這些檔案定義了圖示,以及要開啟什麼程式。
Linux的Desktop Entry路徑通常位於/usr/share/applications/
或/usr/local/share/applications/
或~/.local/share/applications/
所有可能的路徑請用echo $XDG_DATA_DIRS
指令列出。
桌面環境會從這些路徑讀取,將Desktop Entry顯示在桌面和應用程式列表。
請注意:不是每個程式都會有Desktop Entry,比如ffmpeg,此時就得用指令去找。
比如,Firefox的Desktop Entry位於/usr/share/applications/firefox.desktop
,裡面執行的指令為Exec=firefox
:
[Desktop Entry]
Type=Application
Exec=firefox %u
Terminal=false
Icon=firefox
Categories=GNOME;GTK;Network;WebBrowser;
用which firefox
指令確認,我們知道Firefox的執行的絕對路徑位於/usr/bin/firefox
。於是使用者點選桌面Firefox圖示就會執行/usr/bin/firefox
指令,從而開啟Firefox瀏覽器。
所以你不知道桌面上的應用程式圖示究竟是指向哪一個程式的時候,可以透過查看Desktop Entry來判別,你甚至可以判定它是否為Snap或Flatpak軟體。
但是Desktop Entry並不等同程式本體,充其量只是捷徑而已,刪除Desktop Entry檔案並不會刪除程式。
那麼我們找到了Firefox執行檔路徑,可以直接刪除/usr/bin/firefox
這個檔案嗎?否,請往下看,確認軟體安裝來源再決定怎麼處理。
2. 可能的軟體安裝來源#
以Ubuntu桌面版來說,常見的安裝來源:
- Ubuntu軟體中心:開啟軟體中心,找到應用程式頁面,點選解除安裝。(GNOME是軟體中心,KDE叫做Discover)
- APT:使用
apt remove 套件名稱
刪除套件 - Python Pip:使用
pip uninstall
刪除。其他程式語言的套件,例如NodeJS NPM、Rust Cargo、Ruby Gem參考此概念移除。 - Snap:使用
snap purge 套件名稱
刪除套件 - Flatpak:使用
flatpak remove 套件名稱
刪除套件 - AppImage:找到AppImage執行檔所在路徑並將其刪除。
- Wine:開啟Wine的控制台
wine uninstaller
,從中解除安裝程式。 - tarball解壓縮:找到軟體執行檔位置並刪除。
只要是透過套件管理器安裝的軟體,通常它會在解除安裝後刪除對應服務,並自行處理掉多餘的Dekstop Entry,讓軟體圖示在解除安裝後從桌面消失。
3. 若軟體是手動編譯安裝的#
使用指令稿、make install編譯安裝的軟體比較麻煩,這個不見得能刪得乾淨的說。若是驅動程式和Linux核心模組就更為複雜了。
這個得看軟體開發者的說法。
Linux軟體通常會安裝到/usr/local/bin
或/usr/bin
或~/.local/bin
或~/.local/share/bin
查看目前系統全部的安裝路徑:echo $PATH
若軟體只有一個執行檔,可以嘗試直接rm /執行檔路徑/
指令刪除。
4. 清除軟體殘留設定檔#
Linux沒有Windows登錄檔這種東西,但仍有殘留應用程式檔案的可能。
使用指令apt remove 套件名稱
刪除後可以用apt purge 套件名稱
嘗試刪除殘餘設定檔。不過有時還是得找殘留設定檔。
Linux程式的設定檔,很多都會放在使用者家目錄/home/使用者名稱
使用ls -al ~
指令列出來,你就會看到家目錄下有許多點開頭的隱藏目錄,這些常常就是程式放置設定檔的地方。你可以從這裡去刪軟體設定檔。
理想情況下,程式應該遵守XDG_CONFIG_HOME標準,將設定檔統一放到~/.config
或~/.local/share
目錄,例如Google Chrome就是放在~/.config/google-chrome/
。
不過很多程式不守規矩會在家目錄倒垃圾,比如Firefox,就大喇喇的放在~/.mozilla
目錄。
此外,Flatpak程式設定檔會放在~/.var
或/var/lib/flatpak
,Snap則是~/snap
或/var/lib/snapd/snaps