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

GCP虚拟机启动脚本安装Miniconda失败求助

GCP虚拟机启动脚本安装Miniconda失败的解决方案

问题描述

尝试在GCP虚拟机首次启动时通过启动脚本安装Miniconda,直接运行脚本正常,但作为启动脚本执行时出现以下错误:

Aug 29 15:49:51 testconda google_metadata_script_runner[850]: startup-script: /home/user/Miniconda3-latest-Linux-x86_64.sh: line 29: HOME: unbound variable
Aug 29 15:49:51 testconda google_metadata_script_runner[850]: startup-script: bash: /home/user/miniconda3/bin/conda: No such file or directory
Aug 29 15:49:51 testconda google_metadata_script_runner[850]: startup-script: bash: /home/user/miniconda3/etc/profile.d/conda.sh: No such file or directory
Aug 29 15:49:51 testconda google_metadata_script_runner[850]: startup-script: bash: conda: command not found
Aug 29 15:49:51 testconda google_metadata_script_runner[850]: startup-script: bash: conda: command not found
Aug 29 15:49:51 testconda google_metadata_script_runner[850]: startup-script exit status 127
Aug 29 15:49:51 testconda google_metadata_script_runner[850]: Finished running startup scripts.

原启动脚本:

#!/bin/bash -i
sleep 5
yes Y | sudo apt-get update

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -P /home/user/
bash /home/user/Miniconda3-latest-Linux-x86_64.sh -b
rm /home/user/Miniconda3-latest-Linux-x86_64.sh  
/home/user/miniconda3/bin/conda init bash
source /home/user/miniconda3/etc/profile.d/conda.sh
eval "$(cat /home/user/.bashrc | tail -n +10)"

yes Y | conda create -n test python=3.8

conda activate test

错误原因

  1. 环境变量缺失:GCP启动脚本以root用户非交互式运行,默认未设置HOME变量,导致Miniconda安装脚本报错
  2. 权限问题:直接以root执行安装,Miniconda文件会归root所有,后续普通用户无法访问
  3. 交互式shell参数无效:脚本开头的-i参数用于交互式shell,但启动脚本是非交互式环境,会导致环境加载异常

修正后的启动脚本

#!/bin/bash
sleep 5
# 系统包更新,使用-y自动确认
sudo apt-get update -y

# 定义目标用户和Miniconda安装路径
TARGET_USER="user"
INSTALL_DIR="/home/${TARGET_USER}/miniconda3"

# 切换到目标用户下载安装包
sudo -u ${TARGET_USER} wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -P /home/${TARGET_USER}/

# 以目标用户身份安装Miniconda,指定安装路径避免依赖HOME
sudo -u ${TARGET_USER} bash /home/${TARGET_USER}/Miniconda3-latest-Linux-x86_64.sh -b -p ${INSTALL_DIR}

# 删除安装包
sudo -u ${TARGET_USER} rm /home/${TARGET_USER}/Miniconda3-latest-Linux-x86_64.sh

# 在目标用户的shell环境中初始化conda并创建测试环境
sudo -u ${TARGET_USER} bash -c "
source ${INSTALL_DIR}/etc/profile.d/conda.sh
conda init bash
conda create -n test python=3.8 -y
"

关键修改说明

  • 移除#!/bin/bash -i中的-i参数:适配非交互式的启动脚本运行环境
  • 使用sudo -u ${TARGET_USER}:全程以目标用户身份执行操作,确保文件权限正确,避免root权限导致的访问问题
  • 增加-p ${INSTALL_DIR}参数:强制指定Miniconda安装路径,彻底解决HOME变量未绑定的错误
  • 替换yes Y |为-y参数:使用命令原生的自动确认参数,比管道输入更可靠
  • 用bash -c包裹conda操作:在目标用户的子shell中加载conda环境,确保conda命令可被正确识别

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:51:31