今天在搭建devstack环境,同时安装heat。折腾很久总是失败,经过一下午的定位分析, 最终确认是文件编码的问题。问题虽然很小,但是定位的过程,还是收获满满。
什么地方报错呢,执行stack.sh脚本安装的过程中,一个地方souce /opt/stack/heat/devstack/settings文件,报’\r’: command not found 类似的提示信息。
一开始没想到是格式问题,也没在网上按照关键字搜一下代表啥意思。还以为是文件内容的问题,以为source导入的文件内容应该是key=value的形式。
文件内容如下:
#devstack settings
enable_service h-eng
enable_service h-api
后开将此文件删掉,就过了这一步骤,但后续又报错,source /opt/stack/heat/devstack/plugins.sh stack pre-install,错误提示还是类似的'\r': command not found等。但是这个文件的内容都包含函数,所以想也不太可能是内容的问题。于是百度了下$’\r’: command not found,原来可能跟文件的格式有关。于是用notepad++看了下文件格式,果然是Windows(CR LF),更改成Unix(LF),上传,继续安装就没有问题了。
问题1:文件编码格式怎么会造成这种问题?
问题2:编码怎么会是这种格式,是在本地被修改了,还是git上就是这种格式?
答:文件在git服务器上是unix格式的,下载到linux机器上也是没有问题的。如果下载到windows机器上,然后上传到linux上,就成为了windows格式。如何解决?
set ff? 查看文件编码格式
set ff=dos(unix)修改文件编码格式