Saturday, December 13, 2014

Сборка Python 3 из исходников в Linux Mint


  1. # apt-get install build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm (выбрать нужное)
    libreadline-dev - служит для поддержки автодополнения (Tab), истории и навигации курсора (клавиши со стрелками)
  2. Установить необходимые *-dev пакеты (Tcl/Tk, ncurses, ...) для поддержки среды IDLE
  3. Создать файл install_python.sh со следующим содержимым:
  4. #!/bin/bash

    if [ $# -ne 2 ]; then
    echo "usage: $0 <python-version> <target-dir>"
    echo "example: $0 3.4.0 ~/LIBS"
    exit
    fi

    PY_VERSION=$1
    PY_PREFIX=$2
    PY_TARGET_DIR=$PY_PREFIX/Python-$PY_VERSION

    tar xzf Python-$PY_VERSION.tgz &&
    PY_BUILD_DIR=Python-$PY_VERSION/_build &&
    echo "Build dir: $PY_BUILD_DIR" &&
    N_CPU_CORES=$(nproc) &&
    echo "CPU cores: $N_CPU_CORES" &&
    mkdir $PY_BUILD_DIR &&
    cd $PY_BUILD_DIR &&
    ../configure --prefix=$PY_TARGET_DIR --enable-shared &&
    make -j$N_CPU_CORES &&
    #make -j$N_CPU_CORES test &&

    # for install an alternative version of Python use "make altinstall" instead of "make install"
    #make install &&
    # make altinstall &&
    DESC_PAK_NAME=./description-pak &&
    touch $DESC_PAK_NAME &&
    echo "my own python $PY_VERSION build" > $DESC_PAK_NAME &&
    sudo checkinstall --install=no --pkgname=python-my-own --pkgversion=$PY_VERSION --nodoc --maintainer="pkg created by $USER" &&
    sudo chown $USER:$USER ./*.deb &&
    sudo dpkg -i *.deb &&
    sudo chown -R $USER:$USER $PY_TARGET_DIR &&

    # register the lib directory of the newly installed interpreter
    PY_LIB_CONF_FILE=$PY_TARGET_DIR/python-lib-path.conf &&
    touch $PY_LIB_CONF_FILE &&
    echo $PY_TARGET_DIR/lib > $PY_LIB_CONF_FILE &&
    sudo ln -s $PY_LIB_CONF_FILE /etc/ld.so.conf.d/python-$PY_VERSION-custom-build.conf &&
    sudo ldconfig &&

    echo $0 script successfully ended!

  5. $ chmod +x install_python.sh
  6. $ ./install_python.sh <python_version> <target_dir>
  7. Если нужно, в файл ~/.profile добавить строку:
    export PATH=</path/to/new/python>:$PATH