AWS Elastic Beanstalk 中的 mysqlclient 安装错误
Posted
技术标签:
【中文标题】AWS Elastic Beanstalk 中的 mysqlclient 安装错误【英文标题】:mysqlclient installation error in AWS Elastic Beanstalk 【发布时间】:2020-09-18 12:07:24 【问题描述】:我正在 AWS Elastic Beanstalk 上部署一个带有 mysql 应用程序的 django,因此需要 mysqlclient
库。 mysqlclient
需要安装 python3-devel
和 mysql-devel
包,所以我有它的自定义配置文件 01_packages.config
:
packages:
yum:
python3-devel: []
mysql-devel: []
部署失败,日志文件/var/log/cfn-init.log
(在 Beanstalk 日志中提到)显示错误:
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!------------------------
但是,我尝试通过yum install mysql-devel
在我的Ec2实例上手动安装它并且安装成功。
我的python版本是3.7,我的requirements.txt
文件内容是:
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
【问题讨论】:
您的 cfn-init.log 日志中是否还有更多内容可以显示 yum 是如何被调用的? @danblack 不幸的是,不,它只是重复相同的部分。 【参考方案1】:已解决!我已将 mysql-devel
替换为 mariadb-devel
并且它成功运行,然后我能够安装 mysqlcient
库。
我的新01_packages.config
:
packages:
yum:
python3-devel: []
mariadb-devel: []
我不知道它的根本原因,但我这样做是因为我注意到手动安装 mysql-devel
到 yum install mysql-devel
实际上是安装 mariadb-devel
!
这是我的 ec2 实例发布详情。也许是因为新的 Amazon Linux Release 2。
$ 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
【讨论】:
我做了一些调查,确实似乎用于 Elastic Beanstalk 的旧 Amazon Linux AMI 包含 mysql,但用于 Elastic Beanstalk 的 Amazon Linux 2 AMI 没有。因此,正如 Yasser 所说,当从旧平台升级到新平台时,似乎必须将正确的包添加到配置文件中。我只需要 mariadb-devel。以上是关于AWS Elastic Beanstalk 中的 mysqlclient 安装错误的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk 中的 Python:私有包依赖项
AWS Elastic Beanstalk 中的 mysqlclient 安装错误
一个 AWS 账户中的 Elastic Beanstalk 能否与另一个 AWS 账户中的 RDS 通信?
如何解决 AWS Elastic Beanstalk 中的“容器命令构建失败”一般错误?