स्थापित स्नैप्स के पुराने संस्करण को कैसे हटाएं


65

मैं स्नैप उपयोग के साथ newbiew हूं, मेरे पास मेरे सिस्टम पर कुछ एप्लिकेशन इंस्टॉल हैं, कुछ ऐसा है जो मैं नोटिस करता हूं जब df -hमैं कमांड चलाता हूं तो मुझे एक ही स्नैप के विभिन्न संस्करण मिलते हैं

/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

मेरा सवाल यह है कि वे वहां क्यों रहते हैं, पुराने को हटाने के लिए मैंने जो एकमात्र तरीका पाया, उसे हटा दें और फिर से स्नैप को स्थापित करें, pruneमेरे सिस्टम को बनाए रखने के लिए कुछ ऐसा है?


जवाबों:


84

यहां एक छोटी स्क्रिप्ट है जो सभी पुराने संस्करणों को हटा देगी । यह केवल वर्तमान सक्रिय संस्करण को रखेगा, जिससे आपको कुछ डिस्क स्थान पुनर्प्राप्त करना चाहिए:

#!/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

इसने सभी पुराने संस्करणों को सफलतापूर्वक हटा दिया, लेकिन मेरी डिस्क में कोई स्थान नहीं जोड़ा गया है!
मट्टू जू

/var/lib/snapd/snaps/इस स्क्रिप्ट को चलाने से पहले और बाद में dir चेक करें । कुछ स्थान खाली करना चाहिए - यदि वास्तव में कुछ स्नैप हटा दिए गए हैं। यह snap-name removedजैसे संदेशों को दिखाना चाहिए , जैसे gtk-common-themes removed
पीटरएम

कुछ हार्डलिंक हैं, /var/lib/snapd/cacheइसलिए आपको खाली जगह खाली करने के लिए उन्हें हटाना होगा। आप कैश को सुरक्षित रूप सेsudo rm /var/lib/snapd/cache/*
rubo77

42

स्नैप 2.34 से शुरू करना और बाद में, आप रिफ्रेश को सेट करके विकल्प द्वारा संग्रहीत स्नैप के संशोधन की अधिकतम संख्या निर्धारित कर सकते हैं । विकल्प चुनें।

$ sudo snap set system refresh.retain=2 

Refresh.retain मूल्य केवल 2 और 20 के बीच में होनी है और 3 के डिफ़ॉल्ट मान सकते हैं।


1
ऐसा करने के बाद, डिफ़ॉल्ट 3 से 2 की नई सेटिंग पर जा रहे हैं, वर्तमान संस्करणों को कब शुद्ध किया जाता है?
टिम रिचर्डसन

मुझे लगता है कि नए संस्करण को स्थापित करने पर पुराने स्नैप्स को शुद्ध किया जाएगा। जैसा कि आप पहले से ही जानते हैं, अपडेट अपडेट्स स्वतः ही रिफ्रेश.टाइमर विकल्प के आधार पर इंस्टॉल हो जाते हैं, इसलिए आपको अपडेट मैन्युअल रूप से नहीं करना होगा
मुस्तफा हदीद

लेकिन कैसे जांचें कि मेरे कंप्यूटर को कितने की आवश्यकता है? उदाहरण: 4 जी refresh.retain=3रैम के लिए अच्छा है या अधिक की आवश्यकता है?
पीटर क्रूस

1
@PeterKrauss यह आपके स्टोरेज डिवाइस की क्षमता पर निर्भर करता है। इसका आपकी RAM क्षमता से कोई लेना देना नहीं है।
मुस्तफा हदीद

30

अन्य उत्तर से स्क्रिप्ट का एक संस्करण , एक लाइनर के रूप में, awkनिर्भरता के बिना :

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

इस संभावना की आवश्यकता है bashया [[निर्माण के साथ संगत शेल ।


6
यह उस उपयोगकर्ता से चलाया जाना चाहिए जो स्नैप जोड़ सकता है। उबंटू कोर पर, व्यवस्थापक उपयोगकर्ता काम करता है, सामान्य उबंटू पर, एक sudo -iसत्र की आवश्यकता हो सकती है, या इसके snap removeसाथ चलने की आवश्यकता हो सकती है sudo
गर्ट वैन डेन बर्ग

@ rubo77 ने बताया कि यह एक अंग्रेजी लोकेल मानती है। पहले से करने के बाद इसे एक उप-शेल (मुख्य शेल के लोकेल एनवी चर के साथ गड़बड़ नहीं करने के लिए) चलाना export LC_ALL=en_US.UTF-8चाहिए। (यह स्नैप कमांड से पहले भी सेट किया जा सकता है, लेकिन मुझे यकीन नहीं है कि बाद में हटाए जाने पर अनुवाद करने की आवश्यकता हो सकती है)
गर्ट वैन डेन बर्ग

LANG=c जर्मन कंसोल्स पर पूरी लाइन ठीक काम करने से पहले बस जोड़ें
Rubo77

@ rubo77 यह डिफ़ॉल्ट स्थान के लिए वास्तव में होना चाहिए LANG=C(या LC_ALL=C)। अमान्य लोकेल के लिए डिफ़ॉल्ट होने के cकारण लोअरकेस काम कर सकता है C। ( LC_MESSAGESन्यूनतम सेटिंग होने की संभावना है) (मैं एक सेटिंग के लिए पोस्ट को संपादित नहीं करना चाहता हूं कि कई उपयोगकर्ताओं को हालांकि ज़रूरत नहीं है ...) (आप के LANG=c localeसाथ त्रुटियों की तुलना करें LANG=C locale)
गर्ट वैन डेन बर्ग

17

संस्करणों पर snapd डॉक्स राज्य है जो पुराने संशोधन स्वचालित रूप से इतना है कि कोई और अधिक पिछले दो संशोधन से हटा दिया जाना चाहिए स्थापित कर रहे हैं। हालाँकि, मैंने अपने स्नैप्स के दो से अधिक संस्करण भी देखे।

आप snap list --allकुछ देखने के लिए सभी संशोधनों को सूचीबद्ध कर सकते हैं:

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    -

आप के साथ अलग-अलग संशोधन निकाल सकते हैं snap remove spotify --revision=5

यह अक्षम संशोधनों coreऔर अन्य निर्भरताओं के लिए भी सुरक्षित है , और snap removeस्पष्ट रूप --revision=...से आपको गैर- disabledस्नैप्स को हटाने से भी रोकता है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.