#905: Can't install the rubygems that create a file in "/usr/bin/". ----------------------------------+----------------------------------------- Reporter: watson1978@… | Owner: lsansonetti@… Type: defect | Status: new Priority: blocker | Milestone: Component: MacRuby | Keywords: 0.7-blocker ----------------------------------+----------------------------------------- Comment(by watson1978@…): I atach a pach. {{{ #!diff diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb index 999a1be..7c1b28e 100644 --- a/lib/rubygems/installer.rb +++ b/lib/rubygems/installer.rb @@ -325,13 +325,21 @@ class Gem::Installer # FileUtils.rm_f bin_script_path # prior install may have been --no-wrappers bin_script_exists = File.exists?(bin_script_path) + mode = 'w' unless(bin_script_exists) + mode ||= 'r+' new_shebang = shebang(filename) - File.open bin_script_path, 'r+', 0755 do |file| + File.open bin_script_path, mode, 0755 do |file| if bin_script_exists # If the first line is different than the shebang we want to insert # we are probably overwriting a script installed by another ruby # implementation / version - if file.readline.chomp != new_shebang + begin + old_shebang = file.readline.chomp + rescue + old_shebang = "" + end + + if old_shebang != new_shebang warn = <<-WARN_MESSAGE You are installing a new version of #{bin_script_path}. This file already exists with a different shebang, possibly from a different }}} Result: {{{ $ sudo rm /usr/bin/hotcocoa $ sudo macgem install hotcocoaSuccessfully installed hotcocoa-0.5.1 1 gem installed $ sudo rm /usr/bin/hotcocoa $ sudo touch /usr/bin/hotcocoa $ sudo macgem install hotcocoa WARNING: You are installing a new version of /usr/bin/hotcocoa. This file already exists with a different shebang, possibly from a different ruby implementation or version. This operation may break the script. Do you still wish to continue? [yn] y Successfully installed hotcocoa-0.5.1 1 gem installed $ sudo rm /usr/bin/hotcocoa $ echo '#!ruby' | sudo tee -i /usr/bin/hotcocoa#!ruby $ sudo macgem install hotcocoa WARNING: You are installing a new version of /usr/bin/hotcocoa. This file already exists with a different shebang, possibly from a different ruby implementation or version. This operation may break the script. Do you still wish to continue? [yn] y Successfully installed hotcocoa-0.5.1 1 gem installed }}} -- Ticket URL: <http://www.macruby.org/trac/ticket/905#comment:5> MacRuby <http://macruby.org/>