.. blogpost:: :title: Install Python 3.9 and many packages on Linux Debian 10 :keywords: python, debian :date: 2021-01-09 :categories: installation **Password** :: sudo passwd **sudo, git, valgrind, nodejs** :: apt-get install sudo git valgrind nodejs npm **Firewall** 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 **Python** 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 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/ **/etc/environment/** 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/ **llvmlite** :: 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 **GEOS** 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 **Latex** :: apt-get install texlive texlive-latex-extra texlive-xetex **pandoc** :: apt-get install pandoc **Jenkins** 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 somewhere/secrets/initialAdminPassword **Website** See `Installation of nginx `. **FTP server** See `Install FTP server on debian `. **profile** Edit file: :: ~/.profile **pypiserver** :: nohup python3.9 -m pypiserver --port=8067 --root=somewhere/workspace/local_pypi/local_pypi_server/ > pypi.log & **keyring** 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) **pycurl** :: apt-get install libcurl4-openssl-dev libssl-dev python3.9 -m pip install pycurl