2021-01-09 Install Python 3.9 and many packages on Linux Debian 10


sudo passwd

sudo, git, valgrind, nodejs

apt-get install sudo git valgrind nodejs npm


Let’s start with the firewall:

apt-get install ufw
sudo ufw enable
sudo ufw allow ssh
sudo ufw allow 8080/tcp

Another series of packages to install:

apt-get install intel-mkl
apt-get install cmake apt-transport-https clang
apt-get install protobuf-compiler libprotoc-dev
apt-get install chromium-driver
apt-get install dvipng p7zip-full inkscape graphviz unrar


Then Python 3.9. Some package require a different build because they need shared libraries. About –enable-shared, see Relocation R_X86_64_32S against _Py_NotImplementedStruct can not be used when making a shared object; recompile with -fPIC, How to configure python with –enable-shared on Ubuntu 18.04 Option –enable-shared –prefix=/opt/python is needed when to embed python interpreter in a C application, see Embedding the Python interpreter.

sudo apt update && sudo apt upgrade
sudo apt install wget build-essential libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev software-properties-common
wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz
tar xzf Python-3.9.1.tgz
cd Python-3.9.1
./configure --enable-optimizations --with-ensurepip=install --enable-shared --prefix=/opt/python
make altinstall

If needed, do it again with:


./configure –enable-optimizations –with-ensurepip=install –enable-shared make make altinstall

These settings must be added every time python is run or a python module is compiled:

export LD_LIBRARY_PATH=/usr/local/lib/


You may add the following two lines in file ``/etc/environment/**:

export LLVM_CONFIG=/usr/bin/llvm-config
export LD_LIBRARY_PATH=/usr/local/lib/


wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 10
ls /usr/bin/llvm*
sudo ln -s /usr/bin/llvm-config-8 /usr/bin/llvm-config
python3.9 -m pip install llvmlite

These settings must be also added:

export LLVM_CONFIG=/usr/bin/llvm-config


Useful to draw maps.

apt-get install libgeos-dev libproj-dev proj-data graphviz libblas-dev liblapack-dev
python3.9 -m pip install shapely pyproj shapely cartopy


apt-get install texlive texlive-latex-extra texlive-xetex


apt-get install pandoc


Then Jenkins:

sudo apt update
sudo apt install default-jdk
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install jenkins
sudo systemctl enable --now jenkins

To retrieve the password:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword


See Installation of nginx <blog-nginx-install>.

FTP server

See Install FTP server on debian <blog-ftp-vsftpd>.


Edit file:



nohup python3.9 -m pypiserver --port=8067 --root=/var/lib/jenkins/workspace/local_pypi/local_pypi_server/ > pypi.log &


Something is missing here. Maybe for the next installation.

apt-get install libdbus-glib-1-2 libdbus-glib-1-dev dbus-tests dbus-launch gnome-keyring
python3.9 -m pip install dbus-python keyring keyrings.cryptfile

export $(dbus-launch)


apt-get install libcurl4-openssl-dev libssl-dev
python3.9 -m pip install pycurl