Yüklü enstantane eski sürümü nasıl kaldırılır


65

Snap kullanımıyla yeniyim, sistemime yüklü birkaç uygulamam var df -h, aynı çalıştırmanın farklı sürümlerini monte ettiğimde komutunu çalıştırdığımda fark ettiğim bir şey var

/dev/loop0       143M   143M     0 100% /var/lib/snapd/snap/gravit-designer/7
/dev/loop1        82M    82M     0 100% /var/lib/snapd/snap/core/4110
/dev/loop7       198M   198M     0 100% /var/lib/snapd/snap/polarr/3
/dev/loop2        82M    82M     0 100% /var/lib/snapd/snap/core/4206
/dev/loop3       143M   143M     0 100% /var/lib/snapd/snap/gravit-designer/6
/dev/loop10      137M   137M     0 100% /var/lib/snapd/snap/gravit-designer/5

Benim sorum orada neden tuttukları, eskisini çıkarmak için bulduğum tek yol, çırpıda tekrar takıp kurmak, prunesistemimi korumak gibi bir şey mi var?


Yanıtlar:


84

İşte tüm eski sürüm sürümlerini kaldıracak kısa bir komut dosyası . Bu, yalnızca mevcut disk sürümünü koruyacaktır, bu da sizi biraz disk alanından kurtarır:

#!/bin/bash
# Removes old revisions of snaps
# CLOSE ALL SNAPS BEFORE RUNNING THIS
set -eu

LANG=C snap list --all | awk '/disabled/{print $1, $3}' |
    while read snapname revision; do
        snap remove "$snapname" --revision="$revision"
    done

Eski sürümlerin tümü başarıyla kaldırıldı, ancak diskime yer eklenmedi!
mtoloo

/var/lib/snapd/snaps/Bu betiği çalıştırmadan önce ve sonra dir'i kontrol edin . Biraz yer açmalıydı - eğer gerçekten biraz çekip çıkardıysanız. Bu gibi mesajlar göstermelidir snap-name removedörn gtk-common-themes removed.
PeterM

İçinde bazı bağlantılar var, /var/lib/snapd/cachebu yüzden yer açmak için bunları silmelisiniz. sudo rm /var/lib/snapd/cache/*
İle

42

Snap 2.34 ve sonrasında başlayarak, refresh.retain seçeneğini ayarlayarak, sistem tarafından kaydedilen maksimum revizyon sayısını belirleyebilirsiniz .

$ sudo snap set system refresh.retain=2 

Refresh.retain değeri yalnızca 2 ve 20 arasında bir sayı ve 3 bir varsayılan değeri vardır.


1
Bunu yaptıktan sonra, geçerli sürümler ne zaman temizlenir?
Tim Richardson,

Yeni sürüm yüklendiğinde eskilerin silindiğini düşünüyorum. Bildiğiniz gibi, snap, yüklü uygulamaları refresh.timer seçeneğine bağlı olarak otomatik olarak günceller, bu nedenle güncellemeyi manuel olarak yapmak zorunda değilsiniz
Mustapha Hadid

Fakat bilgisayarımın kaç tanesine ihtiyacı olduğunu nasıl kontrol edebilirim? Örnek: 4 refresh.retain=3Gb RAM için iyidir veya daha fazlasına mı ihtiyacınız var?
Peter Krauss

1
@PeterKrauss Bu, depolama cihazınızın kapasitesine bağlıdır. RAM kapasiteniz ile hiçbir ilgisi yoktur.
Mustapha Hadid

30

Komut dosyasının başka bir yanıttan , bir liner olarak, awkbağımlılık olmadan bir sürümü :

# snap list --all | while read snapname ver rev trk pub notes; do if [[ $notes = *disabled* ]]; then snap remove "$snapname" --revision="$rev"; fi; done

Bu büyük olasılıkla bashveya [[yapıyla uyumlu bir kabuk gerektirir .


6
Bu, anlık görüntü ekleyebilen bir kullanıcıdan çalıştırılmalıdır. Ubuntu Core'da yönetici kullanıcı normal Ubuntu'da çalışır, bir sudo -ioturum gerekebilir veya snap removeçalıştırılması gerekebilir sudo.
Gert van den Berg

@ rubo77, bir İngilizce yerel ayarını varsaydığını belirtti. export LC_ALL=en_US.UTF-8Önceden yaptıktan sonra bir alt kabuğa (ana kabuğun yerel env değişkenleriyle karışmaması için) çalıştırmak, bunu sağlamalıdır. (Ayrıca snap komutundan önce de ayarlanabilir, ancak daha sonra kaldırılanların da çevrilmesi gerekip gerekmediğinden emin değilim)
Gert van den Berg

LANG=c Bütün hatlar Alman konsollarında iyi
sonuçlanmadan

@ rubo77 Varsayılan yerel ayar için büyük olasılıkla LANG=C(veya LC_ALL=C) olması gerekir . Geçersiz bir yerel ayarın varsayılanı olması cnedeniyle küçük harf çalışabilir C. ( LC_MESSAGESmuhtemelen minimum ayardır) (Gönderiyi pek çok kullanıcının ihtiyaç duymadığı bir ayar için düzenlemek istemiyorum ...) ( LANG=c localeile arasındaki hataları karşılaştırıyorsunuz LANG=C locale)
Gert van den Berg

17

Sürümlerinde snapd docs eski revizyonları otomatik son iki revizyonlar fazla böylece kaldırılması gerektiğini devlet kurulur. Ancak, enstantanelerin ikiden fazla versiyonunun da kurulu olduğunu gördüm.

Gibi bir snap list --allşey görmek için tüm revizyonları listeleyebilirsiniz :

Name     Version                  Rev   Tracking  Developer  Notes
core     16-2.31.2                4206  stable    canonical  core,disabled
core     16-2.32.3                4407  stable    canonical  core,disabled
core     16-2.32.5                4486  stable    canonical  core
spotify  1.0.70.399.g5ffabd56-26  5     stable    spotify    disabled
spotify  1.0.72.117.g6bd7cc73-35  6     stable    spotify    disabled
spotify  1.0.77.338.g758ebd78-41  13    stable    spotify    -

İle bireysel revizyonları kaldırabilirsiniz snap remove spotify --revision=5.

Bu, corediğer bağımlılıkların devre dışı bırakılmış revizyonları için bile güvenlidir ve snap removeaçık bir şekilde --revision=..., anlık disabledolmayanları kaldırmanızı bile önler .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.