fix(install): make setup failures explicit and atomic

Installer pipelines masked dependency and download failures, causing
false success messages and unsafe config replacement.

Atomic updates and current upstream installers keep failures visible.
This commit is contained in:
Frank Qing
2026-07-15 00:16:33 +08:00
parent 9641876d43
commit 76395923ce
14 changed files with 350 additions and 432 deletions
+5 -7
View File
@@ -1,8 +1,6 @@
# fnm (Fast Node Manager) configuration
# https://github.com/Schniz/fnm
FNM_PATH="$HOME/.local/share/fnm"
if [ -d "$FNM_PATH" ]; then
export PATH="$HOME/.local/share/fnm:$PATH"
eval "$(fnm env --use-on-cd --shell zsh)"
# fnm (Fast Node Manager)
FNM_PATH="${XDG_DATA_HOME:-$HOME/.local/share}/fnm"
[[ -d "$FNM_PATH" ]] && export PATH="$FNM_PATH:$PATH"
if command -v fnm &> /dev/null; then
eval "$(fnm env --use-on-cd --shell zsh)"
fi
+12 -11
View File
@@ -14,14 +14,15 @@
# Set cur_dir before sourcing so prep_env.sh uses the correct path
export cur_dir="/workspace/vscode"
# Patch prep_env.sh for zsh compatibility before sourcing
source <(sed -e 's/^shopt -s histappend$/[[ -n "${BASH_VERSION}" ]] \&\& shopt -s histappend/' \
-e 's/\${!\([^}]*\)}/${(P)\1}/g' \
-e 's/cur_dir="\$(cd "\$(dirname "\$0")" && pwd)"/# cur_dir already set/g' \
/workspace/mlx/../vscode/prep_env.sh)
_prep_env="/workspace/vscode/prep_env.sh"
if [[ -r "$_prep_env" ]]; then
export cur_dir="/workspace/vscode"
source <(sed -e 's/^shopt -s histappend$/[[ -n "${BASH_VERSION}" ]] \&\& shopt -s histappend/' \
-e 's/\${!\([^}]*\)}/${(P)\1}/g' \
-e 's/cur_dir="\$(cd "\$(dirname "\$0")" && pwd)"/# cur_dir already set/g' \
"$_prep_env")
fi
unset _prep_env
# sh -c /opt/tiger/mlx_deploy/greeting.sh
@@ -33,7 +34,7 @@ if [ -f "/opt/tiger/rh2_bashrc" ]; then
source /opt/tiger/rh2_bashrc
fi
. "$HOME/.cargo/env"
[[ -r "$HOME/.cargo/env" ]] && . "$HOME/.cargo/env"
# huggingface proxy
export HF_NETWORK_PROXY=http://huggingface-proxy-sg.byted.org
@@ -47,10 +48,10 @@ alias hf_mirror_external='export HF_ENDPOINT=$HF_MIRROR_EXTERNAL'
# http proxy
export HTTP_PROXY=http://sys-proxy-rd-relay.byted.org:8118
export HTTPS_PROXY=http://sys-proxy-rd-relay.byted.org:8118
export NO_PROXY=byted.org,bytedance.net,10.*.*.*,127.*.*.*
export NO_PROXY='byted.org,bytedance.net,10.*.*.*,127.*.*.*'
export http_proxy=http://sys-proxy-rd-relay.byted.org:8118
export https_proxy=http://sys-proxy-rd-relay.byted.org:8118
export no_proxy=byted.org,bytedance.net,10.*.*.*,127.*.*.*
export no_proxy='byted.org,bytedance.net,10.*.*.*,127.*.*.*'
alias proxy_on='export http_proxy=http://sys-proxy-rd-relay.byted.org:8118; export https_proxy=http://sys-proxy-rd-relay.byted.org:8118; export no_proxy=byted.org,bytedance.net,10.*.*.*,127.*.*.*; export HTTP_PROXY=http://sys-proxy-rd-relay.byted.org:8118; export HTTPS_PROXY=http://sys-proxy-rd-relay.byted.org:8118; export NO_PROXY=byted.org,bytedance.net,10.*.*.*,127.*.*.*'
alias proxy_off='unset http_proxy; unset https_proxy; unset no_proxy; unset HTTP_PROXY; unset HTTPS_PROXY; unset NO_PROXY'
+2 -3
View File
@@ -6,7 +6,6 @@ alias stderr='tail -f /var/log/tiger/stderr'
# Essential environment variables
export MERLIN_PROFILING_HDFS_DIR='hdfs://haruna/home/byte_merlin_profiling/'
export RH2_ENV_JSON=/opt/tiger/rh2/env_json
export MLX_USER_TOKEN=bd2a3f1b71d54ab497f13f2eefc4f5bc
export RH2_TENSORBOARD_HDFS=hdfs://haruna/home/byte_aml_platform/public/rh2_prod/8b6d8490dc2904e0/tensorboard/20250527/903e5003c90ff1dc/arnold_trial/46714689
export SPARK_HOME=/opt/tiger/spark_deploy/spark-3.2/spark-stable
export PATH=/opt/common_tools:/opt/tiger/typhoon-blade:/usr/lib/x86_64-linux-gnu/openmpi/bin:/usr/local/cuda/bin:/home/tiger/system_op/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/tiger/arnold/arnold_entrypoint/tools:/opt/tiger/arnold/hdfs_client:/opt/tiger/yarn_deploy/hadoop/bin:/opt/tiger/yarn_deploy/hive/bin:/home/tiger/.local/bin:/opt/tiger/nastk/bin:/python:/opt/tiger/mlx_deploy/bin
@@ -29,10 +28,10 @@ alias hf_mirror_external='export HF_ENDPOINT=$HF_MIRROR_EXTERNAL'
export HF_ENDPOINT=http://huggingface-proxy-sg.byted.org
export HTTP_PROXY=http://sys-proxy-rd-relay.byted.org:8118
export HTTPS_PROXY=http://sys-proxy-rd-relay.byted.org:8118
export NO_PROXY=byted.org,bytedance.net,10.*.*.*,127.*.*.*
export NO_PROXY='byted.org,bytedance.net,10.*.*.*,127.*.*.*'
export http_proxy=http://sys-proxy-rd-relay.byted.org:8118
export https_proxy=http://sys-proxy-rd-relay.byted.org:8118
export no_proxy=byted.org,bytedance.net,10.*.*.*,127.*.*.*
export no_proxy='byted.org,bytedance.net,10.*.*.*,127.*.*.*'
alias proxy_on='export http_proxy=http://sys-proxy-rd-relay.byted.org:8118; export https_proxy=http://sys-proxy-rd-relay.byted.org:8118; export no_proxy=byted.org,bytedance.net,10.*.*.*,127.*.*.*; export HTTP_PROXY=http://sys-proxy-rd-relay.byted.org:8118; export HTTPS_PROXY=http://sys-proxy-rd-relay.byted.org:8118; export NO_PROXY=byted.org,bytedance.net,10.*.*.*,127.*.*.*'
alias proxy_off='unset http_proxy; unset https_proxy; unset no_proxy; unset HTTP_PROXY; unset HTTPS_PROXY; unset NO_PROXY'
+7 -20
View File
@@ -65,26 +65,6 @@ export PYSPARK_DRIVER_PYTHON="${PYSPARK_DRIVER_PYTHON:-/usr/bin/python3}"
# 默认 local[2],和原 mlxrc 保持一致
export PYSPARK_SUBMIT_ARGS="${PYSPARK_SUBMIT_ARGS:---master local[2] pyspark-shell}"
# MLXLAB devbox code disk 标记(如果启动脚本已经设置,就不要覆盖)
if [[ -n "${MLXLAB_DEVBOX_CODE_DISK}" ]]; then
export MLXLAB_DEVBOX_CODE_DISK=''
fi
# MLX / Merlin 相关变量(假设在容器启动时已经由 start_devbox.sh 导出)
# 这里统一再 export 一遍,保证交互 shell 也能继承
export MLX_USER_TOKEN='bd2a3f1b71d54ab497f13f2eefc4f5bc'
export MLX_USER='qingyuhao'
export MLX_IMAGE_VID='d51qjdbc77u9kebl603g'
export MLX_IMAGE_URL='hub.byted.org/reckon/data.reckon.mlx.image_10786:4aa09c59c9cbb1fcde50526696177c84'
export MLX_ENGINE_SID='bgi0zldy6943b7db'
export MLX_DEVBOX_ID='132783'
export MLX_HOST_URL='https://ml.bytedance.net/'
export MERLIN_HOST_URL='https://ml.bytedance.net'
export TCC_CDN_HOST='//lf6-config.bytetcc.com/obj/tcc-config-web'
export ZTI_ENV='cn'
export IS_SEED='true'
export MLXLAB_DEVBOX_CODE_DISK=''
# DOAS_ZONE(从 BYTE_REGION 推导)
if [[ "${BYTE_REGION}" == "CN" ]]; then
export DOAS_ZONE="cn"
@@ -154,7 +134,9 @@ if [[ "$WORKSPACE_ENVS_SET" != "1" ]]; then
envfile="/etc/.container_env"
if [[ -f $envfile ]]; then
while IFS= read -r line; do
[[ "$line" == *=* ]] || continue
_varname="${line%%=*}"
[[ "$_varname" =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]] || continue
if eval "[[ -z \"\${${_varname}+x}\" ]]"; then # env is not set
export "${_varname}=${line#*=}"
fi
@@ -226,7 +208,9 @@ worker_envfile="/etc/worker_envs_$ARNOLD_WORKER_ID"
user_worker_envfile="$HOME/.worker_envs/worker_envs_$ARNOLD_WORKER_ID"
if [[ -f $user_worker_envfile ]]; then
while IFS= read -r line; do
[[ "$line" == *=* ]] || continue
_varname="${line%%=*}"
[[ "$_varname" =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]] || continue
if eval "[[ -z \"\${${_varname}+x}\" ]]"; then # env is not set
export "${_varname}=${line#*=}"
fi
@@ -234,7 +218,9 @@ if [[ -f $user_worker_envfile ]]; then
unset _varname
elif [[ -f $worker_envfile ]]; then
while IFS= read -r line; do
[[ "$line" == *=* ]] || continue
_varname="${line%%=*}"
[[ "$_varname" =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]] || continue
if eval "[[ -z \"\${${_varname}+x}\" ]]"; then # env is not set
export "${_varname}=${line#*=}"
fi
@@ -276,6 +262,7 @@ if [[ -f "$envfile" ]]; then
# 跳过注释行和空行
[[ "$line" =~ ^[[:space:]]*# ]] && continue
[[ "$line" =~ ^[[:space:]]*$ ]] && continue
[[ "$line" == *=* ]] || continue
# 提取变量名和值
var_name="${line%%=*}"
+1 -1
View File
@@ -1,4 +1,4 @@
# Initialize pyenv (Python Version Manager)
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" # Add pyenv to PATH
eval "$(pyenv init - zsh)" # This loads pyenv
command -v pyenv &> /dev/null && eval "$(pyenv init - zsh)"