python-3.8 - High-level, object-oriented, interpreted programming language ChangeLog

HOWTO


# Python 3.8.18 (2023-08-24)
# =============
# See the main Python HOWTO for general information and then continue here
# for information specific to 3.8.x releases

# Prerequisites:
# OpenSSL (for Python's socket module)
# pkg-config
# Tcl/Tk (for _tkinter)

# If you're about to upgrade from 3.7.x to 3.8.x, read this:
# https://docs.python.org/3/whatsnew/3.8.html
# for info about changes between the two versions.  For more info read
# Misc/NEWS.

# Python 3.11.5, 3.10.13, 3.9.18, and 3.8.18 is now available
# Python 3.8.18 Release Notes
# Python 3.8.18 Changelog
# PEP 569 - Python 3.8 Release Schedule
# Download Python (includes PGP key info)
# Python Source Releases
# Python Developer's Guide: Setup and building
# Python Documentation
# Python Mailing Lists
# Python Wiki
# PyPI (Python Package Index)

# Get the source tarball
cd
test -f installed/Python-3.8.18.tar.xz && mv installed/Python-3.8.18.tar.xz .
test ! -f Python-3.8.18.tar.xz &&
wget https://www.python.org/ftp/python/3.8.18/Python-3.8.18.tar.xz

# Verify tarball w/ md5sum:
# (from the Python site)
echo "5ea6267ea00513fc31d3746feb35842d  Python-3.8.18.tar.xz" | md5sum -c

# Verify tarball w/ sha256sum:
# (this came from my md5sum and gpg-verified tarball)
echo "3ffb71cd349a326ba7b2fadc7e7df86ba577dd9c4917e52a8401adbda7405e\
3f  Python-3.8.18.tar.xz" | sha256sum -c

# Verify tarball w/ gpg:
( gpg --list-keys AA65421D > /dev/null 2>&1 || gpg --recv-keys AA65421D ) &&
wget -nc http://www.python.org/ftp/python/3.8.18/\
Python-3.8.18.tar.xz.asc &&
  gpg --verify Python-3.8.18.tar.xz.asc && rm Python-3.8.18.tar.xz.asc

# Extract it
mkdir -p -m 0700 ~/src
cd ~/src
find -maxdepth 1 -type d -name "Python-3.*" -exec rm -r {} \;
tar xJvf ~/Python-3.8.18.tar.xz
cd Python-3.8.18
test $UID = 0 && chown -R root:root .

# Apply this patch if you are 64-bit and do not want everything to
# end up in /usr/lib (instead of /usr/lib64)
# (configure does not abide by it's own --libdir flag)
# https://stackoverflow.com/questions/41558535/python-3-6-installation-and-lib64
# https://build.opensuse.org/package/view_file/openSUSE:Factory/python38/F00102-lib64.patch?expand=1
test $(uname -m) = 'x86_64' &&
wget -nc https://englanders.us/pub/linux/patches/notmine/\
python-3.8.18-lib64.diff && patch -p1 < python-3.8.18-lib64.diff

## Configure the build

# If you don't need pip, leave off --with-ensurepip=install
# You could just install it later, but every way I tried to do it a while
# back with 2.x, I'd get stuck with a dependency loop between the get-pip.py
# script needing urllib3, not having it, that requires something else, ...

# If you have source-installed OpenSSL under /usr/local/ssl and are 64-bit:
# (as with < 1.1.0)
test $(uname -m) = 'x86_64' -a -d /usr/local/ssl/lib64 &&
LDFLAGS=-L/usr/local/ssl/lib64 \
./configure --prefix=/usr --libdir=/usr/lib64 --mandir=/usr/man \
--enable-shared --with-ensurepip=install

# If you are 64-bit but do not have a /usr/local/ssl/lib64
# (as with OpenSSL 1.1.0 and 3.0)
test $(uname -m) = 'x86_64' -a ! -d /usr/local/ssl/lib64 &&
./configure --prefix=/usr --libdir=/usr/lib64 --mandir=/usr/man \
--enable-shared --with-ensurepip=install

# Any other situation:
test $(uname -m) != 'x86_64' &&
./configure --prefix=/usr --enable-shared --mandir=/usr/man \
--with-ensurepip=install

# Build it
make $(nproc)

# Test the build
make test

# Become root to clean up old files and to install it
su

# Remove the Slackware packages:
test -x /sbin/removepkg &&
/sbin/removepkg python python3 python-demo python-pillow python-setuptools \
python-tools

# Install the new version
#
# Use 'make install' for whatever you want your default version of
# Python to be.  i.e. what you get when you run 'python'.
#
# If you use 'make altinstall' instead, that will leave existing python
# and python-config (usually in /usr/bin) pointing to whatever it was
# already pointing to.  In that case, you would need to run 'python3.8'
# this is the only 3.x one, or 'python3.8' if there are others like 3.7.x
make install
ldconfig

# Right now if you run 'python3' or 'python3.8' you will get Python 3.8.18
# Right now if you run 'pip3' or 'pip3.8' you will get pip 3.8.18
# (if /usr/bin/pip is a script, not a symlink, should get you 3.8.18)

# If you have Python 2.x and 3.8.18 installed, and want to be able to run
# python, python-config, pip, pydoc and get 3.8.18:
( cd /usr/bin
  test -L 2to3 && rm 2to3
  test -L pip && rm pip
  test -L pydoc && rm pydoc
  test -L python && rm python
  test -L python-config && rm python-config
  test ! -e 2to3 && ln -s 2to3-3.8 2to3
  test ! -e pip && ln -sf pip3.8 pip
  test ! -e pydoc && ln -sf pydoc3.8 pydoc
  test ! -e python && ln -sf python3.8 python
  test ! -e python-config && ln -sf python3.8-config python-config )

# If your python3, python3-config, pip3, pydoc3 symlinks need to be updated
# (probably not):
( cd /usr/bin
  test -L pip3 && rm pip3
  test -L pydoc3 && rm pydoc3
  test -L python3 && rm python3
  test -L python3-config && rm python3-config
  ln -sf pip3.8 pip3
  ln -sf pydoc3.8 pydoc3
  ln -sf python3.8 python3
  ln -sf python3.8-config python3-config )

# You should have a /usr/include/python3.8/
#
# And you should have a /usr/lib*/libpython3.8.so.1
# and a /usr/lib*/libpython3.8.so symlink pointing to libpython3.8.so.1
# and a /usr/lib*/libpython3.so
#
# And in /usr/lib*/pkgconfig/ you should have:
# python-3.8-embed.pc
# python3-embed.pc symlink pointing to python-3.8.embed.pc
# python-3.8.pc
# python3.pc symlink pointing to python-3.8.pc
#
# And you should have /usr/lib*/python3.8/
#
# And in /usr/man/man1/ you should have:
# python3.8.1 ('man python3.8')
# python3.1 symlink pointing to python3.8.1 ('man python3')

# Make sure your non-root user can remove the source later
chown -R $(logname) .
chmod -R u+w .

# If you used 'make altinstall' and already had a previous version of Python
# installed, then the python and python-config symlinks should still point
# to the previous version.
# If you used the regular 'make install' and now you want 'python' and
# 'python3' to run an older one such as 3.7.x while 3.8.x is also installed,
# you may need to do something like this:
# ln -sf /usr/bin/pydoc3.7-config /usr/bin/pydoc3
# ln -sf /usr/bin/pydoc3.7-config /usr/bin/pydoc
# ln -sf /usr/bin/pip3.7 /usr/bin/pip3
# ln -sf /usr/bin/pip3.7 /usr/bin/pip
# ln -sf /usr/bin/python3.7 /usr/bin/python3
# ln -sf /usr/bin/python3.7 /usr/bin/python
# ln -sf /usr/bin/python3.7-config /usr/bin/python3-config
# ln -sf /usr/bin/python3.7-config /usr/bin/python-config

# If you want to upgrade pip, with pip, run the following:
/usr/bin/python3.8 -m pip install --upgrade pip

# For pip usage:
pip3.8 --version
pip3 --help
pip install --help

# Become yourself again
exit

# Keep the tarball for later
cd
mkdir -p -m 0700 installed
rm -f installed/Python-3.*.tgz installed/Python-3.*.tar.*
mv Python-3.8.18.tar.xz installed/

List of HOWTOs

Web page itself last updated: 2023-12-20 8:06pm (EST -0500)
HOWTO last updated: 2024-12-04 2:43pm
Copyright © 2001-2024 Jason Englander. All Rights reserved.
[HTML5]