从 13.04 更新到 13.10 时,do-release-upgrade 因 decode() 中的 UnicodeDecodeError 而崩溃

Pat*_*ryk 10 upgrade 13.10

我刚刚尝试从 13.04 升级到 13.10,但在控制台中收到以下错误

Checking for a new Ubuntu release
authenticate 'saucy.tar.gz' against 'saucy.tar.gz.gpg' 
extracting 'saucy.tar.gz'
Traceback (most recent call last):
  File "/tmp/user/0/ubuntu-release-upgrader-xnzjbd/saucy", line 10, in <module>
    sys.exit(main())
  File "/tmp/user/0/ubuntu-release-upgrader-xnzjbd/DistUpgrade/DistUpgradeMain.py", line 240, in main
    save_system_state(logdir)
  File "/tmp/user/0/ubuntu-release-upgrader-xnzjbd/DistUpgrade/DistUpgradeMain.py", line 133, in save_system_state
    scrub_sources=True)
  File "/tmp/user/0/ubuntu-release-upgrader-xnzjbd/DistUpgrade/apt_clone.py", line 149, in save_state
    self._write_state_sources_list(tar, scrub_sources)
  File "/tmp/user/0/ubuntu-release-upgrader-xnzjbd/DistUpgrade/apt_clone.py", line 241, in _write_state_sources_list
    "./etc/apt/sources.list.d/"+source)
  File "/tmp/user/0/ubuntu-release-upgrader-xnzjbd/DistUpgrade/apt_clone.py", line 246, in _add_file_to_tar_with_password_check
    for line in f.readlines():
  File "/usr/lib/python2.7/codecs.py", line 296, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x9f in position 3: invalid start byte
Run Code Online (Sandbox Code Playgroud)

这是我在update-managergui 中得到的

do-release-upgrade crashed on UnicodeDecodeError in decode(): 'utf8' codec can't decode byte 0x9f in position 3 : invalid state
Run Code Online (Sandbox Code Playgroud)

小智 12

查看sources.list.d 中是否有包含二进制垃圾(python unicode 解码器在其上吹散块)的任何点文件(以句点开头的文件)。我遇到了同样的问题,当我从 /etc/apt/sources.list.d/ 中删除点文件时,它又工作了。

  • 有同样的问题。这是一个导致 Python 呕吐的 Vim 撤消文件。 (3认同)

小智 6

对于遇到类似问题的人来说,最简单的解决方案是:

export LC_ALL=C.UTF-8
export LANG=C.UTF-8
do-release-upgrade
Run Code Online (Sandbox Code Playgroud)

十分简单。UTF-8这适用于与任何类型的安装相关的许多类似问题。相信我!