Мне для одной задачи непременно нужна версия Python
чтобы была отличной от дефолтной Python3.10
, к примеру, Python3.13
и плюс к этому нужно значить ее дефолтной при использовании в текущей системе на Ubuntu 22.04 Server
которая установлена из образа: ubuntu-22.04-live-server-amd64.iso
Шаг №1:
Обновляю систему до самого актуального состояния в рамках текущего LTS
релиза:
sudo nano /etc/update-manager/release-upgrades [DEFAULT] Prompt=never sudo rm -Rf /var/lib/apt/lists sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y sudo reboot uname -a && lsb_release -a Linux srv-vpn 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.3 LTS Release: 22.04 Codename: jammy
Шаг №2:
Настройки Locale:
sudo rm -f /etc/localtime sudo ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime sudo locale-gen en_US.UTF-8 echo "LC_ALL="en_US.UTF-8"" | sudo -s tee /etc/default/locale echo "LANG="en_US.UTF-8"" | sudo tee -a /etc/default/locale echo "LANGUAGE="en.US.UTF-8"" | sudo tee -a /etc/default/locale
Шаг №3:
Текущая версия Python:
ekzorchik@srv-home:~$ python --version -bash: /usr/bin/python: No such file or directory ekzorchik@srv-home:~$ python3.10 -V Python 3.10.12 ekzorchik@srv-home:~$ ekzorchik@srv-home:~$ whereis python3.10 python3.10: /usr/bin/python3.10 /usr/lib/python3.10 /etc/python3.10 /usr/local/lib/python3.10 /usr/share/man/man1/python3.10.1.gz ekzorchik@srv-home:~$
Шаг №4:
Устанавливаю дополнительный репозитарий содержащий новые версии Python3:
ekzorchik@srv-home:~$ sudo add-apt-repository ppa:deadsnakes/ppa
На заметку: Supported Ubuntu and Python Versions
====================================
- Ubuntu 20.04 (focal) Python3.5 - Python3.7, Python3.9 - Python3.13
- Ubuntu 22.04 (jammy) Python3.7 - Python3.9, Python3.11 - Python3.13
- Note: Python2.7 (all), Python 3.8 (focal), Python 3.10 (jammy) are not provided by deadsnakes as upstream ubuntu provides those packages.
ekzorchik@srv-home:~$ sudo bash -c "cat /etc/apt/sources.list.d/deadsnakes-ubuntu-ppa-jammy.list" deb https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu/ jammy main # deb-src https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu/ jammy main ekzorchik@srv-home:~$ ekzorchik@srv-home:~$ apt-cache show python3.1[1-3] | grep Version Version: 3.11.7-1+jammy1 Version: 3.11.0~rc1-1~22.04 Version: 3.12.1-1+jammy3 Version: 3.13.0~a2-1+jammy1 ekzorchik@srv-home:~$ ekzorchik@srv-home:~$ sudo apt-get install -y python3.13 ekzorchik@srv-home:~$ whereis python3.13 python3.13: /usr/bin/python3.13 /usr/lib/python3.13 /etc/python3.13 /usr/local/lib/python3.13 /usr/share/man/man1/python3.13.1.gz ekzorchik@srv-home:~$
Шаг №5:
Изменяем пользовательский Alias
для работы с Python
определенной версии:
ekzorchik@srv-home:~$ nano ~/.bashrc alias python='/usr/bin/python3.13' ekzorchik@srv-home:~$ source ~/.bashrc ekzorchik@srv-home:~$ python -V Python 3.13.0a2 ekzorchik@srv-home:~$ ekzorchik@srv-home:~$ python3 -V Python 3.10.12 ekzorchik@srv-home:~$ nano ~/.bashrc alias python='/usr/bin/python3.13' alias python3='/usr/bin/python3.13' ekzorchik@srv-home:~$ source ~/.bashrc ekzorchik@srv-home:~$ python3 -V Python 3.13.0a2 ekzorchik@srv-home:~$
Шаг №6:
Также можно для всей системы через update-alternatives
изменить, что по дефолту Python
будет 3.13:
ekzorchik@srv-home:~$ nano ~/.bashrc #alias python='/usr/bin/python3.13' #alias python3='/usr/bin/python3.13' ekzorchik@srv-home:~$ source ~/.bashrc
На заметку: Синтаксис update-alternatives
sudo update-alternatives --install needs <link> <name> <path> <priority>
для удаления прописанной строки:
update-alternatives: --remove needs <name> <path>
как пример:
ekzorchik@srv-home:~$ sudo update-alternatives --display python update-alternatives: error: no alternatives for python ekzorchik@srv-home:~$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.13 0 update-alternatives: renaming python link from /usr/bin/python3 to /usr/bin/python ekzorchik@srv-home:~$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.13 1 update-alternatives: using /usr/bin/python3.13 to provide /usr/bin/python3 (python3) in auto mode где 0 - дефолтный приоритет, потом 1 ekzorchik@srv-home:~$ sudo update-alternatives --display python python - manual mode link best version is /usr/bin/python3.13 link currently points to /usr/bin/python3.13 link python is /usr/bin/python /usr/bin/python3.13 - priority 0 ekzorchik@srv-home:~$ sudo update-alternatives --display python3 python3 - auto mode link best version is /usr/bin/python3.13 link currently points to /usr/bin/python3.13 link python3 is /usr/bin/python3 /usr/bin/python3.13 - priority 1 ekzorchik@srv-home:~$ ekzorchik@srv-home:~$ python -V Python 3.13.0a2 ekzorchik@srv-home:~$ python3 -V Python 3.13.0a2 ekzorchik@srv-home:~$
Итого вроде как я правильно прописал что по умолчанию теперь в системе версия Python
используется, как версия Python3.13
Сделал Logoff/Logon
ekzorchik@srv-home:~$ python -V Python 3.13.0a2 ekzorchik@srv-home:~$ python3 -V Python 3.13.0a2 ekzorchik@srv-home:~$ ekzorchik@srv-home:~$ su test Password: test@srv-home:/home/ekzorchik$ python -V Python 3.13.0a2 test@srv-home:/home/ekzorchik$ python3 -V Python 3.13.0a2 test@srv-home:/home/ekzorchik$ exit exit ekzorchik@srv-home:~$
На этом заметка завершена, вроде бы я правильно понял, как изменить чтобы по дефолту была версия Python3.13
с уважением автор блога Олло Александр aka ekzorchik.