ruby/rubygems · error · Gem::InstallError
#{spec} has an invalid executable
Error message
#{spec} has an invalid executable What it means
Error "#{spec} has an invalid executable" thrown in ruby/rubygems.
Source
Thrown at lib/rubygems/installer.rb:717
unless /\A[\w.-]+\z/.match?(spec.platform.to_s)
raise Gem::InstallError, "#{spec.platform} is an invalid platform"
end
unless /\A\d+\z/.match?(spec.specification_version.to_s)
raise Gem::InstallError, "#{spec} has an invalid specification_version"
end
if spec.dependencies.any? {|dep| dep.type != :runtime && dep.type != :development }
raise Gem::InstallError, "#{spec} has an invalid dependencies"
end
if spec.dependencies.any? {|dep| dep.name =~ /(?:\R|[<>])/ }
raise Gem::InstallError, "#{spec} has an invalid dependencies"
end
if spec.executables.any? {|name| !name.is_a?(String) || name != File.basename(name) || /\A\.\.?\z|\R/.match?(name) }
raise Gem::InstallError, "#{spec} has an invalid executable"
end
raise Gem::InstallError, "#{spec} has an invalid bindir" unless spec.bindir.is_a?(String)
expanded_gem_dir = File.expand_path(gem_dir)
expanded_bindir = File.expand_path(File.join(gem_dir, spec.bindir))
unless expanded_bindir == expanded_gem_dir || expanded_bindir.start_with?("#{expanded_gem_dir}/")
raise Gem::InstallError, "#{spec} has an invalid bindir"
end
end
##
# Return the text for an application file.
def app_script_text(bin_file_name)
# NOTE: that the `load` lines cannot be indented, as old RG versions match
# against the beginning of the line
escaped_bin_file_name = bin_file_name.gsub(/[\\']/) {|c| "\\#{c}" }View on GitHub (pinned to 86cbb817a3)
Solutions
- Fix `spec.executables` to name files that exist in the bindir
When it happens
Trigger: Thrown at lib/rubygems/installer.rb:717 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of ruby/rubygems@86cbb817a3 (2026-08-23).
Data as JSON: /api/errors/039323565fe254e4.
Report an issue: GitHub.