스냅 패키지를 다른 위치 / 디렉토리로 이동 크기 때문에 루트 파티션의 공간을

설치된 스냅 패키지를 홈 디렉토리로 옮기고 싶습니다. 스냅 패키지는 .deb 패키지보다 약간 크기 때문에 루트 파티션의 공간을 차지합니다. 패키지가 있으며 패키지를에 /var/lib/snapd/snaps마운트하는 작업을하고 있음을 알고 있습니다 /snap/app_dir. 단순화하려고했지만 작동하지 않았습니다.



답변

스냅 설치 디렉토리 변경

이것은 많은 사람들이 요구하는 일반적인 문제입니다. 스냅 개발자가 곧 해결하려고하지 않는 것 같으므로 일부 솔루션이 제안되었습니다.

커뮤니티가 강력하게 거부했지만 첫 번째 해결책 은 심볼릭 링크를 사용하여 스냅으로 연결되는 디렉토리를 연결하는 것입니다. 커뮤니티의 답변에 따르면 apparmom은 심볼릭 링크와 함께 작동하지 않는다고 말하면서이 방법은 작동하지 않는 것 같습니다.

두 번째 해결책 은 이미 설치된 응용 프로그램에서 나에게 잘 작동 mount --bind하는 디렉토리 /val/lib/snapd/snaps이지만 디렉토리를 다른 파티션으로 이동했기 때문에 새 응용 프로그램을 설치하지 못했습니다. 스냅 응용 프로그램을에있는 캐시 디렉토리와 하드 링크하는 것에 대한 오류가 발생했습니다 /var/lib/snapd/cache. 위치가 동일한 파티션에 있는지 여부에 관계 없이이 솔루션이 작동하는지 알 수 없습니다. 그러나 이것이 파티션에서 다른 공간으로 공간을 확보하기 위해 snap 디렉토리를 이동하는 이유입니다.

세 번째이자 작업 옵션/var/lib/snapd디렉토리를 전체로 이동 한 다음 mount --bind다른 위치에서 디렉토리로 옮기는 것입니다.

아래 단계에서 rsync를 수행 한 후 /var/lib/snapd전체 프로세스가 성공적으로 완료 될 때까지 다른 위치로 데이터를 백업 한 다음 더 많은 공간을 확보하려는 경우 백업 데이터를 제거 할 수 있습니다.

##############################################################################
# Take Care this section may break the System !!!
##############################################################################
##Move snap folder to Home instead of root.
#Create the directory : you can change the location
mkdir /home/$USER/snap/snapd

#Copy the data
sudo rsync -avzP /var/lib/snapd/  /home/$USER/snap/snapd/

#Do backups
sudo mv /var/lib/snapd /var/lib/snapd.bak
sudo cp /etc/fstab /etc/fstab.bak

#Change fstab (Change $USER with your name or change the path totally)
echo "/home/$USER/snap/snapd /var/lib/snapd none bind 0 0" | sudo tee -a /etc/fstab

#remount fstab Or reboot.
sudo mkdir /var/lib/snapd
sudo mount -a

if ls  /var/lib/snapd/ | grep snaps
then
    echo "Re-mounting snapd folder is done successfully. !!!!"
    sudo rm -rf /var/lib/snapd.bak
else
    echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "
    echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "
    echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "
    echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "
    echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "

    # Trying to revert automatically
    sudo cp /etc/fstab.bak /etc/fstab

    sudo mount -a
    sudo umount /var/lib/snapd

    sudo mv /var/lib/snapd.bak /var/lib/snapd

    echo "Files located at ~/snap/snapd should be removed, but it keeped for
    recovery until you ,manually, reboot the system and make sure the service
    is running correctly then manually you can remove that folder ~/snap/snapd
    !!!!!!!!!!!!!!, you should do that manually."

fi
##############################################################################
# Take Care the pervious section may break the System !!!
##############################################################################

참고 문헌

  1. 특정 스냅 문제에 대한 사용자 정의 디스크 위치
  2. 질문 우분투 질문 (최고의 해결책은 아님) 링크
  3. 사용에 대한 제안은 바인드 스냅 디렉토리를 이동에 심볼릭 링크 대신 마운트 링크
  4. 바인딩의 차이 마운트 및 심볼릭 링크 링크
  5. 바인드 마운트 영구화

답변

나는 마침내 길을 찾았다.

  • 먼저 스냅 패키지를 원하는 위치로 이동하십시오. snap_app.snap당신이 이동하려는 응용 프로그램으로 보자 . 패키지를에서 /var/lib/snapd/snaps/snap_app.snap로 이동하십시오 ~/snaps/snap_app.snap.
  • 그런 다음에서 마운트 옵션을 변경해야 /etc/systemd/system/snap-snap_app-90.mount합니다. 파일 이름의 숫자는 다를 수 있습니다. What=/snap_app_loaction아래에 지시문 이 [Mount]있습니다. 새 스냅 패키지 위치로 변경하십시오.
  • 마지막으로 스냅 패키지를에 심볼릭 링크해야합니다 /var/lib/snapd/snaps/.
    전의:
    ln -s ~/snaps/snap_app.snap /var/lib/snapd/snaps/snap_app.snap

스냅 패키지는 원래 /snap/snap_app디렉토리에 마운트됩니다 . 로 확인할 수 있습니다 mount. 머신을 재부팅하면 모든 작업이 완료됩니다.