apt remove 和 apt purge: 有什麼區別?
如果你想 在 Ubuntu 上使用終端卸載軟體,可以使用:
sudo apt remove package_name
但是在很多論壇,你可能會看到別人說,如果你想徹底刪除軟體就用 apt purge
。
你可能會覺得很困惑,因為 apt purge
和 apt remove
看起來是一樣的。
sudo apt purge package_name
為什麼會有兩個如此像的命令來刪除軟體包呢?兩者之間有什麼不同呢?下面將為你揭曉。
apt-remove 和 apt-purge 有什麼不同?
apt-remove
和 apt-purge
的相同之處就是都可以卸載軟體包,但是運行 apt-purge
除了可以刪除安裝包之外,還可以清除相關的配置文件。這是兩者之間唯一的不同點。要注意的是這兩條命令都不能刪除用戶主目錄中相關的應用程序文件。
你是否遇到過這樣的情況,卸載一個軟體然後重新安裝,卻發現之前的設置都還在。這是因為用 apt remove
不能刪除該軟體的相關配置文件。
哪些東西被刪除了?哪些還在?
我分享一個使用 apt remove
和 apt purge
兩個命令分別卸載 mplayer 這個軟體的實際例子。重點是看每次操作後還殘餘哪些文件。
這是刪除前的文件:
現在運行 apt remove
這個命令:
下面的是還殘留在系統中的文件:
我們可以看到,有兩個地方殘留著 mplayer 的文件: /etc
和 /home/abhishek
。
這次我們重新安裝 mplayer,然後用 apt purge
來卸載軟體。
現在讓我們看看與 mplayer 相關的文件:
我們可以看到 /etc
目錄下的文件已經沒有了。
但是在主目錄中的文件呢?apt purge
會刪除它們嗎?
答案是否定的。apt
命令不會刪除主目錄中的配置文件。所以它們仍然在系統中,除非你手動刪除。但是這些文件所佔的空間真的很小,幾乎不佔磁碟空間。
值得注意的是,不是所有的軟體在主目錄或者 /etc
目錄下都有配置文件。
使用 apt remove 或者 apt purge 的效果
我能想到的一個實際例子就是 Discord,你用 deb 文件 在 Ubuntu 上安裝了 Discord。然後登錄自己的賬號,之後又卸載並重新用 deb 文件安裝。
現在如果你打開 Discord,你會發現你的賬號自動登錄了。是不是覺得很奇怪?
這是個功能,像一些軟體,比如 Discord、VirtualBox,它們會提供更新,就是卸載現在的版本然後下載新的(儘管你不知道它內部怎麼進行的),但是它在卸載的時候,這些軟體的配置文件沒有被刪除,所以等你打開這些軟體的時候就會自動登錄。
當你想卸載一個軟體,但是想保留你過去使用該軟體留下的配置文件的時候,你就可以用 apt remove
。
但是,有時候用它不能滿足你的需求,比如當你沒有配置好一個軟體的時候,你想要重新開始,這個時候用 apt purge
就比較合適。
運行 apt purge 是否可以用通配符刪除?
當你刪除一個包的時候,它會提示 removing package-name*
。這意味著它會刪除以這個包名開頭的所有文件。
我在手冊頁之類的文檔中沒有找到關於這個問題的答案。所以我自己做了一個小測試,我安裝了 espeak 和 espeak-ng 這兩個軟體,espeak* 應該可以通配擴展到 espeak-ng。
但是當我用 apt purge
刪除 espeak 包時,espeak-ng 包還在,沒有被一併刪除。因此,這似乎是有一種防止通配符的擴展的機制。
那麼,你應該使用 apt remove 還是 apt purge 呢?
很少有人會一直使用 apt purge
。
在我看來,一般清況下,用 apt remove
就可以了,但是當你想刪除那些自定義配置文件時,你就得用 apt purge
。
不管是用 apt remove
還是 apt purge
,你都需要從用戶的主目錄中刪除殘餘的配置文件,並運行 apt autoremove
來清除任何依賴的包。
現在到你啦。你現在對 apt remove
和 apt purge
的區別更加了解嗎?你更喜歡使用哪一個呢?
via: https://itsfoss.com/apt-remove/
作者:Abhishek Prakash 選題:lkxed 譯者:Tingze-G 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive