_____________________________________

                FREEBSD-UPDATE AND CORRUPT METADATA

                           Nicolas Herry
               _____________________________________


                            2017/11/05





1 freebsd-update and corrupt metadata
=====================================

  I was updating my laptop from FreeBSD 11.0 to FreeBSD 11.1 today,
  something I should have done already sometime ago, but let's
  forget about that. While doing so, doing the usual
  `freebsd-update -r 11.1-RELEASE upgrade' would give the
  following:

  ,----
  | root@priest:/root # freebsd-update -r 11.1-RELEASE upgrade
  | Looking up update.FreeBSD.org mirrors... 3 mirrors found.
  | Fetching metadata signature for 11.0-RELEASE from update5.freebsd.org... done.
  | Fetching metadata index... done.
  | Fetching 1 metadata files... gunzip: (stdin): unexpected end of file metadata is corrupt.
  `----

  Usually, this means that something went wrong while downloading
  the file, and trying again is likely to solve the issue. All you
  have to do then is remove the faulty metadata file first, and
  type the same command:

  ,----
  | root@priest:/root # rm /var/db/freebsd-update/65ce95e4589bd0481b57091a9e476361c713dbb67a77136318cef1b7489c6b7a.gz
  | root@priest:/root # freebsd-update -r 11.1-RELEASE upgrade
  `----

  This solves the issue 99% of the time. However, in my case, it
  did not, and I kept getting the same error again and again. What
  this is means is that the distant file is at fault, and that
  `freebsd-update' is downloading this very file each and every
  time. All it takes in this case is to instruct the command to
  select a different mirror. First, look into the file
  `serverlist_tried' which server (or mirror) you have been working
  with:

  ,----
  | root@priest:/root # cat /var/db/freebsd-update/serverlist_tried
  | 1 50 update5.freebsd.org
  `----

  Next, open `serverlist' to see what the alternatives are:

  ,----
  | root@priest:/root # cat /var/db/freebsd-update/serverlist
  | 1 35 update4.freebsd.org
  | 1 40 update6.freebsd.org
  | 1 50 update5.freebsd.org
  `----

  Now, remove the faulty file, and ask `freebsd-update' to use
  another mirror:
  ,----
  | root@priest:/root # rm /var/db/freebsd-update/65ce95e4589bd0481b57091a9e476361c713dbb67a77136318cef1b7489c6b7a.gz
  | root@priest:/root # freebsd-update -s update4.freebsd.org -r 11.1-RELEASE upgrade
  `----

  The upgrade should go flawlessly from then on.