# File lib/chef/provider/package/yum.rb, line 1022
        def install_package(name, version)
          if @new_resource.source
            yum_command("yum -d0 -e0 -y#{expand_options(@new_resource.options)} localinstall #{@new_resource.source}")
          else
            # Work around yum not exiting with an error if a package doesn't exist for CHEF-2062
            if @yum.version_available?(name, version, arch)
              method = "install"

              # More Yum fun:
              #
              # yum install of an old name+version will exit(1)
              # yum install of an old name+version+arch will exit(0) for some reason
              #
              # Some packages can be installed multiple times like the kernel
              unless @yum.allow_multi_install.include?(name)
                if RPMVersion.parse(@current_resource.version) > RPMVersion.parse(version)
                  # Unless they want this...
                  if allow_downgrade
                    method = "downgrade"
                  else
                    # we bail like yum when the package is older
                    raise Chef::Exceptions::Package, "Installed package #{name}-#{@current_resource.version} is newer " +
                                                     "than candidate package #{name}-#{version}"
                  end
                end
              end

              yum_command("yum -d0 -e0 -y#{expand_options(@new_resource.options)} #{method} #{name}-#{version}#{yum_arch}")
            else
              raise Chef::Exceptions::Package, "Version #{version} of #{name} not found. Did you specify both version " +
                                               "and release? (version-release, e.g. 1.84-10.fc6)"
            end
          end
          if flush_cache[:after]
            @yum.reload
          else
            @yum.reload_installed
          end
        end