Перед началом сборки следует убедиться наличии и актуальности версии зависимых пакетов. Сделать это можно командой:
sudo apt-get install -y build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libffi-dev
Далее необходимо скачать версию Python с сайта python.org (гиперссылка ведет на хранилище с директориями). Автору необходима версия 3.8 дальнейшие действия рассмотрим на примере этой версии. Выполним команду:
wget https://www.python.org/ftp/python/3.8.7/Python-3.8.7.tar.xz
После загрузки распакуем скачанный архив и перейдем в директорию с исходными текстами программы:
tar xf Python-3.8.7.tar.xz
cd Python-3.8.7
После распаковки необходимо выполнить команды сборки и установки, так как процесс не быстрый — можно пойти попить чай. Выполним команды:
./configure --prefix=/usr/local/opt/python-3.8.7 --enable-optimizations
make -j4
sudo make altinstall
После установки могут возникнуть ошибки, указывающие, что нужно обновить переменную среды PATH:
WARNING: The script easy_install-3.8 is installed in '/usr/local/opt/python-3.8.7/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script pip3.8 is installed in '/usr/local/opt/python-3.8.7/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Для этого выполним команду обновления ссылки на python3 для вызовов в консоли:
sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/opt/python-3.8.7/bin/python3.8 1
sudo update-alternatives --install /usr/bin/python python /usr/local/opt/python-3.8.7/bin/python3.8 1
sudo update-alternatives --config python
sudo update-alternatives --config python3
Помимо этого у автора существует странная ссылка на python 3.9 которая вызывает 3.7. Исправить это можно командой. Обнаружить это можно командой:
whereis python
Исправим это командой:
sudo cp /usr/bin/python /usr/local/bin/python3.9
Теперь можно удалить папку с исходниками:
cd ..
sudo rm -rf Python-3.8.7 Python-3.8.7.tar.xz