web-dev-qa-db-ja.com

do-release-upgradeは、13.04から13.10への更新中にdecode()のUnicodeDecodeErrorでクラッシュしました

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

これはupdate-manager guiで取得するものです

do-release-upgrade crashed on UnicodeDecodeError in decode(): 'utf8' codec can't decode byte 0x9f in position 3 : invalid state
6
Patryk

バイナリガベージ(python unicodeデコーダーがチャンクを吹き飛ばす)を含むドットファイル(ピリオドで始まるファイル)のsources.list.dを確認します。これと同じ問題があり、ドットファイルを/etc/apt/sources.list.d/から削除すると、再び機能しました。

12
user204109

私は原因と解決策が少し異なっていましたが、user204109による答えがこれを助けました。

基本的に、以前のdistアップグレードスクリプトによって挿入された/etc/apt/sources.list.d/の下のファイルには、いくつかの不適合なutf-8文字が含まれていました。これは、私の母国語にはASCII以外の文字がいくつかあり、明らかにローカリゼーションが以前はまったく正しくなかったためです。

犯人を見つける最も簡単な方法は、実行することです:

cd /etc/apt/sources.list.d
file *.list

次に、「ASCIIテキスト」としてリストされていない各ファイルをエディターで開き、ゴミと思われる文字を削除します。

1
fintux