Hacktoberfest 2026:維護者為十月標記出來的 issue,仍然開放、適合新手。 瀏覽 Hacktoberfest issue

bug: install.sh ignores XDG_CONFIG_HOME for the local gateway config

未關閉 適合新手
#4,042 2 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

維護者通常 1 天內回覆

@fede-kamel 已經在處理了。

開始於 2026年10月1日。

  • #4043 來自 @efegokdemir —— 已關閉,未合併
  • #4063 來自 @fede-kamel —— 未關閉

評估

難度
2/5
預估耗時
1-3 小時
新手友好度
88/100
Issue 類型
缺陷
描述清晰度
描述清楚
活躍度
活躍
技術堆疊
shell
領域
devops

研究方向

從 install.sh 開始,檢查目前使用本機閘道組態目錄的就緒檢查和清理路徑。執行 mise run test:install-sh,涵蓋 XDG_CONFIG_HOME 未設定、空白、已設定,以及設定為包含空格的值等情況。當安裝程式和 CLI 使用相同的目錄、列出的重新安裝情境以結束碼 0 結束,且驗收檢查通過時,即表示完成。

由索引模型根據 Issue 內容生成。

描述

area:cli os:linux os:macos state:validated
User Story

As someone whose shell exports XDG_CONFIG_HOME,
I want install.sh to use the same config directory as the openshell CLI,
so that installing and reinstalling OpenShell just work.

Problem Statement

The CLI keeps each gateway's entry and client certificates under $XDG_CONFIG_HOME/openshell when that variable is set. The installer always uses ~/.config/openshell instead, in two places:

  • The readiness check, which connects to the gateway with the client certificates it expects to find there.
  • The cleanup that removes an old openshell entry before adding it again.

With the variable set, the installer and the CLI look in different directories.

Impact / Why This Matters

With XDG_CONFIG_HOME pointing somewhere other than ~/.config:

  • On macOS, the install fails whenever ~/.config/openshell has no client certificates for the gateway, or has old ones. The installer waits 30s and exits 1.
  • On macOS and Linux, running the installer a second time exits 1 with "Gateway 'openshell' already exists". When the gateway is already registered, the installer removes the entry and adds it again. But it removes it from ~/.config/openshell, and the CLI's entry is under $XDG_CONFIG_HOME/openshell. That entry is still there, so adding it again fails.

The gateway itself keeps running in both cases. On Linux the first run works only because the gateway service also writes a copy of its client certificates to ~/.config/openshell when it starts, so the readiness check happens to find current ones there.

The workarounds don't really work. Unsetting XDG_CONFIG_HOME just for the install puts the gateway entry under ~/.config, so the CLI in your normal shell can't find it afterwards. Running openshell gateway remove openshell before a reinstall avoids the "already exists" error, but not the certificate check on macOS. And nothing in the installer's output mentions the variable.

Acceptance Criteria

With XDG_CONFIG_HOME set and XDG_STATE_HOME unset:

  • The installer exits 0 when ~/.config/openshell has no client certificates for the gateway, and when it has old ones.
  • After the install, openshell status in the same shell shows the gateway.
  • Running the installer a second time exits 0.

In general:

  • With XDG_CONFIG_HOME unset or empty, the installer keeps using ~/.config/openshell.
  • mise run test:install-sh covers unset, empty, set, and set-with-spaces values.

With both XDG_CONFIG_HOME and XDG_STATE_HOME set, the Linux install fails for a different reason, that maybe is not as important, and not described in this issue.

Reproduction Steps
  1. export XDG_CONFIG_HOME="$(mktemp -d)", and make sure ~/.config/openshell/gateways/openshell doesn't exist.
  2. Run curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | sh.
  3. On macOS it waits 30s, prints mTLS client bundle is not ready under ~/.config/..., and exits 1. On Linux it succeeds.
  4. Run it again. Both platforms stop with Gateway 'openshell' already exists.
Environment
  • OpenShell 0.1.2, installer from main at 9cb72baa2. The installer code involved is the same on current main.
  • macOS 26.2 arm64, Homebrew 7.0.7, run as the logged-in user
  • Ubuntu 26.04 x86_64, deb package, run as root, Docker 29.1.3
Logs
# macOS, no certificates under ~/.config
mTLS client bundle is not ready under ~/.config/openshell/gateways/openshell/mtls
openshell: error: local gateway listener did not become reachable at https://localhost:17670/ within 30s

# macOS, old certificates under ~/.config
curl: (60) SSL certificate problem: unable to get local issuer certificate

# macOS and Linux, second run
openshell: local gateway already exists; removing and re-adding it...
Error:   × Gateway 'openshell' already exists.
主要語言
Rust
星號
16.3k
分支
1.8k
平均合併
2 天 7 小時
30 天內合併 PR
364

環境準備

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

NVIDIA/OpenShell 的其他 Issue

查看 NVIDIA/OpenShell 的全部 Issue

相似的 Issue

更多 Rust Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。