如何在Azure App Service中通过启动命令安装包并解决报错
启动命令安装软件包失败,但SSH手动执行正常的问题排查与解决
尝试通过启动命令安装两个软件包时控制台报错,但在SSH中手动运行相同命令却能正常执行。控制台报错详情如下:
2024-06-23T21:13:54.129973640Z 注意:/home目录以外的任何数据都不会被持久化 2024-06-23T21:13:54.449210327Z 启动OpenBSD安全Shell服务器:sshd。 2024-06-23T21:13:54.449244227Z 正在运行 oryx create-script -appPath /home/site/wwwroot -output /opt/startup/startup.sh -bindPort 8080 -startupCommand '/home/start.sh; apache2-foreground;' 2024-06-23T21:13:54.558009274Z 在'/home/site/wwwroot/oryx-manifest.toml'找不到构建清单文件 2024-06-23T21:13:54.559142283Z 无法在清单中找到操作ID,正在生成操作ID... 2024-06-23T21:13:54.559917389Z 构建操作ID:4d038af9-0ec6-4199-8974-471088a62879 2024-06-23T21:13:55.055261448Z 正在将输出脚本写入'/opt/startup/startup.sh' 2024-06-23T21:13:55.238603476Z E: 更新命令不接受参数 2024-06-23T21:14:15.474124654Z E: 无法获取 http://deb.debian.org/debian-security/pool/updates/main/d/dbus/libdbus-1-3_1.12.24-0+deb10u1_amd64.deb 404 Not Found [IP: 151.101.190.132 80] 2024-06-23T21:14:15.478284583Z E: 无法获取 http://deb.debian.org/debian-security/pool/updates/main/d/dbus/dbus_1.12.24-0+deb10u1_amd64.deb 404 Not Found [IP: 151.101.190.132 80] 2024-06-23T21:14:15.478300083Z E: 无法获取 http://deb.debian.org/debian-security/pool/updates/main/d/dbus/dbus-user-session_1.12.24-0+deb10u1_amd64.deb 404 Not Found [IP: 151.101.190.132 80] 2024-06-23T21:14:15.478305483Z E: 无法获取 http://deb.debian.org/debian-security/pool/updates/main/f/ffmpeg/libavutil56_4.1.10-0+deb10u1_amd64.deb 404 Not Found [IP: 151.101.190.132 80] 2024-06-23T21:14:15.478309783Z E: 无法获取 http://deb.debian.org/debian-security/pool/updates/main/f/ffmpeg/libswresample3_4.1.10-0+deb10u1_amd64.deb 404 Not Found [IP: 151.101.190.132 80] 2024-06-23T21:14:15.478313883Z E: 无法获取 http://deb.debian.org/debian-security/pool/updates/main/f/ffmpeg/libavcodec58_4.1.10-0+deb10u1_amd64.deb 404 Not Found [IP: 151.101.190.132 80] 2024-06-23T21:14:15.481242303Z E: 无法获取 http://deb.debian.org/debian-security/pool/updates/main/c/curl/libcurl3-gnutls_7.64.0-4+deb10u3_amd64.deb 404 Not Found [IP: 151.101.190.132 80] 2024-06-23T21:14:15.481260603Z E: 无法获取 http://deb.debian.org/debian-security/pool/updates/main/p/poppler/libpoppler82_0.71.0-5+deb10u1_amd64.deb 404 Not Found [IP: 151.101.190.132 80] 2024-06-23T21:14:15.481284403Z E: 无法获取 http://deb.debian.org/debian-security/pool/updates/main/p/python3.7/libpython3.7_3.7.3-2+deb10u4_amd64.deb 404 Not Found [IP: 151.101.190.132 80] 2024-06-23T21:14:15.481289003Z E: 无法获取部分归档文件,也许可以运行apt-get update或者尝试添加--fix-missing参数? 2024-06-23T21:14:17.427880704Z E: 无法获取 http://deb.debian.org/debian-security/pool/updates/main/d/dbus/libdbus-1-3_1.12.24-0+deb10u1_amd64.deb 404 Not Found [IP: 146.75.74.132 80] 2024-06-23T21:14:17.428726110Z E: 无法获取 http://deb.debian.org/debian-security/pool/updates/main/d/dbus/dbus_1.12.24-0+deb10u1_amd64.deb 404 Not Found [IP: 146.75.74.132 80] 2024-06-23T21:14:17.429575816Z E: 无法获取部分归档文件,也许可以运行apt-get update或者尝试添加--fix-missing参数?
报错关键点分析
- 更新命令参数错误:日志中
E: 更新命令不接受参数说明启动脚本里的apt-get update被错误添加了多余参数,导致命令执行失败。 - 源地址失效:大量404错误是因为Debian 10(buster)的安全源已被官方归档,原
deb.debian.org/debian-security路径不再提供对应版本的软件包。 - 环境差异:SSH手动执行正常,大概率是因为SSH会话中已经提前更新过源列表,或者启动脚本的执行环境与SSH会话存在上下文差异(比如环境变量、工作目录等)。
解决方法
1. 修正apt-get update命令
检查启动脚本中的命令,确保apt-get update后没有多余参数,正确格式为:
apt-get update
2. 替换为归档源
将debian-security源替换为官方归档源,执行以下命令更新源列表:
echo "deb http://archive.debian.org/debian-security buster/updates main" > /etc/apt/sources.list.d/debian-security.list apt-get update
3. 调整启动脚本逻辑
在安装软件包前先确保源已更新,完整的安装命令示例:
apt-get update && apt-get install -y 软件包名称1 软件包名称2
4. 提前到构建阶段(可选)
如果使用Oryx部署,可将软件包安装步骤放在构建阶段完成,避免每次启动时重复执行安装操作,提升服务启动效率。
内容的提问来源于stack exchange,提问作者user1864072
相关产品推荐
相关产品推荐

