Some questions came up at work today about the default version of Python on Rocky Linux 8. Someone said it was Python 3.6.8, others said it was Python 3.9.
I decided to test this empirically and install Rocky Linux 8.10 from the minimal ISO. The answer is:
You’re all wrong. There is no default version of Python on Rocky Linux 8. (At least, not on the minimal ISO, i.e. Rocky-8.10-x86_64-minimal.iso
.)
There is, however, platform-python
. Rocky Linux needs Python as a dependency for various other tools. That version is, in fact, Python 3.6.8:
[root@localhost ~]# dnf info platform-python
Last metadata expiration check: 0:24:11 ago on Tue 11 Jun 2024 05:49:30 PM EDT.
Installed Packages
Name : platform-python
Version : 3.6.8
Release : 62.el8_10.rocky.0
Architecture : x86_64
Size : 40 k
Source : python3-3.6.8-62.el8_10.rocky.0.src.rpm
Repository : @System
From repo : anaconda
Summary : Internal interpreter of the Python programming language
URL : https://www.python.org/
License : Python
Description : This is the internal interpreter of the Python language for the system.
: To use Python yourself, please install one of the available Python 3 packages,
: for example python36.
As the description mentions, if you, as a user of the Linux system, want to run Python, you’ll need to install it. Rocky Linux provides several packages:
[root@localhost ~]# dnf install python
Last metadata expiration check: 0:30:25 ago on Tue 11 Jun 2024 05:49:30 PM EDT.
No match for argument: python
There are following alternatives for "python": python2, python3.11, python3.12, python36, python38, python39
Error: Unable to find a match: python
I decided to install all of the versions offered. After installing, I checked the version of each:
[root@localhost ~]# python --version
-bash: python: command not found
[root@localhost ~]# python2 --version
Python 2.7.18
[root@localhost ~]# python3 --version
Python 3.6.8
[root@localhost ~]# python3.8 --version
Python 3.8.17
[root@localhost ~]# python3.9 --version
Python 3.9.19
[root@localhost ~]# python3.11 --version
Python 3.11.7
[root@localhost ~]# python3.12 --version
Python 3.12.1
There is no default python
, although you can easily create that alias/link:
[root@localhost ~]# ln /usr/bin/python3.12 /usr/bin/python
[root@localhost ~]# python --version
Python 3.12.1
However, it appears that Rocky 8 will make Python 3.6.8 the target of the python3 alias/link if it is installed. I am basing this claim on the following:
- I uninstalled all python3* versions:
dnf remove python36 python38 python39 python311 python312
- I installed
python312
.python --version
showed Python 3.12.1 - I installed
python36
.python --version
showed Python 3.6.8 - I installed
python39
.python --version
still showed Python 3.6.8
That suggests it’s not just the most-recently installed Python 3 version that becomes the target of the python3
link. Python 3.6.8, if installed, seems to take precedence over other versions (or at least other versions won’t overwrite the link).