如何在 Linux 中清理 Snap 包的版本
Snap 軟體包並不是每個人都喜歡的,但它們是 Ubuntu 生態系統中不可或缺的一部分。
它有其優點和缺點。其中一個缺點是,Snap 包通常體積較大,佔用大量的磁碟空間。如果你的磁碟空間不夠用,特別是在根分區上,這可能是一個問題。
讓我分享一個巧妙的技巧,你可以用它來減少 Snap 包使用的磁碟空間。
清理舊的 Snap 包版本以釋放磁碟空間
與 snap 有關的系統文件都存放在 /var/lib/snapd
目錄下。根據你所安裝的 Snap 包的數量,這個目錄的大小可能在幾 GB。不要只聽我的一面之詞。通過 使用 du 命令檢查目錄大小 來進行評估。
$ sudo du -sh /var/lib/snapd
5.4G /var/lib/snapd
你也可以使用磁碟使用分析器這個 GUI 工具來查看 Ubuntu 的磁碟使用情況。
這可真夠多的,對吧?你可以在這裡騰出一些磁碟空間。根據設計,Snap 至少會在你的系統上保留一個你所安裝的軟體包的舊版本。你可以通過使用 Snap 命令看到這種行為:
snap list --all
你應該看到同一個軟體包被列了兩次,而且版本和修訂號都不同。
為了釋放磁碟空間,你可以刪除額外的軟體包版本。你怎麼知道要刪除哪一個呢?你可以看到,這些較舊的軟體包被標記為「禁用」。
不要擔心。你不需要手動操作。由於 Alan Pope 在 Snapcraft 團隊工作時寫的一個靈巧的 bash 腳本,有一種自動的方法可以做到。
我希望你知道 如何創建和運行 bash shell 腳本。基本上,創建一個名為 clean-snap.sh
的新文件,並在其中添加以下幾行。
#!/bin/bash
# Removes old revisions of snaps
# CLOSE ALL SNAPS BEFORE RUNNING THIS
set -eu
snap list --all | awk '/disabled/{print $1, $3}' |
while read snapname revision; do
snap remove "$snapname" --revision="$revision"
done
保存它並關閉編輯器。要運行這個腳本,把它放在你的主目錄中,然後 在 Ubuntu 中打開終端,運行這個命令:
sudo bash clean-snap.sh
你可以看到,它開始刪除舊版本的軟體包。
如果你現在檢查 Snap 使用的磁碟空間,你會發現現在的目錄大小已經減少了。
$ sudo du -sh /var/lib/snapd
3.9G /var/lib/snapd
如果這對你有用,你可以偶爾運行這個命令。
這個腳本是如何工作的?
如果你對這個腳本的作用感到好奇,讓我來解釋一下。
你已經看到了 snap list -all
命令的輸出。它的輸出被傳遞給 awk 命令。Awk 是一個強大的腳本工具。
awk '/disabled/{print $1, $3}'
部分在每一行中尋找字元串 disabled
,如果找到它,它將提取第一列和第三列。
這個輸出被進一步傳遞給 while
和 read
命令的組合。讀取命令獲取第一列的 Snap 包名和第三列的修訂號變數。
然後,這些變數被用來運行 snap remove
命令,用 Snap 包名和它的修訂號來刪除。
只要發現有包含 disabled
字元串的行,就會運行 while
循環。
如果你對 shell 腳本略知一二,這一切就很容易理解了。如果你不熟悉,我們有一個 初學者的 bash 教程系列 給你。
你拿回了你的空間了嗎?
你可能會看到一些論壇建議將 Snap 軟體包的保留值設置為 2。
sudo snap set system refresh.retain=2
我認為現在不需要了。現在 Snap 的默認行為是為任何軟體包保存兩個版本。
總而言之,如果你的空間不夠用,擺脫額外的軟體包版本肯定是 釋放 Ubuntu 磁碟空間的方法 之一。
如果這個教程幫助你釋放了一些空間,請在評論區告訴我。
via: https://itsfoss.com/clean-snap-packages/
作者:Abhishek Prakash 選題:lujun9972 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive