Results 1 to 2 of 2

Thread: Can't get updates on 11.0

  1. #1

    Default Can't get updates on 11.0

    For the last 2 weeks I haven't been able to get updates for 11.0. This happened after a update, and now I get this message when I run zypper refresh

    Code:
    updates: failed to cache repo
    And tells me there is a error on line 28 of /usr/bin/repo2solv.sh cd -o invalid option.

    Here is the shell script. I don't see the problem on line 28
    Code:
    #! /bin/sh
    # repo2solv
    #
    # give it a directory of a local mirror of a repo and this
    # tries to detect the repo type and generate one SOLV file on stdout
    
    test_susetags() {
      if test -s content; then
        DESCR=`grep DESCRDIR content | cut -d ' ' -f 2`
        if test -z $DESCR; then
          DESCR=suse/setup/descr
        fi
        test -d $DESCR
        return $?
      else
        return 1
      fi
    }
    
    # this should signal an error if there is a problem
    set -e 
    
    LANG=C
    parser_options=${PARSER_OPTIONS:-}
    
    
    dir="$1"
    cd "$dir" || exit 1
    if test -d repodata; then
      cd repodata || exit 2
    
      # This contains a primary.xml* and maybe patches
      for i in primary.xml*; do
        case $i in
          *.gz) cmd="gzip -dc" ;;
          *.bz2) cmd="bzip2 -dc" ;;
          *) cmd="cat" ;;
        esac
        # only check the first primary.xml*, in case there are more
        break
      done
      primfile="/nonexist"
      if test -n "$cmd"; then
        # we have some primary.xml*
        primfile=`mktemp` || exit 3
        $cmd $i | rpmmd2solv $parser_options > $primfile || exit 4
      fi
    
      # This contains a updateinfo.xml* and maybe patches
      if test -f updateinfo.xml || test -f updateinfo.xml.gz || test -f updateinfo.xml.bz2 ; then
          for i in updateinfo.xml*; do
              case $i in
                  *.gz) cmd="gzip -dc" ;;
                  *.bz2) cmd="bzip2 -dc" ;;
                  *) cmd="cat" ;;
              esac
              # only check the first updateinfo.xml*, in case there are more
              break
          done
          updateinfofile="/nonexist"
          if test -n "$cmd"; then
          # we have some updateinfo.xml*
              updateinfofile=`mktemp` || exit 3
              $cmd $i | updateinfoxml2solv $parser_options > $updateinfofile || exit 4
          fi
      fi
    
      patchfile="/nonexist"
      if test -f patches.xml; then
        patchfile=`mktemp` || exit 3
        (
         echo '<patches>'
         for i in patch-*.xml*; do
           case $i in
             *.gz) gzip -dc "$i" ;;
    	 *.bz2) bzip2 -dc "$i" ;;
    	 *) cat "$i" ;;
           esac
         done
         echo '</patches>'
        ) | grep -v '\?xml' | patchxml2solv $parser_options > $patchfile || exit 4
      fi
    
      # This contains a deltainfo.xml*
      if test -f deltainfo.xml || test -f deltainfo.xml.gz || test -f deltainfo.xml.bz2 ; then
          for i in deltainfo.xml*; do
              case $i in
                  *.gz) cmd="gzip -dc" ;;
                  *.bz2) cmd="bzip2 -dc" ;;
                  *) cmd="cat" ;;
              esac
              # only check the first deltainfo.xml*, in case there are more
              break
          done
          deltainfofile="/nonexist"
          if test -n "$cmd"; then
          # we have some deltainfo.xml*
              deltainfofile=`mktemp` || exit 3
              $cmd $i | deltainfoxml2solv $parser_options > $deltainfofile || exit 4
          fi
      fi
    
      # Now merge primary, patches, updateinfo, and deltainfo
      if test -s $primfile; then
        m_primfile=$primfile
      fi
      if test -s $patchfile; then
        m_patchfile=$patchfile
      fi
      if test -s $updateinfofile; then
        m_updateinfofile=$updateinfofile
      fi
      if test -s $deltainfofile; then
        m_deltainfofile=$deltainfofile
      fi
      mergesolv $m_primfile $m_patchfile $m_updateinfofile $m_deltainfofile
      rm -f $primfile $patchfile $updateinfofile $deltainfofile
    
    elif test_susetags; then
      olddir=`pwd`
      DESCR=`grep DESCRDIR content | cut -d ' ' -f 2`
      if test -z $DESCR; then
        DESCR=suse/setup/descr
      fi
      cd ${DESCR} || exit 2
      (
        # First packages
        if test -s packages.gz; then
          gzip -dc packages.gz
        elif test -s packages.bz2; then
          bzip2 -dc packages.bz2
        elif test -s packages; then
          cat packages
        fi
    
        # DU
        if test -s packages.DU.gz; then
          gzip -dc packages.DU.gz
        elif test -s packages.DU.bz2; then
          bzip2 -dc packages.DU.bz2
        elif test -s packages.DU; then
          cat packages.DU
        fi
    
        # Now default language
        if test -s packages.en.gz; then
          gzip -dc packages.en.gz
        elif test -s packages.en.bz2; then
          bzip2 -dc packages.en.bz2
        elif test -s packages.en; then
          cat packages.en
        fi
    
        # Now patterns.  Not simply those files matching *.pat{,.gz,bz2},
        # but only those mentioned in the file 'patterns'
        if test -f patterns; then
          for i in `cat patterns`; do
            test -s "$i" || continue
            case $i in
              *.gz) gzip -dc "$i" ;;
    	  *.bz2) bzip2 -dc "$i" ;;
    	  *) cat "$i" ;;
    	esac
          done
        fi
    
        # Now all other packages.{lang}.  Needs to come last as it switches
        # languages for all following susetags files
        for i in packages.*; do
          case $i in
    	*.gz) name="${i%.gz}" ; prog="gzip -dc" ;;
    	*.bz2) name="${i%.bz2}" ; prog="bzip2 -dc" ;;
    	*) name="$i"; prog=cat ;;
          esac
          case $name in
    	# ignore files we handled already
    	*.DU | *.en | *.FL | packages ) continue ;;
    	*) 
    	  suff=${name#packages.}
    	  echo "=Lan: $suff"
    	  eval "$prog '$i'" ;;
          esac
        done
    
      ) | susetags2solv -c "${olddir}/content" $parser_options || exit 4
      cd "$olddir"
    else
      rpms=''
      for r in *.rpm ; do
        rpms="$rpms$r
    "
      done
      if test -n "$rpms" ; then
          echo "$rpms" | rpms2solv -m -
      else
          exit 1
      fi
    fi

  2. #2
    Join Date
    Jun 2008
    Location
    Auckland, NZ
    Posts
    20,377
    Blog Entries
    1

    Default Re: Can't get updates on 11.0

    Could be caused by a broken repo. I would try disabling each repo in sequence and trying

    zypper ref

    (Alternatively you could just update by repo only for each one you have installed). Repeat until you find the culprit.

    Similar thread here for you to check out. Report back.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •