-
Notifications
You must be signed in to change notification settings - Fork 12
Description
I hit a bug in the installer script at:
curl --proto '=https' -sSf https://dnvm.net/install.sh | shon this system:
- OS: Fedora Asahi Remix 43
- Arch:
aarch64/arm64 - Shell:
/bin/bash - Invocation context: non-interactive shell / piped into
sh
Observed behavior
The installer starts, then fails with:
info: downloading installer
Warning: Not enforcing strong cipher suites for TLS, this is potentially less secure
Warning: Not enforcing TLS v1.2, this is potentially less secure
sh: line 227: say: command not found
Root cause
The script defines:
err() {
say "$1" >&2
exit 1
}but say is never defined anywhere in the script.
On Linux, say is not a standard command, so any path that calls err() crashes with say: command not found instead of printing the intended error.
Why this may not reproduce in a normal interactive terminal
This seems to show up when the script hits an error path, especially in non-interactive contexts.
In my case, after patching in a local say() shim, the script’s intended error was:
Unable to run interactively. Run with -y to accept defaults, --help for additional options
So interactive runs may appear fine because they never hit err().
Minimal fix
Define say() in the script, or replace say with printf / echo.
For example:
say() {
printf '%s\n' "$1"
}or just change err() to:
err() {
printf '%s\n' "$1" >&2
exit 1
}Additional note
After working around the say issue and running with -y, the script successfully installed dnvm itself, but defaulted to installing .NET 10 on this machine. When I later tried installing the .NET 11 preview via dnvm, extraction failed with:
Error: Extract failed: Could not find file '/tmp/.../sdk/11.0.100-preview.2.../FSharp/Microsoft.NET.StringTools.dll'
Note: I asked openclaw to install dnvm/dotnet. I then asked it to write this report on what happened.