如何删除 Raspberry Pi 上不完整或损坏的 nextcloud 快照安装?

如何删除 Raspberry Pi 上不完整或损坏的 nextcloud 快照安装?

首先要说明的是:我知道这个问题涉及 Mate 和 Raspberry Pi,所以如果你认为它超出了本论坛的范围,请忽略它。但万一它对 Snap 或该平台有帮助或典型,那就继续吧。

我决定尝试安装 nextcloud snap。它抛出大量错误,并且似乎在安装过程中冻结(超过一个小时)。我关闭了它,然后决定尝试将其删除。安装看起来像......

$ sudo snap install nextcloud
2016-06-24T08:48:29-04:00 ERROR cannot setup apparmor for snap "nextcloud": cannot load apparmor profile "snap.nextcloud.apache": cannot load apparmor profile: exit status 1
apparmor_parser output:
Cache read/write disabled: interface file missing. (Kernel needs AppArmor 2.4 compatibility patch.)
Warning: unable to find a suitable fs in /proc/mounts, is it mounted?
Use --subdomainfs to override.

2016-06-24T08:53:29-04:00 ERROR cannot setup apparmor for snap "nextcloud": cannot load apparmor profile "snap.nextcloud.apache": cannot load apparmor profile: exit status 1
apparmor_parser output:
Cache read/write disabled: interface file missing. (Kernel needs AppArmor 2.4 compatibility patch.)
Warning: unable to find a suitable fs in /proc/mounts, is it mounted?
Use --subdomainfs to override.

[|] Setup snap "nextcloud" security profiles

当我尝试 snap remove nextcloud 时我得到

错误:无法删除“nextcloud”:快照“nextcloud”正在进行更改

我主要想做的是正确地删除快照并从它创建的分区中恢复空间。如果分区是正确的术语?

$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0         7:0    0  46.6M  0 loop /snap/ubuntu-core/120
loop1         7:1    0 113.9M  0 loop /snap/nextcloud/12
mmcblk0     179:0    0  14.9G  0 disk
├─mmcblk0p1 179:1    0    64M  0 part /boot
└─mmcblk0p2 179:2    0  14.8G  0 part /

我试过

取消 nextcloud

并得到

错误:无法找到 ID 为“nextcloud”的变更

我还应该注意到,它没有显示为已安装,因为我只得到以下内容

$ snap list
名称 版本 修订版 开发者说明
ubuntu-core 16.04+20160531.12-01 120 canonical -

虽然它确实出现在....

$ snap 接口
:network nextcloud
:network-bind nextcloud

我试过

$ snap changes
ID   Status  Spawn                 Ready  Summary
1    Doing   2016-06-24T12:39:20Z  -      Install "nextcloud" snap

$ sudo snap abort 1

$ snap changes
ID   Status  Spawn                 Ready  Summary
1    Abort   2016-06-24T12:39:20Z  -      Install "nextcloud" snap

但分区仍然存在。

**更新,为了调试,我再次运行了整个过程,并在“snap abort 1”命令后让它静置。在某个时刻,似乎后台已经完成了某些操作,因为 lsblk 什么都没显示,snap 接口查询什么都没显示。

答案1

snap命令实际上由两个组件组成:服务器和客户端。您正在与客户端交互。当您在客户端取消安装操作时,您只能在客户端取消它。因此它不再显示正在安装,但它仍在安装(这是一个漏洞)。 (更新:该错误已在 snapd v2.20.1 中修复。)

在服务器端,所有这些都发生在“变化”中。您可以阅读更多有关它们的信息这里,但就您的目的而言,您只想中止此特定更改。为此,请运行:

$ snap changes
<snip>
203  Doing   2016-06-24T12:17:45Z  -  Install "nextcloud" snap

请注意 ID 203,以及它现在正在“执行”的事实。要中止该操作,请使用更改 ID:

$ sudo snap abort 203

更改应该会停止。但是,我必须说,更改中途冻结的事实并不利于您中止它。如果它不起作用,也许可以尝试重新启动。如果这仍然没有解决问题,并且您愿意丢失所有快照及其数据,您可以使用以下命令完全重置 snapd 状态这个脚本

答案2

当你看到错误的 snap install 并且你没有安装该应用程序时,请运行以下命令

sudo snap changes

并查找已安装应用程序的 ID。
之后,运行命令

sudo snap remove app_name 

并返回

sudo snap install app

相关内容