Estoy implementando una aplicación django con mysql en AWS Elastic Beanstalk, por lo que se necesita la biblioteca mysqlclient . mysqlclient necesita que se instalen los paquetes python3-devel y mysql-devel , por lo que tengo el archivo de configuración personalizado 01_packages.config :
packages: yum: python3-devel: [] mysql-devel: [] La implementación falla y el archivo de registro /var/log/cfn-init.log (mencionado en los registros de Beanstalk) muestra el error:
2020-05-31 02:17:37,565 [INFO] -----------------------Starting build----------------------- 2020-05-31 02:17:37,572 [INFO] Running configSets: Infra-EmbeddedPreBuild 2020-05-31 02:17:37,575 [INFO] Running configSet Infra-EmbeddedPreBuild 2020-05-31 02:17:37,579 [INFO] Running config prebuild_0_doyouknow 2020-05-31 02:17:41,831 [ERROR] mysql-devel is not available to be installed 2020-05-31 02:17:41,831 [ERROR] Error encountered during build of prebuild_0_doyouknow: Yum does no t have mysql-devel available for installation Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/cfnbootstrap/construction.py", line 542, in run_config CloudFormationCarpenter(config, self._auth_config).build(worklog) File "/usr/lib/python2.7/site-packages/cfnbootstrap/construction.py", line 229, in build changes['packages'][manager] = CloudFormationCarpenter._packageTools[manager]().apply(packages, self._auth_config) File "/usr/lib/python2.7/site-packages/cfnbootstrap/rpm_tools.py", line 74, in apply raise ToolError("Yum does not have %s available for installation" % pkg_spec) ToolError: Yum does not have mysql-devel available for installation 2020-05-31 02:17:41,834 [ERROR] -----------------------BUILD FAILED!------------------------ Sin embargo, traté de instalarlo manualmente en mi instancia Ec2 a través de yum install mysql-devel y se instaló correctamente.
Mi versión de python es 3.7 y el contenido de mi archivo requirements.txt es:
asgiref==3.2.7 Django==3.0.5 django-cors-headers==3.2.1 django-dotenv==1.4.2 django-social-share==1.4.0 mysqlclient==1.4.6 numpy==1.18.4 pandas==1.0.3 Pillow==7.1.1 python-dateutil==2.8.1 pytz==2019.3 six==1.14.0 sqlparse==0.3.1 xlrd==1.2.0¡Resuelto! Reemplacé mysql-devel con mariadb-devel y funcionó correctamente, luego pude instalar la biblioteca mysqlcient .
Mi nuevo 01_packages.config :
packages: yum: python3-devel: [] mariadb-devel: [] No conozco la causa raíz de esto, pero lo hice porque noté que la instalación manual de mysql-devel a través de yum install mysql-devel en realidad está instalando mariadb-devel .
Aquí están los detalles de la versión de mi instancia ec2. Tal vez sea por la nueva versión 2 de Amazon Linux.
$ cat /etc/*-release* NAME="Amazon Linux" VERSION="2" ID="amzn" ID_LIKE="centos rhel fedora" VERSION_ID="2" PRETTY_NAME="Amazon Linux 2" ANSI_COLOR="0;33" CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2" HOME_URL="https://amazonlinux.com/" Amazon Linux release 2 (Karoo) cpe:2.3:o:amazon:amazon_linux:2