У меня есть Python 2.7.15 + symlinked к python
и Python 3.6.7 symlinked к python3
. Когда я пытаюсь обновить Ubuntu до 19,04 с
sudo do-release-upgrade
это возвращает следующую ошибку:
Traceback (most recent call last):
File "/tmp/ubuntu-release-upgrader-k7w2kx7r/disco", line 8, in <module>
sys.exit(main())
File "/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeMain.py", line 238, in main
if app.run():
File "/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeController.py", line 2085, in run
return self.fullUpgrade()
File "/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeController.py", line 1906, in fullUpgrade
if not self.askLivepatch():
File "/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeController.py", line 1175, in askLivepatch
version = next((r.version for r in di.get_all("object") if r.series == self.toDist), self.toDist)
AttributeError: 'UbuntuDistroInfo' object has no attribute 'get_all'
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/problem_report.py", line 497, in add_to_existing
self.write(f)
File "/usr/lib/python3/dist-packages/problem_report.py", line 450, in write
block = f.read(1048576)
File "/usr/lib/python3.6/codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
Original exception was:
Traceback (most recent call last):
File "/tmp/ubuntu-release-upgrader-k7w2kx7r/disco", line 8, in <module>
sys.exit(main())
File "/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeMain.py", line 238, in main
if app.run():
File "/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeController.py", line 2085, in run
return self.fullUpgrade()
File "/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeController.py", line 1906, in fullUpgrade
if not self.askLivepatch():
File "/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeController.py", line 1175, in askLivepatch
version = next((r.version for r in di.get_all("object") if r.series == self.toDist), self.toDist)
AttributeError: 'UbuntuDistroInfo' object has no attribute 'get_all'
Я пытался обновить все пакеты Python прежде, чем обновить Ubuntu:
pip freeze --local | grep -v '^-e' | cut -d = -f 1 | xargs -n1 pip install -U
Это то, почему это перестало работать?
Похоже, что обычно это происходит из-за того, что версия distro-info, установленная в pip, затеняет версию apt [...]
Если вы ищете здесь быстрое решение:
sudo python3 -m pip удалить информацию о дистрибутиве sudo apt переустановить python3-distro-info
https://bugs.launchpad.net/ubuntu/+source/ubuntu-release-upgrader/+bug/1874250/comments/9
Я решил вопрос сам.
Я нахожу проблемный скрипт на python:
/usr/local/lib/python3.6/dist-packages/distro_info.py
Затем покройте его:
https://salsa.debian.org/debian/distro-info/raw/master/python/distro_info.py
, затем успешно запустите sudo do-release-upgrade.