由于 appstreamcli 数据库错误,无法“apt-get dist-upgrade”

Ber*_*ter 20 apt 16.04

我创建了一个带有持久性 Ubuntu 16.04(发行版)的 USB 记忆棒。我尝试了几种方法,使用 Startup Disk Creator 和 MultiSystem,但我得到了相同的最终结果。

当我启动到 USB 并执行“apt-get update”时,一切都很好。当我尝试 'apt-get dist-upgrade' 时,我得到:

** (appstreamcli:2761):关键**:将旧数据库移开时出错。AppStream 缓存更新失败。

我能找到的对此错误消息的唯一参考是https://bugs.launchpad.net/ubuntu/+source/ubiquity/+bug/1561472但似乎已修复,至少在 Ubuntu 发布版本时已修复16.04。

旁白:我想测试Unity8,包括安装软件。我没有备用计算机,所以我认为持久性 USB 可以解决问题。

有接班人吗?

lin*_*4kb 29

这也发生在我使用 16.04.1 live Ubuntu 持久性 USB 记忆棒时。

uncledave 的解决方案起初不起作用,但正如建议的那样,更改权限是最终解决方案。

然后我从 daniel-gimpelevich 找到了错误 1601971答案 #11以下命令帮助我修复apt-get update

sudo chmod -R a+rX,u+w /var/cache/app-info/xapian/default
Run Code Online (Sandbox Code Playgroud)

我怎么猜到 755 是正确的面具?和...之间的不同

ls -ld /var/cache/app-info/xapian
drwxr-xr-x 1 root root 4096 Nov 19 20:35 /var/cache/app-info/xapian/
Run Code Online (Sandbox Code Playgroud)

ls -ld /var/cache/app-info/xapian/default
drw-r--r-- 2 root root 4096 Jul 19 20:54 /var/cache/app-info/xapian/default
Run Code Online (Sandbox Code Playgroud)

在此 apt-get 更新运行良好之后。

sudo apt-get update
Hit:1 http://archive.ubuntu.com/ubuntu xenial InRelease
Get:2 http://security.ubuntu.com/ubuntu xenial-security InRelease [94.5 kB]
Get:3 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [95.7 kB]      
Fetched 190 kB in 0s (312 kB/s)                                                
Reading package lists... Done
Run Code Online (Sandbox Code Playgroud)

注意 1不建议以这种方式升级实时持久性 USB 记忆棒,如果安装/升级的软件包过多,它会导致问题。

Note2如果您想将 Ubuntu 用作可启动的“瑞士军刀”,最好将 Ubuntu 直接安装到 U 盘。


小智 2

谷歌搜索让我找到了这个链接:在 github 上

我已经尝试过这个命令,它对我有用:

chmod 777 /var/cache/app-info/xapian/default -R

  • **请不要无缘无故地推荐 `0777` 又名“请破解我的系统并销毁我的数据”权限!** 几乎没有理由这样做,因为可以通过以下方式避免它更明智的修改,例如更改(组)所有权。请参阅[linux64kb的答案](/a/851310/175814)以供参考。−1 (6认同)

小智 -1

我不知道如何正确解决这个问题,但是调用apt-get dist-upgrade两次对我来说很有效,我可以在已安装的 Ubuntu 上重现它(第一次调用时会出现错误,但第二次调用有效)。