New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
platform.linux_distribution() under Ubuntu returns ('debian', 'squeeze/sid', '') #53723
Comments
At least on one of the buildbots: Re-running test 'test_ssl' in verbose mode at the bottom of http://www.python.org/dev/buildbot/builders/i386%20Ubuntu%203.x/builds/1788/steps/test/logs/stdio Someone on IRC pointed out that on their machine, the system Python returned ('Ubuntu', '10.04', 'lucid'). |
I can confirm that I see the ('debian', 'squeeze/sid', '') on py3k and trunk but that the Python 2.6 under Ubuntu reports ('Ubuntu', '10.04', 'lucid'). |
I think the problem might be that linux_distribution() reads /etc/debian_version first. The contents of the relevant files in /etc look like: $ cat /etc/debian_version
squeeze/sid
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.04
DISTRIB_CODENAME=lucid
DISTRIB_DESCRIPTION="Ubuntu 10.04.1 LTS" |
Patch attached to check /etc/lsb-release before checking other files. Taken from Ubuntu Python 2.6 copy of platform.py. Applies against trunk (r83728) with a small offset against py3k (r83728). |
FWIW, the output is a bit different here before the patch: and after the patch: but I would say it's because Mandriva has inconsistent contents in their respective /etc/mandriva_release and /etc/lsb-release files. The patch itself is a bit imperfect and will need reworking (_u_distname, _u_version and _u_id should be initialized to '' rather than catching UnboundLocalError; remove ubuntu-specific comments). |
I think the intended means of accessing this information is via the lsb_release command (http://refspecs.freestandards.org/LSB_4.0.0/LSB-Core-generic/LSB-Core-generic/lsbrelease.html). That said, I don't know if the file format will change drastically unless someone re-implements lsb_release. |
Please check bpo-1322 for past discussion on similar topic (usability of lsb_release in platform.py). |
I think we'll start to use the lsb_release command if available and as suggested in bpo-1322. Note that if you test the API, make sure that you use a Python build from sources available on python.org - the Debian and Ubuntu packagers tend to patch Python in their distributions (just like RedHat and others do) and we don't really want to hunt down bugs/problems that are not relevant to our code base. |
IMO using lsb_release is not an option, because it can take some time to complete. So maybe it's better for the Ubuntu change to guard the check with the existance of /etc/debian_version. Please could you attach a Mandriva lsb-release file? |
$ cat /etc/lsb-release
LSB_VERSION=lsb-4.0-amd64:lsb-4.0-noarch
DISTRIB_ID=MandrivaLinux
DISTRIB_RELEASE=2010.1
DISTRIB_CODENAME=Henry_Farman
DISTRIB_DESCRIPTION="Mandriva Linux 2010.1"
$ cat /etc/mandriva-release
Mandriva Linux release 2010.1 (Official) for x86_64 |
Debian and Ubuntu use this patch: http://patch-tracker.debian.org/patch/series/view/python3.2/3.2.3\~rc1-1/platform-lsbrelease.diff |
http://www.freedesktop.org/software/systemd/man/os-release.html is the next step, with the advantage of the definition of the file format for /etc/os-release. |
platform.linux_distribution is being deprecated in 3.5 and removed in 3.6 as stated in comment http://bugs.python.org/issue1322#msg207427 in issue bpo-1322 I'm guessing this issue should be closed when that patch is merged in? |
See bpo-1322 |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: