[Bug 1825655] Re: do-release-upgrade fails with "Your python3 install is corrupted" if /usr/bin/python points to /etc/alternatives/python
Dmitrii Shcherbakov
1825655 at bugs.launchpad.net
Thu Oct 24 15:24:40 UTC 2019
If I am not mistaken, Disco/19.04 doesn't have the fix backported yet:
https://git.launchpad.net/ubuntu/+source/ubuntu-release-upgrader/tree/DistUpgrade/DistUpgradeController.py?h=ubuntu/disco-updates#n362
binaries_and_dirnames = [("python", "python"), ("python2", "python"),
("python3", "python3")]
While 19.10 does:
https://git.launchpad.net/ubuntu/+source/ubuntu-release-upgrader/tree/DistUpgrade/DistUpgradeController.py?h=ubuntu/eoan#n362
binaries_and_dirnames = [("python3", "python3")]
wolfgang-rumpf,
* do you have python2 installed by any chance?
* does /usr/bin/python point to /usr/bin/python2.7 or /etc/alternatives/python?
* if it points to /etc/alternatives/python you are hitting the original bug I filed about the incorrect check performed by the release upgrader. Without the fix, it looks at /usr/bin/python while it only actually cares about python3. So if you fix this symlink everything will work as expected.
If you just need to do it quickly on one system (i.e. upgrade your
laptop):
sudo rm /usr/bin/python
sudo ln -s /usr/bin/python2.7 /usr/bin/python
do-release-upgrade
Also, do you remember why an alternative was set up in the first place? It would be helpful to understand where this kind of setup is coming from.
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to ubuntu-release-upgrader in
Ubuntu.
https://bugs.launchpad.net/bugs/1825655
Title:
do-release-upgrade fails with "Your python3 install is corrupted" if
/usr/bin/python points to /etc/alternatives/python
Status in ubuntu-release-upgrader package in Ubuntu:
Fix Released
Bug description:
do-release-upgrade from 18.04 to 18.10 fails (likewise, when I
upgraded with a workaround the same happened for 18.10 -> 19.04):
"
Reading cache
Checking package manager
Can not upgrade
Your python3 install is corrupted. Please fix the '/usr/bin/python3'
symlink.
=== Command terminated with exit status 1 (Sat Apr 20 17:19:49 2019) ===
"
There is nothing wrong with /usr/bin/python3
➜ ~ ls -al /usr/bin/python3
lrwxrwxrwx 1 root root 9 окт 25 14:11 /usr/bin/python3 -> python3.6
I also have python2 installed for which Debian alternatives are
configured which causes the problem as far as I can see:
➜ ~ update-alternatives --display python
python - auto mode
link best version is /usr/bin/python2.7
link currently points to /usr/bin/python2.7
link python is /usr/bin/python
/usr/bin/python2.7 - priority 100
https://git.launchpad.net/ubuntu/+source/ubuntu-release-
upgrader/tree/DistUpgrade/DistUpgradeController.py?h=ubuntu/bionic-
updates#n361
(Pdb) l
11 debian_defaults = '/usr/share/%s/debian_defaults' % dirname
12 if os.path.exists(debian_defaults):
13 config = SafeConfigParser()
14 with open(debian_defaults) as f:
15 config.readfp(f)
16 -> try:
17 expected_default = config.get('DEFAULT', 'default-version')
18 except NoOptionError:
19 logging.debug("no default version for %s found in '%s'" %
20 (binary, config))
21 return False
(Pdb) n
> <ipython-input-13-93c4105e7796>(17)_pythonSymlinkCheck()
-> expected_default = config.get('DEFAULT', 'default-version')
(Pdb) n
> <ipython-input-13-93c4105e7796>(22)_pythonSymlinkCheck()
-> try:
(Pdb) expected_default
'python2.7'
> <ipython-input-13-93c4105e7796>(23)_pythonSymlinkCheck()
-> fs_default_version = os.readlink('/usr/bin/%s' % binary)
(Pdb) n
> <ipython-input-13-93c4105e7796>(27)_pythonSymlinkCheck()
-> if not fs_default_version in (expected_default, os.path.join('/usr/bin', expected_default)) and not (binary == 'python' and fs_default_version in ('python2', '/usr/bin/python2')):
(Pdb) fs_default_version
'/etc/alternatives/python'
(Pdb) os.path.join('/usr/bin', expected_default)
'/usr/bin/python2.7'
(Pdb) not fs_default_version in (expected_default, os.path.join('/usr/bin', expected_default))
True
(Pdb) print("%s symlink points to: '%s', but expected is '%s' or '%s'" % (binary, fs_default_version, expected_default, os.path.join('/usr/bin', expected_default)))
python symlink points to: '/etc/alternatives/python', but expected is 'python2.7' or '/usr/bin/python2.7'
A workaround is:
sudo rm /usr/bin/python
sudo ln -s /usr/bin/python2.7 /usr/bin/python
do-release-upgrade
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ubuntu-release-upgrader/+bug/1825655/+subscriptions
More information about the foundations-bugs
mailing list