# PR #24141 完整报告

- 仓库：`sgl-project/sglang`
- 标题：ci: run setup_ld_library_path before install_sglang_kernel
- 合并时间：2026-05-01 01:55
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/24141

---

# 执行摘要

- 一句话：修复 CI 中 nvidia-cusparselt-cu13 库文件缺失问题
- 推荐动作：建议合并。该 PR 针对 CI 中的偶发依赖故障提供了稳健的防御机制，且改动量小、逻辑清晰。适合快速集成以消除 CI 不稳定因素。后续可关注类似的 pip 部分安装失败场景，考虑更通用的检测方案。

# 功能与动机

CI runner 上 nvidia-cusparselt-cu13 升级至 0.9.1 时出现部分失败，导致 libcusparseLt.so.0 文件丢失，torch import 失败（错误日志见 PR body 中 action 链接）。因为 pip 元数据标记为已安装，后续所有 pip install 操作均跳过该包，问题持续存在。

# 实现拆解

1. **定位脚本**：在 `scripts/ci/cuda/ci_install_dependency.sh` 的 `install_sglang` 函数末尾增加检查逻辑。
2. **检查缺失**：使用 `python3` 获取 site-packages 路径，检查 `nvidia/cusparselt/lib/libcusparseLt.so.0` 是否存在。
3. **条件重装**：如果该文件不存在但 `pip show nvidia-cusparselt-cu13` 成功（元数据存在），则打印 WARNING 并执行 `pip install --reinstall nvidia-cusparselt-cu13` 强制重装 wheel。
4. **执行顺序**：该防御段放在 `pip install -e "python[${EXTRAS}]"` 之后，确保不干扰正常安装流程。

关键文件：
- `scripts/ci/cuda/ci_install_dependency.sh`（模块 CI 脚本；类别 infra；类型 infrastructure；符号 install_sglang）: 主要变更文件，在 `install_sglang` 函数末尾添加了防御性重装逻辑，用于检测和修复 nvidia-cusparselt-cu13 元数据存在但库文件缺失的问题。

关键符号：install_sglang

## 关键源码片段

### `scripts/ci/cuda/ci_install_dependency.sh`

主要变更文件，在 `install_sglang` 函数末尾添加了防御性重装逻辑，用于检测和修复 nvidia-cusparselt-cu13 元数据存在但库文件缺失的问题。

```bash
# install_sglang 函数末尾增加防御性检查
# 某些 runner 上 nvidia-cusparselt-cu13 的 pip 元数据存在但 .so 文件丢失，
# 导致任何 torch import 失败。若文件缺失则强制重装 wheel。
SITE_PACKAGES=$(python3 -c "import site; print(site.getsitepackages()[0])")
if [ ! -f "$SITE_PACKAGES/nvidia/cusparselt/lib/libcusparseLt.so.0" ] \
   && pip show nvidia-cusparselt-cu13 >/dev/null 2>&1; then
    echo "WARNING: nvidia-cusparselt-cu13 metadata present but libcusparseLt.so.0 missing — reinstalling"
    $PIP_CMD install --reinstall nvidia-cusparselt-cu13 $PIP_INSTALL_SUFFIX
fi

```

# 评论区精华

**gemini-code-assist[bot]**指出：将 `setup_ld_library_path` 提前至 `install_sglang_kernel` 之前确实修复了 torch import，但从原位置移除该调用可能导致后续函数（如 `install_extra_deps`、`fix_nvidia_deps`）安装的其他 NVIDIA 包的库路径未加入 `LD_LIBRARY_PATH`。建议保留两个调用以确保所有路径正确。但最终实现并未采纳该建议——作者在后续 commit 中移除了与 `setup_ld_library_path` 相关的改动，仅保留了 cusparselt 的修复，避免了该副作用。

- setup_ld_library_path 位置冲突 (design): 作者未采用该建议，而是移除了所有与 setup_ld_library_path 相关的变更，仅保留 cusparselt 修复，从而避免副作用。

# 风险与影响

- 风险：风险极低：仅新增一段防御性 shell 指令，在文件缺失时触发重装，不影响正常路径。但重装操作可能略微增加 CI 执行时间（只在故障 runner 上触发）。
- 影响：直接影响 CI 安装流程的可靠性，防止因 nvidia-cusparselt-cu13 部分安装失败导致整个 CI 任务阻塞。因仅修改 CI 基础设施脚本，对业务逻辑无影响。
- 风险标记：CI 稳定性修复 , 偶发依赖问题

# 关联脉络

- PR #24102 ci: add per-host utilization view to runner-utilization report: 同一仓库 CI 基础设施的改进，共同提升 CI 观测性和可靠性。
- PR #24155 [AMD] Nightly image release for deepseek v4: 同为 CI 配置变更，但本 PR 涉及通用依赖修复，AMD 相关也可能受益。