You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows10下Cygwin编译Prometheus源码遇build_ui.sh错误求助

解决Windows 10+Cygwin编译Prometheus源码的换行符错误问题

问题场景

我按照Prometheus官方文档,在Windows 10系统中通过Cygwin从源码编译Prometheus。执行make build config.file prometheus.yml命令后出现报错。

错误信息

> prometheus-io@0.46.0 build
> set "GENERATE_SOURCEMAP=false" && bash build_ui.sh --all

build_ui.sh: line 2: $'\r': command not found
build_ui.sh: line 15: $'\r': command not found
: invalid optione 16: set: -
set: usage: set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]
build_ui.sh: line 17: $'\r': command not found
build_ui.sh: line 18: syntax error in conditional expression
make: *** [ui-build] Error 127

已尝试操作

我修改了web/ui/package.json中的build条目:
原内容:

"build": "GENERATE_SOURCEMAP=false bash build_ui.sh --all",

修改为:

"build": "set \"GENERATE_SOURCEMAP=false\" && bash build_ui.sh --all",

但问题仍未解决。

可行解决办法

报错的核心原因是Windows与Unix换行符不兼容:Windows使用\r\n作为换行符,而Cygwin的bash仅识别Unix格式的\n,脚本中的\r被误判为命令的一部分,导致语法错误。

步骤1:转换脚本换行符

在Cygwin终端中进入Prometheus源码的web/ui目录,执行以下命令将build_ui.sh转换为Unix换行格式:

dos2unix build_ui.sh

步骤2:修复Git换行符配置(若源码来自Git克隆)

如果是通过Git拉取的源码,Git默认会自动将Unix换行符转为Windows格式,需修改配置避免此问题:

git config --global core.autocrlf false

之后重新克隆源码仓库,或在现有仓库执行git reset --hard重置文件到原始格式。

步骤3:恢复package.json的build命令

无需修改package.json中的build命令,改回原始写法即可:

"build": "GENERATE_SOURCEMAP=false bash build_ui.sh --all",

Cygwin的bash环境支持直接设置环境变量的写法,之前的修改反而可能引入额外问题。

完成以上操作后,重新执行make build config.file prometheus.yml即可正常编译。


内容的提问来源于stack exchange,提问作者asimkon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:57:28