docs: def download(*packages, **kwargs):
      '''
      Download packages to the local disk.
  
      refresh
          force a refresh if set to True.
          If set to False (default) it depends on zypper if a refresh is
          executed.
  
      root
          operate on a different root directory.
  
      CLI example:
  
      .. code-block:: bash
  
          salt '*' pkg.download httpd
          salt '*' pkg.download httpd postfix
      '''
      if not packages:
          raise SaltInvocationError('No packages specified')
  
      root = kwargs.get('root', None)
  
      refresh = kwargs.get('refresh', False)
      if refresh:
          refresh_db(root)
  
      pkg_ret = {}
      for dld_result in __zypper__(root=root).xml.call('download', *packages).getElementsByTagName("download-result"):
          repo = dld_result.getElementsByTagName("repository")[0]
          path = dld_result.getElementsByTagName("localfile")[0].getAttribute("path")
          pkg_info = {
              'repository-name': repo.getAttribute('name'),
              'repository-alias': repo.getAttribute('alias'),
              'path': path,
          }
          key = _get_first_aggregate_text(
              dld_result.getElementsByTagName('name')
          )
          if __salt__['lowpkg.checksum'](pkg_info['path'], root=root):
              pkg_ret[key] = pkg_info
  
      if pkg_ret:
          failed = [pkg for pkg in packages if pkg not in pkg_ret]
          if failed:
              pkg_ret['_error'] = ('The following package(s) failed to download: {0}'.format(', '.join(failed)))
          return pkg_ret
  
      raise CommandExecutionError(
          'Unable to download packages: {0}'.format(', '.join(packages))
      )