def install_packages
      packages = []
      @scripts.each { |s| packages.push(s.packages) if s.packages && !s.packages.empty? }
      return true if packages.empty?

      success   = false
      installer = RightScale::Platform.installer

      @audit.create_new_section("Installing packages: #{packages.uniq.join(' ')}")
      audit_time do
        success = retry_execution('Installation of packages failed, retrying...') do
          begin
            installer.install(packages)
          rescue Exception => e
            @audit.append_output(installer.output)
            report_failure('Failed to install packages', e.message)
          else
            @audit.append_output(installer.output)
          end
          $?.success?
        end
      end
      report_failure('Failed to install packages', 'Package install exited with bad status') unless success
      true
    end
def install_packages
      packages = []
      @scripts.each { |s| packages.push(s.packages) if s.packages && !s.packages.empty? }
      return true if packages.empty?

      success   = false
      installer = RightScale::Platform.installer

      @audit.create_new_section("Installing packages: #{packages.uniq.join(' ')}")
      audit_time do
        success = retry_execution('Installation of packages failed, retrying...') do
          begin
            installer.install(packages)
          rescue Exception => e
            @audit.append_output(installer.output)
            report_failure('Failed to install packages', e.message)
          else
            @audit.append_output(installer.output)
          end
          $?.success?
        end
      end
      report_failure('Failed to install packages', 'Package install exited with bad status') unless success
      true
    end
Install required software packages, update @ok
 Always update the apt cache even if there is no package for recipes

 === Return
 true:: Always return true