Pre-install python3 for CentOS
CentOS 7 is the only distro we support currently that doesn't have Python 3 installed in some form in the base images. For centos 7 add an early install of it in the yum element so we can have all the in-chroot scripts assume Python 3. There is only one package that causes issues; yaml which comes from EPEL. Everywhere else it is a base package, but we don't have a way to say "enable epel to install this". Just hack it in, we don't want to go reworking the world for CentOS 7 at this point. Also add python3 and it's yaml library to the centos 8 path. This brings in the "user" python3 in /urs/bin/python3 (the "system" python3 is already installed). Again, this just lets us assume /usr/bin/python3 in scripts for all platforms. package-installs is one of these things running python in the chroot, and unfortunately we have elements that use it at 01- level in pre-installd. Thus to make sure python3 is there nice and early, run it at 0 level, but make sure it comes after yum/dnf update. Change-Id: I088fc4284e889147ca9a375d4a159264cff53484
This commit is contained in:
parent
840f8ed2b2
commit
4dbfab66a1
25
diskimage_builder/elements/yum/pre-install.d/00-1-centos-python3
Executable file
25
diskimage_builder/elements/yum/pre-install.d/00-1-centos-python3
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
set -eu
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
# Ensure the python3 interpreter and YAML libraries are installed
|
||||||
|
# early (even before package-installs, which is written in Python and
|
||||||
|
# uses YAML).
|
||||||
|
|
||||||
|
if [[ ${DISTRO_NAME} =~ (centos|rhel) && ${DIB_RELEASE} == 7 ]]; then
|
||||||
|
# Our package map and install stuff doesn't have a way to say
|
||||||
|
# "install this from EPEL". So we hack in an install of it here
|
||||||
|
# from EPEL. Nothing else should have installed EPEL at this
|
||||||
|
# early stage.
|
||||||
|
yum install -y python3 epel-release
|
||||||
|
yum install -y python36-PyYAML
|
||||||
|
yum remove -y epel-release
|
||||||
|
elif [[ ${DISTRO_NAME} =~ (centos|rhel) && ${DIB_RELEASE} > 7 ]]; then
|
||||||
|
# For 8 and above ensure the "user" python3 package is installed
|
||||||
|
# so we have /usr/bin/python3 and pyyaml.
|
||||||
|
dnf install -y python3 python3-pyyaml
|
||||||
|
fi
|
Loading…
Reference in New Issue
Block a user