Как и в предыдущем вопросе, когда я пытаюсь запустить sudo update-command-not-found
, я получаю эту ошибку
Traceback (most recent call last):
File "/usr/sbin/update-command-not-found", line 26, in <module>
col.create(db)
File "/usr/share/command-not-found/CommandNotFound/db/creator.py", line 94, in create
self._fill_commands(con)
File "/usr/share/command-not-found/CommandNotFound/db/creator.py", line 132, in _fill_commands
self._parse_single_contents_file(con, f, fp.stdout)
File "/usr/share/command-not-found/CommandNotFound/db/creator.py", line 228, in _parse_single_contents_file
l = l.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xed in position 15: invalid continuation byte
Я пробовал много способов избавиться от этого . Проблемы, похоже, были связаны с проблемой «utf-8». Есть идеи?
У меня такая же проблема на Raspberry Pi после перехода с Raspbian Stretch на Raspbian buster.
В моем случае основная причина заключается в том, что инструмент apt изменил формат файлов, хранящихся в /var/lib/apt/lists/*Contents*
, и теперь они кодируются с использованием Формат .lz4
. Поэтому команда update-command-not-found
больше не может их читать.
Вероятно, эту проблему можно решить с помощью новой версии инструмента «команда не найдена» (https://code.launchpad.net/command-not-found)
Для тех, у кого похожие проблемы, самое простое решение:
LC_ALL=C.UTF-8 update-command-not-found
И это работает для многих подобных проблем UTF-8, связанных с любыми установками. Поверь мне!
Типы Unicode String — это удобная функция Python, которая позволяет вам декодировать закодированные строки и забыть о кодировке до тех пор, пока вам не понадобится записать или передать данные. Python пытается преобразовать массив байтов (байты, которые он считает строкой в кодировке utf-8) в строку Unicode (str). Этот процесс, конечно же, является декодированием по правилам utf-8. Когда он пытается это сделать, он сталкивается с последовательностью байтов python , которая не разрешена в строках с кодировкой utf-8 (а именно это 0xff в позиции 0). Одним из простых способов избежать этой ошибки является кодирование таких строк с помощью функции encode() следующим образом (если a является строкой с символом, отличным от ascii):
a.encode('utf-8').strip()
Или
Используйте формат кодирования ISO-8859-1 для решения проблемы. проблема.