Steps To Reproduce
$ bin/ruby-install truffleruby-graalvm-33.0.0 --prefix /tmp/truffleruby
>>> Installing truffleruby-graalvm 33.0.0 into /tmp/truffleruby ...
>>> Installing dependencies for truffleruby-graalvm 33.0.0 ...
Updating and loading repositories:
Repositories loaded.
Package "make-1:4.4.1-11.fc43.x86_64" is already installed.
Package "gcc-15.2.1-7.fc43.x86_64" is already installed.
Package "zlib-ng-compat-devel-2.3.3-2.fc43.x86_64" is already installed.
Package "ca-certificates-2025.2.80_v9.0.304-1.2.fc43.noarch" is already installed.
Nothing to do.
>>> Downloading https://github.com/truffleruby/truffleruby/releases/download/graal-33.0.0/truffleruby-jvm-33.0.0-linux-amd64.tar.gz into /home/eregon/src ...
HTTP response 302 ...[===========================================================================>] 152.96M 21.96MB/silename%3Dtruffleruby-jvm-3[Files: 1 Bytes: 152.96M [19.22MB/s] Redirects: 1 Todo: 0 Errors: 0 ]
>>> Verifying truffleruby-jvm-33.0.0-linux-amd64.tar.gz ...
>>> Extracting truffleruby-jvm-33.0.0-linux-amd64.tar.gz to /home/eregon/src/truffleruby-33.0.0-linux-amd64 ...
bin/ruby-install: line 53: cd: /home/eregon/src/truffleruby-33.0.0-linux-amd64: No such file or directory
!!! ruby build directory is missing: /home/eregon/src/truffleruby-33.0.0-linux-amd64
zsh: exit 255
Indeed there is no src/truffleruby-33.0.0-linux-amd64, instead there is:
$ ls -l ~/src
...
drwxr-xr-x. 9 eregon eregon 4096 Mar 26 14:20 truffleruby-jvm-33.0.0-linux-amd64
-rw-r--r--. 1 eregon eregon 160400569 Jan 9 12:46 truffleruby-jvm-33.0.0-linux-amd64.tar.gz
The issue here is the name of the folder inside the archive changed, from truffleruby-graalvm 25.0.0+ to include jvm and before it did not:
for f in truffleruby-jvm-*-macos-aarch64.tar.gz; do echo $f; tar tf $f | head -1; echo; done
truffleruby-jvm-23.1.0-macos-aarch64.tar.gz
truffleruby-23.1.0-macos-aarch64/native-image.properties
zsh: broken pipe tar tf $f |
zsh: done head -1
truffleruby-jvm-24.2.2-macos-aarch64.tar.gz
truffleruby-24.2.2-macos-aarch64/LICENSE_TRUFFLERUBY.txt
zsh: broken pipe tar tf $f |
zsh: done head -1
truffleruby-jvm-25.0.0-macos-aarch64.tar.gz
truffleruby-jvm-25.0.0-macos-aarch64/native-image.properties
zsh: broken pipe tar tf $f |
zsh: done head -1
truffleruby-jvm-33.0.1-macos-aarch64.tar.gz
truffleruby-jvm-33.0.1-macos-aarch64/native-image.properties
zsh: broken pipe tar tf $f |
zsh: done head -1
This gets worse because it would accidentally "work wrongly/not fail" if one does:
$ bin/ruby-install truffleruby-33.0.0 --prefix /tmp/truffleruby-native
$ bin/ruby-install truffleruby-graalvm-33.0.0 --prefix /tmp/truffleruby
SUCCESS! BUT:
$ /tmp/truffleruby/bin/ruby -v
truffleruby 33.0.0 (2026-01-09), like ruby 3.3.7, Oracle GraalVM Native [x86_64-linux]
UH-OH that's wrong, should be Oracle GraalVM JVM
because the same folder truffleruby-33.0.0-linux-amd64 gets reused.
Other Ruby installers do not have this problem.
The fundamental issue here is ruby-install does not take much precautions that the archive extracts as the expected name, and requires hardcoding the name of the folder inside the archive which is (as proven by this issue) brittle.
I will make a PR to ensure ruby-install always extract to the proper place without conflicts and no longer needs hardcoded folder names inside the archive.
Found by @nirvdrum
Steps To Reproduce
Indeed there is no
src/truffleruby-33.0.0-linux-amd64, instead there is:The issue here is the name of the folder inside the archive changed, from truffleruby-graalvm 25.0.0+ to include
jvmand before it did not:This gets worse because it would accidentally "work wrongly/not fail" if one does:
because the same folder
truffleruby-33.0.0-linux-amd64gets reused.Other Ruby installers do not have this problem.
The fundamental issue here is
ruby-installdoes not take much precautions that the archive extracts as the expected name, and requires hardcoding the name of the folder inside the archive which is (as proven by this issue) brittle.I will make a PR to ensure ruby-install always extract to the proper place without conflicts and no longer needs hardcoded folder names inside the archive.
Found by @nirvdrum