##############################################################################
# Take Care this section may break your System !!!
##############################################################################
##Move snap folder to Home instead of root.
#Create the directory : you can change the location
mkdir -p /home/$USER/snap/snapd
#Stop auto-updating (will *not* crash snaps already open)
sudo systemctl mask snapd.service
sudo systemctl stop snapd.service
sudo systemctl disable snapd.service
#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 are kept for
recovery until you, manually reboot the system and make sure the service
is running correctly. Then you can manually remove the folder ~/snap/snapd
!!!!!!!!!!!!!!, you should do that manually."
fi
#Restart auto-updating
sudo systemctl unmask snapd.service
sudo systemctl start snapd.service
sudo systemctl reenable snapd.service
##############################################################################
# Take care the previous section may break your System !!!
##############################################################################
更改 snaps 安装目录
这是许多人要求的常见问题。似乎 snap 开发人员不打算很快解决它,因此提出了一些解决方案。
第一个被社区强烈拒绝但我没有尝试的解决方案是使用符号链接来链接导致快照的目录。这种方法似乎不起作用,因为社区回复说 AppArmor 不适用于符号链接。
第二个解决方案是对我来说已经安装的应用程序工作正常但无法安装新应用程序的
mount --bind
目录/val/lib/snapd/snaps
,因为我正在将目录移动到另一个分区。这给了我一个关于将 snap 应用程序与位于/var/lib/snapd/cache
. 我不知道如果该位置是否在同一个分区中,此解决方案是否可行;但这就是为什么我要移动 snap 目录以将一些空间从分区释放到另一个分区的原因。第三个也是可行的选项是将
/var/lib/snapd
目录作为一个整体移动,然后mount --bind
从另一个位置移动到它,这对我有用,这里是步骤。只是一个小提示,您已经知道,在以下步骤中完成 rsync 后,您可以将里面的数据备份
/var/lib/snapd
到另一个位置,直到整个过程成功完成,然后如果您想释放更多空间,您可以删除备份数据但是保持/var/lib/snapd
目录本身甚至是免费的,因为它被挂载点使用。参考
我找到了这种方式...
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]
. 将其更改为新的 snap 包位置。/var/lib/snapd/snaps/
.前任:
ln -s ~/snaps/snap_app.snap /var/lib/snapd/snaps/snap_app.snap
Snap 包最初是挂载到
/snap/snap_app
目录中的。你可以用mount
. 重新启动你的机器,你就完成了。我的 VLC Player snap 体验
要求。我想将 VLC snap 安装从一个 Ubuntu 18.04 系统“克隆”到另一个。原因。有限的互联网限额和带宽。
我按照@Lakindu-Akash 编写的步骤进行操作。谢谢你。这为我进入 snap 安装世界提供了一个很好的起点。我发现我有重复的 VLC 快照。见下文。
已清理 1) /snap/vlc$ ls 1620 1700 当前 /snap/vlc$
1700是当前的。我删除了 1620 目录和内容。
2)在 /etc/systemd/system$ 我有 snap-vlc-1620.mount snap-vlc-1700.mount
所以我在这里删除了1620名词。
/etc/systemd/system$ sudo rm snap-vlc-1620.mount
3) 在 /var/lib/snapd/snaps$
我有 -rw------- 1 根 305086464 8 月 00 日 00:00 vlc_1620.snap -rw------- 1 根 304545792 2020 年 7 月 15 日 vlc_1700.snap
我在这里删除了 vlc_1620.snap,它是实际的 snap 下载文件。
/var/lib/snapd/snaps$ sudo rm vlc_1620.snap
在阅读了snap 论坛后,谢谢@adam-monsen,我决定从位于 /var/lib/snapd/snaps$ 中的 snap 文件进行安装,其中实际下载的 VLC snap 文件是而不是 inode(指针) .
我将 vlc_1700.snap 复制到新机器并从该目录中运行命令
sudo install snap vlc_1700.snap --dangerous
其中 vlc_1700.snap 是快照的名称(图像或您所称的)显然此安装将永远不会更新,因为我没有使用确认号?我必须了解 ack 及其用法。但是安装很顺利,VLC 可以在新系统上运行。如果您也想在同一台机器上重新安装到不同的位置,我会冒险说这可能会有所帮助。这是因为新的快照映像是在安装快照映像所在的目录中创建的,并且已启动安装进程。
在您移动文件夹之前,请注意并警告有活动的重型机械(活动目录)带有移动部件,您需要在采取任何行动之前仔细观察。
www.Snapcraft.io在传输过程中让用户措手不及的风险是数据丢失的灾难性失败,因为对同一数据运行多个同步进程,如果它破坏 MySQL(一直在云数据中心),肯定会也破坏用户。
“屏蔽/停止/禁用”在您触摸任何东西之前,请使用以下命令:
*不会使已打开的快照崩溃。
确定一切正常后,恢复正常设置:
鉴于如何停止 snapd 自动更新所代表的挫伤和恐怖,所有 3 个命令“MASK/STOP/DISABLE”都是必需的?答案,这表明没有一个人可以权威地谈论如何解决这个问题。就像我在这里回答的问题一样,一个简单的移动操作、阻止 snapcraft 变得狡猾的超现实的耗时和不可预测的努力是一个障碍。
我评论了将快照包移动到另一个位置/目录“风险方面,如果 Snapcraft 在 Rsync 行为期间 [is] 处于活动状态(如何停止 snapd 自动更新?),这有关系吗?Snap 不能提供可预测的时间,并且可以推送随机更新在这个并行(r)同步期间,在那个重要的边缘情况下会导致灾难性的数据丢失吗?我在 askubuntu.com/review/suggested-edits/1167854 之前使用 sudo systemctl mask/stop/disable snapd.service 和 sudo 编辑了脚本systemctl unmask/start/reenable snapd.service 之后,非常谨慎。”
最初来自我在https://askubuntu.com/review/suggested-edits/1167854和https://askubuntu.com/review/suggested-edits/1168074的编辑,可以预见的是,第一个没有被批准,因为我说“Snapcraftiness”描述自动更新机制的恐怖狡猾和腐败。(我们从当之无愧的apt-get到 snap/ snapcraft,它本可以被称为“
snapt
”而不是为了表示敬意,有人认为 ever-so-witty “snapcraft
”是一个更好的描述,所以我认为我的措辞Snapcraftiness
准确地说是最好的合适和适当的编码。我已经使用计算机 25 年了,我遇到程序问题的第一年是安装 Snapcraft.io 并发现它升级了软件,这并没有带来任何改进,并导致服务提供商当面否认的服务质量下降大量用户证据。有一天,我发现这比错误更深层次,几乎是一种黑客攻击,完全没有正式标准化,可以描述为普通/普通用户的固有风险。
当多个数据操作提交到相同的数据点时,这些类型的风险会损坏数据、损坏硬盘驱动器,甚至损坏整个数据中心服务器,如果存在重叠活动,可能会破坏物理数据存储,这将成为一个物理问题,如果不仅会导致软件数据损坏问题,有时也称为“竞争条件” (https://en.wikipedia.org/wiki/Race_condition,https://simple.wikipedia.org/wiki/Race_condition,https://stackoverflow 。com/questions/34510/what-is-a-race-condition)在程序员社区中类似,如果不仔细观察的话。
我从发生这些问题的个人经验说起,并阅读了其他人的经验,这些经验处理了一些软件/存储库公然运行的无知方式的后果,而没有牢记这些有风险的用户。
我正在使用 ntfs 分区并且必须更改挂载选项以解决此错误:
我减少了注释掉的条目,直到它仍然有效,但没有对其进行太多测试。
有关的:
如何在 NTFS(或 FAT32)分区上使用“chmod”?
启动时挂载 NTFS 分区,以非 root 用户为所有者
用于
systemctl daemon-reload
在 /etc/systemd/system 中重新加载 snap mount 单元文件。或apt purge snapd
清除它们并重新安装所有内容。