我如何在树莓派上删除一个未完成或破损的Nextcloud安装?

首先要说明的是:我知道这个问题涉及到Mate和树莓派,所以如果你认为它超出了这个论坛的范围,可以忽略它。但是有一点可能会对使用snaps或该平台有帮助或者典型,所以我还是想提一下。
我决定尝试安装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命令时,我收到以下错误信息:
"error: 无法移除“nextcloud”:snap "nextcloud" 正在进行更改" 我主要想做的是正确地移除该snap,并从它创建的分区中恢复空间。如果partition是正确的术语的话?
$ 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
名称 版本 Rev 开发者 备注
ubuntu-core 16.04+20160531.12-01 120 canonical -

虽然它在下面显示出来...

$ snap interfaces
: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 interfaces查询也没有显示任何内容。
2个回答

snap 命令实际上由两个组件组成,即服务器和客户端。您正在与客户端交互。当您在客户端取消安装操作时,您只是在客户端上取消了它。因此,它停止显示正在安装,但实际上它仍在安装(这是一个错误bug)。(更新: 这个错误在snapd v2.20.1中已修复。)
在服务器端,“changes”中正在发生所有这些事情。您可以在这里阅读更多相关信息,但对于您的目的,您只想中止此特定更改。要执行此操作,请运行:
$ snap changes
<snip>
203  Doing   2016-06-24T12:17:45Z  -  Install "nextcloud" snap

请注意ID为203,而且它正在进行中。要中止该操作,请使用更改ID:

$ sudo snap abort 203

而且这个变化应该停止了。然而,我必须说,变化在中途冻结的事实对于你中止它的能力并不是一个好兆头。如果它不起作用,也许尝试重新启动一下。如果那仍然没有解决问题,并且你可以接受失去所有快照和它们的数据,你可以使用这个脚本完全重置snapd状态。

目前要点赞,因为该脚本确实去除了分区,而这正是我的主要目标。我已经完成了这一步骤,然后回过头来整个过程中收集错误信息,并更新了问题,以反映这些信息,以及正如你所说的,冻结表明中止和删除不起作用。我会再等待一天,看是否有更简洁的方法来摆脱Nextcloud,如果没有,我会接受这个解决方案,因为脚本的效果很好。谢谢。 - Dennis
关于你提到的“分区”,我有点困惑。Snapd并不进行任何分区操作。你具体指的是什么? - kyrofa
我在问题中更新了信息。我可能对术语理解有误,但我指的是在lsblk中显示为分区的东西。它们在文件管理器中也显示为磁盘,但我显然不清楚容器是什么。你还可以通过最后的更新看到,你建议中止特定进程的确起作用了(如果我耐心一点的话)。 - Dennis
顺便说一下,从你的博客上看,你显然是这个话题上的“专家”。如果有什么我能提供的有用信息,关于为什么一开始这个方法不起作用,请告诉我。 - Dennis
哈哈,哦几乎不可能,我只是偶尔写一些东西。Snaps 只是 squashfs 镜像,然后被挂载到 /snap 目录下,这就是你在那里看到的东西。关于故障,看起来是 MATE 在 armhf 上的一些内核问题。能否麻烦您记录一个错误,提供这些信息,以便我们可以进行适当的调查? - kyrofa

当你看到一个错误的快照安装,并且你没有安装这个应用程序时,请运行以下命令。
sudo snap changes

寻找已安装应用的ID。
之后,运行以下命令
sudo snap remove app_name 

并返回

sudo snap install app