설치된 스냅의 이전 버전을 제거하는 방법 0 100%

나는 스냅 사용법을 가진 초보자이며, 시스템에 설치된 앱이 거의 없습니다. 명령을 실행할 때 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하는 것입니다. 시스템을 유지하는 것과 같은 것이 있습니까?



답변

다음은 이전 버전의 스냅을 모두 제거하는 간단한 스크립트입니다 . 이렇게하면 현재 활성 버전 만 유지되므로 디스크 공간이 약간 복구됩니다.

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

답변

snap 2.34 이상부터 refresh.retain 옵션 을 설정하여 시스템에 의해 저장된 스냅 개정의 최대 수를 설정할 수 있습니다 .

$ sudo snap set system refresh.retain=2

refresh.retain의 값은 2와 20 사이의 숫자와 3의 기본값있다.


답변

의존성이 없는 하나의 라이너로 다른 답변스크립트 버전 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[[ 구조 와 호환되는 쉘을 로합니다 .


답변

버전스냅 된 문서 에는 최신 두 개의 개정이 설치되지 않도록 오래된 개정이 자동으로 제거되어야한다고 명시되어 있습니다. 그러나 스냅 버전이 두 개 이상 설치되어있는 것도 확인했습니다.

모든 수정본을 나열하여 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스냅이 아닌 스냅 샷 을 제거 할 수 없습니다 .