从12.04升级到14.04时如何修复命令行中的“无法计算升级”问题?

我在DigitalOcean服务器上运行Ubuntu 12.04。

我想将其升级到更高版本(12.04-> 14.04-> 16.04),但由于上述错误而未能这样做。 DigitalOcean提供升级教程,但没有帮助,因为它没有解释如何解决问题。 我也尝试过使用命令行的类似问题的所有答案。 问题基本上与此处和此处相同:

"An unresolvable problem occurred while calculating the upgrade: E:Unable to correct problems, you have held broken packages. This can be caused by: * Upgrading to a pre-release version of Ubuntu * Running the current pre-release version of Ubuntu * Unofficial software packages not provided by Ubuntu" 
  • 我没有添加ppa
  • 我没有向/etc/apt/sources.list添加任何额外的资源。 但我必须提到,只列出了DigitalOcean镜像,没有ubuntu默认服务器。
  • 我在/var/log/dist-upgrade/apt.log列出了> 900个已打包的软件包。 (看起来他们都被打破了)
  • 我尝试了这些命令(按正确顺序) apt-get update, apt-get upgrade, apt-get dist-upgrade, apt-get --purge autoremove, apt-get autoclean, apt-get purge $(dpkg -l | awk '/^rc/ { print $2 }')等列出在类似问题的答案中,但他们没有做任何事,因为他们认为一切正常。

您对如何解决问题有任何建议吗?

更新:我认为source.list中的DigitalOcean服务器问题可能是一个问题,因此我将它们更改为原始的Ubuntu服务器。 现在我在apt.log中只得到2个错误:

 ERROR getting the encoding failed Traceback (most recent call last): File "/tmp/update-manager-cwZhf2/DistUpgrade/DistUpgradeView.py", line 40, in  locale.setlocale(locale.LC_ALL, "") File "/usr/lib/python2.7/locale.py", line 539, in setlocale return _setlocale(category, locale) Error: unsupported locale setting ERROR Dist-upgrade failed: 'E:Unable to correct problems, you have held broken packages. 

我不知道语言环境错误是否会导致它。 我尝试通过将LANGLANGUAGELC_ALL导出到"en_US.utf8"来修复它,但没有帮助。 我将尝试修复它并更新问题是否有帮助。

更新2:语言环境命令的输出:

 $locale locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory LANG=en_US.UTF-8 LANGUAGE=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=en_US.UTF-8 

更新3:将语言环境设置为“C”后(感谢Gunnar Hjalmarsson),语言环境错误从apt.log消失,但是调用do-release-upgrade仍导致错误:

 DEBUG /openCache(), new cache size 47033 DEBUG need_server_mode(): can not find a desktop meta package or key deps, running in server mode DEBUG Installing 'locales' (priority in required set 'required' but not scheduled for install) ERROR Dist-upgrade failed: 'E:Unable to correct problems, you have held broken packages.' 

仍然没有升级。

评论中长时间讨论的摘要:

do-release-upgrade无法运行,因为locales包不存在。 所以解决方案是安装locales ,这是一个必需的包。

当尝试使用aptitude通过apt-get install安装locales时,OP处理了一个依赖性问题,这提出了解决方案,而不仅仅是拒绝安装。