나는 스냅 사용법을 가진 초보자이며, 시스템에 설치된 앱이 거의 없습니다. 명령을 실행할 때 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
스냅이 아닌 스냅 샷 을 제거 할 수 없습니다 .