I think that throwing an exception is a much more appropriate and
idiomatic way to handle errors than just silently failing. If it's
going to break a lot of your code, though, why not use something like
the following at the top of your top-level library code (or, include
it in another library called something like 'old-system.rb'):

major, minor, release = VERSION.split('.').collect {|s| s.to_i}
if (major == 1 and minor > 8) or (major > 1)
  alias new_system system
  def system(*args)
    begin
      new_system(*args)
    rescue Errno::ENOENT
      return false
    end
  end
end

...or something similar.

Lennon