Elastic beanstalk:构建期间未处理的异常:[Errno 2] 没有这样的文件或目录
Posted
技术标签:
【中文标题】Elastic beanstalk:构建期间未处理的异常:[Errno 2] 没有这样的文件或目录【英文标题】:Elastic beanstalk: Unhandled exception during build: [Errno 2] No such file or directory 【发布时间】:2014-03-07 16:40:01 【问题描述】:我在 EB 上部署 Django 应用时收到此错误:
2014-02-10 11:04:51,037 [ERROR] Unhandled exception during build: [Errno 2] No such file or directory
Traceback (most recent call last):
File "/opt/aws/bin/cfn-init", line 122, in <module>
worklog.build(detail.metadata, configSets)
File "/usr/lib/python2.6/site-packages/cfnbootstrap/construction.py", line 117, in build
Contractor(metadata).build(configSets, self)
File "/usr/lib/python2.6/site-packages/cfnbootstrap/construction.py", line 502, in build
self.run_config(config, worklog)
File "/usr/lib/python2.6/site-packages/cfnbootstrap/construction.py", line 511, in run_config
CloudFormationCarpenter(config, self._auth_config).build(worklog)
File "/usr/lib/python2.6/site-packages/cfnbootstrap/construction.py", line 216, in build
changes['packages'][manager] = CloudFormationCarpenter._packageTools[manager]().apply(packages, self._auth_config)
File "/usr/lib/python2.6/site-packages/cfnbootstrap/apt_tool.py", line 48, in apply
cache_result = ProcessHelper(['apt-cache', '-q', 'gencaches']).call()
File "/usr/lib/python2.6/site-packages/cfnbootstrap/util.py", line 406, in call
shell=isinstance(self._cmd, basestring), env=self._env, cwd=self._cwd)
File "/usr/lib64/python2.6/subprocess.py", line 639, in __init__
errread, errwrite)
File "/usr/lib64/python2.6/subprocess.py", line 1228, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
...我不知道它为什么以及它在寻找什么文件或目录!有什么想法吗?
ps。我正在使用 Django 1.6.2 和 Python 2.7
这是我在 .ebextensions 中的 app.config:
packages:
yum:
python-devel: []
libpcap: []
libpcap-devel: []
libnet: []
libnet-devel: []
pcre: []
pcre-devel: []
gcc: []
gcc-c++: []
automake: []
autoconf: []
libtool: []
make: []
libyaml: []
libyaml-devel: []
libxml2: []
libxml2-devel: []
zlib: []
zlib-devel: []
file-devel: []
postgresql: []
postgresql-devel: []
geoip: []
geoip-devel: []
graphviz: []
graphviz-devel: []
apt:
binutils: []
libproj-dev: []
gdal-bin: []
python-gdal: []
option_settings:
"aws:elasticbeanstalk:application:environment":
DJANGO_SETTINGS_MODULE: "mysettings"
"aws:elasticbeanstalk:container:python":
NumProcesses: 10
NumThreads: 1
"aws:elasticbeanstalk:container:python:staticfiles":
"/static/": "static/"
更新:
问题出在配置文件中声明的 apt 包,尽管亚马逊在其文档中表示它支持 apt,但事实并非如此,或者至少不支持标准 Linux AMI 64,但支持 Python 2.7!那个 AMI 运行 Linux Red Hat,它不提供 apt,所以我只能依靠 yum。 现在我的问题是弄清楚如何以另一种方式安装我的依赖项,因为该发行版中的 yum 存储库没有我需要的库。
【问题讨论】:
【参考方案1】:看起来它正在尝试部署到 Ubuntu 机器上,也许您正在部署的机器不是 Ubuntu? (Elastic Beanstalk 一般部署到 Amazon Linux 镜像)
您可以在错误中看到它正在尝试运行仅在 Ubuntu 上可用的 apt-cache
命令:
File "/usr/lib/python2.6/site-packages/cfnbootstrap/apt_tool.py", line 48, in apply
cache_result = ProcessHelper(['apt-cache', '-q', 'gencaches']).call()
【讨论】:
操作系统不是ubuntu,它是python 2.7 64bit的默认Amazon Linux AMI,实际上没有安装apt命令(我通过SSH连接到创建的EC2实例进行了尝试)......我是丢了:( 我也看到了你的另一个问题。无论如何,您的app.config
中有apt
吗?
我定义了一些要下载的 apt 包(根据文档,它应该是一个有效的定义)......检查我在问题中的编辑。谢谢;)
是的,我也看到了。我不知道为什么在文档上。您是否尝试过删除 apt
定义?
我尝试将 yum 用于我需要的一些包,但我收到一条错误消息,指出它们不可用,但使用 apt(至少在设置验证步骤中)我没有收到错误 ps:我'要删除另一个问题,因为在 2 个地方聊天变得很困难;)以上是关于Elastic beanstalk:构建期间未处理的异常:[Errno 2] 没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章
Elastic Beanstalk:字典更新序列元素 #0 的长度为 1; 2 是必需的
AWS Elastic Beanstalk Worker 在长时间计算期间不活动后超时
在 AWS Elastic Beanstalk 上启动期间 Grails 4 应用程序停止