Linux中國

如何在 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 disk usage

這可真夠多的,對吧?你可以在這裡騰出一些磁碟空間。根據設計,Snap 至少會在你的系統上保留一個你所安裝的軟體包的舊版本。你可以通過使用 Snap 命令看到這種行為:

snap list --all

你應該看到同一個軟體包被列了兩次,而且版本和修訂號都不同。

Snap keeps at least two versions of each package

為了釋放磁碟空間,你可以刪除額外的軟體包版本。你怎麼知道要刪除哪一個呢?你可以看到,這些較舊的軟體包被標記為「禁用」。

不要擔心。你不需要手動操作。由於 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

你可以看到,它開始刪除舊版本的軟體包。

Removing old snap package versions

如果你現在檢查 Snap 使用的磁碟空間,你會發現現在的目錄大小已經減少了。

$ sudo du -sh /var/lib/snapd
3.9G    /var/lib/snapd

如果這對你有用,你可以偶爾運行這個命令。

這個腳本是如何工作的?

如果你對這個腳本的作用感到好奇,讓我來解釋一下。

你已經看到了 snap list -all 命令的輸出。它的輸出被傳遞給 awk 命令。Awk 是一個強大的腳本工具。

awk '/disabled/{print $1, $3}' 部分在每一行中尋找字元串 disabled,如果找到它,它將提取第一列和第三列。

這個輸出被進一步傳遞給 whileread 命令的組合。讀取命令獲取第一列的 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

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國

    Linux中國

    DevOps 將去向何方?

    微軟、谷歌、亞馬遜、IBM 和甲骨文如今都在關注云上的 DevOps。這些大公司正在給企業提供 IT 自動化的服務。然而,DevOps 仍然在持續的演進中。DevSecOps、AIOps 和 NoOps 正在成為下一個流行詞。