|
#!/usr/bin/env bash |
|
|
|
|
|
python_version="3.6.5"; |
|
system_version="centos"; |
|
|
|
|
|
|
|
while true; do |
|
[ -z "${1:-}" ] && break; |
|
case "$1" in |
|
--*) name=$(echo "$1" | sed s/^--// | sed s/-/_/g); |
|
eval '[ -z "${'"$name"'+xxx}" ]' && echo "$0: invalid option $1" 1>&2 && exit 1; |
|
old_value="(eval echo \\$$name)"; |
|
if [ "${old_value}" == "true" ] || [ "${old_value}" == "false" ]; then |
|
was_bool=true; |
|
else |
|
was_bool=false; |
|
fi |
|
|
|
|
|
|
|
eval "${name}=\"$2\""; |
|
|
|
|
|
if $was_bool && [[ "$2" != "true" && "$2" != "false" ]]; then |
|
echo "$0: expected \"true\" or \"false\": $1 $2" 1>&2 |
|
exit 1; |
|
fi |
|
shift 2; |
|
;; |
|
|
|
*) break; |
|
esac |
|
done |
|
|
|
echo "python_version: ${python_version}"; |
|
echo "system_version: ${system_version}"; |
|
|
|
|
|
if [ ${system_version} = "centos" ]; then |
|
|
|
yum -y groupinstall "Development tools" |
|
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel |
|
yum install libffi-devel -y |
|
yum install -y wget |
|
yum install -y make |
|
|
|
mkdir -p /data/dep |
|
cd /data/dep || exit 1; |
|
if [ ! -e Python-${python_version}.tgz ]; then |
|
wget -P /data/dep https://www.python.org/ftp/python/${python_version}/Python-${python_version}.tgz |
|
fi |
|
|
|
cd /data/dep || exit 1; |
|
if [ ! -d Python-${python_version} ]; then |
|
tar -zxvf Python-${python_version}.tgz |
|
cd /data/dep/Python-${python_version} || exit 1; |
|
fi |
|
|
|
mkdir /usr/local/python-${python_version} |
|
./configure --prefix=/usr/local/python-${python_version} |
|
make && make install |
|
|
|
/usr/local/python-${python_version}/bin/python3 -V |
|
/usr/local/python-${python_version}/bin/pip3 -V |
|
|
|
rm -rf /usr/local/bin/python3 |
|
rm -rf /usr/local/bin/pip3 |
|
ln -s /usr/local/python-${python_version}/bin/python3 /usr/local/bin/python3 |
|
ln -s /usr/local/python-${python_version}/bin/pip3 /usr/local/bin/pip3 |
|
|
|
python3 -V |
|
pip3 -V |
|
|
|
elif [ ${system_version} = "ubuntu" ]; then |
|
|
|
|
|
|
|
|
|
sudo apt update |
|
|
|
sudo apt list --upgradable |
|
|
|
sudo apt -y upgrade |
|
|
|
sudo apt install gcc |
|
|
|
gcc -v |
|
|
|
|
|
sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libbz2-dev liblzma-dev sqlite3 libsqlite3-dev tk-dev uuid-dev libgdbm-compat-dev |
|
|
|
mkdir -p /data/dep |
|
cd /data/dep || exit 1; |
|
if [ ! -e Python-${python_version}.tgz ]; then |
|
|
|
sudo wget -P /data/dep https://www.python.org/ftp/python/${python_version}/Python-${python_version}.tgz |
|
fi |
|
|
|
cd /data/dep || exit 1; |
|
if [ ! -d Python-${python_version} ]; then |
|
|
|
tar -zxvf Python-${python_version}.tgz |
|
|
|
cd /data/dep/Python-${python_version} || exit 1; |
|
fi |
|
|
|
|
|
mkdir /usr/local/python-${python_version} |
|
|
|
|
|
|
|
sudo ./configure --prefix=/usr/local/python-${python_version} --enable-optimizations --with-lto --enable-shared |
|
cpu_count=$(cat /proc/cpuinfo | grep processor | wc -l) |
|
|
|
sudo make -j "${cpu_count}" |
|
|
|
/usr/local/python-${python_version}/bin/python3 -V |
|
/usr/local/python-${python_version}/bin/pip3 -V |
|
|
|
rm -rf /usr/local/bin/python3 |
|
rm -rf /usr/local/bin/pip3 |
|
ln -s /usr/local/python-${python_version}/bin/python3 /usr/local/bin/python3 |
|
ln -s /usr/local/python-${python_version}/bin/pip3 /usr/local/bin/pip3 |
|
|
|
python3 -V |
|
pip3 -V |
|
fi |
|
|