[BACK]Return to update_openbsd CVS log [TXT][DIR] Up to [local] / openbsd / update_openbsd

Diff for /openbsd/update_openbsd/update_openbsd between version 1.58 and 1.70

version 1.58, 2013/12/31 18:46:59 version 1.70, 2015/01/18 02:59:23
Line 1 
Line 1 
 #!/bin/sh  #!/bin/sh
 # $AFresh1: update_openbsd,v 1.57 2013/12/31 18:42:31 andrew Exp $  # $AFresh1: update_openbsd,v 1.69 2014/10/18 23:05:49 andrew Exp $
 #  #
 # Copyright (c) 2012 Andrew Fresh <andrew@afresh1.com>  # Copyright (c) 2012 Andrew Fresh <andrew@afresh1.com>
 #  #
Line 18 
Line 18 
   
 installed_sets() {  installed_sets() {
     local misc=/usr/share/doc/README      local misc=/usr/share/doc/README
     local man=/usr/share/man/cat1/intro.0      local man=/usr/share/man/man1/intro.1
     local comp=/usr/bin/cc      local comp=/usr/bin/cc
     local game=/usr/games/      local game=/usr/games/
     local xbase=/usr/X11R6/      local xbase=/usr/X11R6/
Line 157 
Line 157 
     fi      fi
   
     if [ X"" == X"${_v}" ]; then      if [ X"" == X"${_v}" ]; then
         echo ERROR: Unable to determine file version! >&2          if [ X"" == X"${MIRROR}" ]; then
               echo ERROR: No sets, and no MIRROR, unable to continue. >&2
           else
               echo ERROR: Unable to determine FILE_VER, check your MIRROR. >&2
           fi
         return 1          return 1
     fi      fi
   
Line 218 
Line 222 
         if [ ! -e ./${_b} ]; then          if [ ! -e ./${_b} ]; then
             echo "===> $FTP_CMD ${FTP}/${_b}"              echo "===> $FTP_CMD ${FTP}/${_b}"
             $FTP_CMD ${FTP}/${_b}              $FTP_CMD ${FTP}/${_b}
           else
               echo "===> Have ${_b}"
         fi          fi
           kernel_file_version "${_b}"
     done      done
   
     for _s in $INSTALLED_SETS; do      for _s in $INSTALLED_SETS; do
Line 266 
Line 273 
     fi      fi
   
     local _nv=`echo $NEW_VER | sed -e 's/\.//'`      local _nv=`echo $NEW_VER | sed -e 's/\.//'`
       local _signify=`which signify 2>/dev/null`
       local _keyfile=/etc/signify/openbsd-${_nv}-base.pub
       local _b _s
   
     (      (
         for _b in $INSTALL_KERNELS; do echo "($_b)"        ; done          for _b in $INSTALL_KERNELS; do echo "($_b)"        ; done
         for _s in $INSTALLED_SETS;  do echo "($_s$_nv.tgz)"; done          for _s in $INSTALLED_SETS;  do echo "($_s$_nv.tgz)"; done
     ) > index      ) > index
     grep -f index $_type | sum -c  
   
       if [ -n "$_signify" -a "$_type" != "${_type%.sig}" ]; then
           echo "===> Checking signature";
           if [ ! -e $_keyfile ]; then
               echo "key [$_keyfile] does not exist, cannot check $_type" >&2
               return 2
           fi
           signify -V -e -p $_keyfile -x $_type -m - | grep -f index | sha256 -c -
       else
          grep -f index $_type | sum -c
       fi
   
     if [ $? -ne 0 ]; then      if [ $? -ne 0 ]; then
         echo ERROR: $_type does not match! >&2          echo ERROR: $_type does not match! >&2
         return 1          return 1
Line 322 
Line 343 
     local _type      local _type
     for _type in $CHECKSUM_TYPES; do      for _type in $CHECKSUM_TYPES; do
         if [ -e $_type ]; then          if [ -e $_type ]; then
             check_sum $_type              check_sum $_type && break
             [ $? -ne 0 -a -z "$IGNORE_CHECKSUM_ERROR" ] && exit 1              [ -z "$IGNORE_CHECKSUM_ERROR" ] && exit 1
         fi          fi
     done      done
   
       return 0
 }  }
   
   
 install_kernels() {  install_kernels() {
     echo '==> INSTALLING KERNEL'      echo '==> INSTALLING KERNEL'
     if [ X"$USER" != X"root" -a X"$SUDO" == X"" ]; then  
         echo ${0##*/} must be run as root or SUDO must be set! >&2  
         exit 1  
     fi  
   
     if [ X"" == X"$RELEASEDIR" ]; then      if [ X"" == X"$RELEASEDIR" ]; then
         echo ERROR: no source for new kernels! >&2          echo ERROR: no source for new kernels! >&2
Line 343 
Line 362 
   
     if [ X"$BOOT_KERNEL_VERSION" != X"$NEW_KERNEL_VERSION" ]; then      if [ X"$BOOT_KERNEL_VERSION" != X"$NEW_KERNEL_VERSION" ]; then
         echo "===> Backing up $BOOT_KERNEL to /obsd"          echo "===> Backing up $BOOT_KERNEL to /obsd"
         $SUDO ln -f $BOOT_KERNEL /obsd          ln -f $BOOT_KERNEL /obsd
         if [ $? -ne 0 ]; then          if [ $? -ne 0 ]; then
             echo "Error copying old kernel!" >&2              echo "Error copying old kernel!" >&2
             exit 1              exit 1
Line 353 
Line 372 
     cd $RELEASEDIR      cd $RELEASEDIR
   
     for _b in $INSTALL_KERNELS; do      for _b in $INSTALL_KERNELS; do
         $SUDO rm -f /nbsd          rm -f /nbsd
         local _bd=$_b          local _bd=$_b
         [ X"${_b}" == X"bsd" ] && _bd="bsd.sp"          [ X"${_b}" == X"bsd" ] && _bd="bsd.sp"
   
Line 361 
Line 380 
         [ X"$BOOT_KERNEL" == X"/${_bd}" ] && _is_boot="# boot kernel"          [ X"$BOOT_KERNEL" == X"/${_bd}" ] && _is_boot="# boot kernel"
   
         echo "===> Copying $_b to /$_bd $_is_boot"          echo "===> Copying $_b to /$_bd $_is_boot"
         $SUDO cp ${_b} /nbsd && $SUDO mv /nbsd /${_bd}          cp ${_b} /nbsd && mv /nbsd /${_bd}
         if [ $? -ne 0 ]; then          if [ $? -ne 0 ]; then
             echo ERROR: Could not copy new $_bd kernel! >&2              echo ERROR: Could not copy new $_bd kernel! >&2
             exit 1              exit 1
Line 376 
Line 395 
             [ X"$_b" == X"bsd" ] && _b="bsd.sp"              [ X"$_b" == X"bsd" ] && _b="bsd.sp"
             if [ -e $_b ]; then              if [ -e $_b ]; then
                 echo "===> symlinking $_b to /bsd"                  echo "===> symlinking $_b to /bsd"
                 $SUDO ln -sf $_b bsd                  ln -sf $_b bsd
                 if [ $? -ne 0 ]; then                  if [ $? -ne 0 ]; then
                     echo ERROR: Could not symlink new kernel! >&2                      echo ERROR: Could not symlink new kernel! >&2
                     exit 1                      exit 1
Line 390 
Line 409 
   
 install_sets() {  install_sets() {
     echo '==> INSTALLING SETS'      echo '==> INSTALLING SETS'
     if [ X"$USER" != X"root" -a X"$SUDO" == X"" ]; then  
         echo ${0##*/} must be run as root or SUDO must be set! >&2  
         exit 1  
     fi  
   
     if [ X"" == X"$RELEASEDIR" ]; then      if [ X"" == X"$RELEASEDIR" ]; then
         echo ERROR: no source for sets! >&2          echo ERROR: no source for sets! >&2
Line 414 
Line 429 
         fi          fi
   
         echo "===> Extracting $_f to $_path"          echo "===> Extracting $_f to $_path"
         $SUDO mkdir -p $_path          mkdir -p $_path
         $SUDO tar -C $_path -xzphf ${RELEASEDIR}/${_f}          tar -C $_path -xzphf ${RELEASEDIR}/${_f}
         if [ $? -ne 0 ]; then          if [ $? -ne 0 ]; then
             echo ERROR: Could not extract ${_f}! >&2              echo ERROR: Could not extract ${_f}! >&2
             exit 1              exit 1
Line 432 
Line 447 
     fi      fi
     if [ -e ${RELEASEDIR}/sendmail-smtp_auth ]; then      if [ -e ${RELEASEDIR}/sendmail-smtp_auth ]; then
         if ! pkg_info -qe 'cyrus-sasl-*'; then          if ! pkg_info -qe 'cyrus-sasl-*'; then
             $SUDO pkg_add -i cyrus-sasl              pkg_add -i cyrus-sasl
         fi          fi
   
         $SUDO install -o root -g smmsp -m 2555 \          install -o root -g smmsp -m 2555 \
             ${RELEASEDIR}/sendmail-smtp_auth \              ${RELEASEDIR}/sendmail-smtp_auth \
             /usr/libexec/sendmail/sendmail              /usr/libexec/sendmail/sendmail
   
Line 450 
Line 465 
         exit 1;          exit 1;
     fi      fi
   
     if [ X"" == X"$RELEASEDIR" ]; then  
         echo "ERROR: no source for etc!" >&2  
         exit 1  
     fi  
   
     cd $RELEASEDIR  
   
     local _v=$FILE_VER      local _v=$FILE_VER
     local _args=""      local _args=""
     if [ -e etc${_v}.tgz ]; then  
         _args="$_args -s etc${_v}.tgz"      if [ ! -e /usr/share/sysmerge/etc.tgz ]; then
           if [ X"" == X"$RELEASEDIR" ]; then
               echo "ERROR: no source for etc!" >&2
               exit 1
           fi
   
           cd $RELEASEDIR
   
           if [ -e etc${_v}.tgz ]; then
               _args="$_args -s ${RELEASEDIR}/etc${_v}.tgz"
           fi
           if [ -e xetc${_v}.tgz ]; then
               _args="$_args -x ${RELEASEDIR}/xetc${_v}.tgz"
           fi
           if [ X"" == X"$_args" ]; then
               echo ERROR: No upgrade sets found! >&2
               exit 1
           fi
     fi      fi
     if [ -e xetc${_v}.tgz ]; then  
         _args="$_args -x xetc${_v}.tgz"  
     fi  
     if [ X"" == X"$_args" ]; then  
         echo ERROR: No upgrade sets found! >&2  
     else  
         echo '==> RUNNING SYSMERGE'  
         $SUDO $SYSMERGE $_args  
     fi  
   
       echo '==> RUNNING SYSMERGE'
       $SYSMERGE $_args
   
     cd $OLDPWD      cd $OLDPWD
 }  }
   
   
   if [ $(id -u) != 0 ]; then
       echo 'ERROR: need root privileges to run this script' >&2
       exit 1
   fi
   
 if [ -e /etc/update_openbsd.conf ]; then  if [ -e /etc/update_openbsd.conf ]; then
     . /etc/update_openbsd.conf      . /etc/update_openbsd.conf
 fi  fi
Line 494 
Line 518 
   
 INSTALLED_SETS=${INSTALLED_SETS:=`installed_sets`}  INSTALLED_SETS=${INSTALLED_SETS:=`installed_sets`}
   
 CHECKSUM_TYPES=${CHECKSUM_TYPES:=SHA256 MD5}  CHECKSUM_TYPES=${CHECKSUM_TYPES:=SHA256.sig SHA256}
   
 set_version  set_version
 local _error=$?  local _error=$?
Line 503 
Line 527 
 echo "-= update_openbsd - helper script to update OpenBSD =-"  echo "-= update_openbsd - helper script to update OpenBSD =-"
 echo "------------------------------------------------------"  echo "------------------------------------------------------"
 echo  echo
 echo "           SUDO: $SUDO"  
 echo "       SYSMERGE: $SYSMERGE"  echo "       SYSMERGE: $SYSMERGE"
 echo "         MIRROR: $MIRROR"  echo "         MIRROR: $MIRROR"
 echo "     RELEASEDIR: $RELEASEDIR"  echo "     RELEASEDIR: $RELEASEDIR"
Line 517 
Line 540 
 #echo "       FILE_VER: $FILE_VER"  #echo "       FILE_VER: $FILE_VER"
 echo  echo
   
   for k in $INSTALL_KERNELS; do
       if [ -e "/$k" ]; then
           echo "Existing $k"
           kernel_file_version "/$k"
       fi
   done
   
 if [ ${_error} -ne 0 ]; then  if [ ${_error} -ne 0 ]; then
         exit ${_error}          exit ${_error}
 fi  fi
Line 542 
Line 572 
     NEW_KERNEL_VERSION=$BOOT_KERNEL_VERSION      NEW_KERNEL_VERSION=$BOOT_KERNEL_VERSION
 fi  fi
   
 if [ -n "$SUDO" -a $CUR_VER != $NEW_VER ]; then  if [ X"$NEW_KERNEL_VERSION" != X"$BOOTED_KERNEL_VERSION" ]; then
     echo >&2      echo >&2
     echo "!!! You are upgrading between OpenBSD versions.     !!!" >&2      echo "!!!  You are upgrading the OpenBSD kernel.        !!!" >&2
     echo "!!! You should make sure you have a root shell open !!!" >&2      echo "!!!  You will be given the opportunity to reboot  !!!" >&2
     echo "!!! It is needed in order to run /sbin/oreboot.     !!!" >&2      echo "!!!  at the end of the proces but it is safer to  !!!" >&2
     echo "!!! sudo MAY NOT WORK after sets are extracted.     !!!" >&2      echo "!!!  have a separate root shell open.             !!!" >&2
       echo "!!!  It is needed in order to run /sbin/oreboot.  !!!" >&2
       echo "!!!  sudo MAY NOT WORK after sets are extracted.  !!!" >&2
     echo >&2      echo >&2
     echo "ctrl+C to cancel, enter to continue" >&2      echo "enter to continue, ctrl+C to cancel" >&2
     local _temp      local _temp
     read _temp      read _temp
 fi  
   
 if [ -n "$SUDO" ]; then      if [ ! -e /sbin/oreboot ]; then
     echo          cp /sbin/reboot /sbin/oreboot
     echo You may be asked for your sudo password multiple times.          if [ $? -ne 0 ]; then
     $SUDO -v -p "sudo Password: "              echo "Error copying old reboot command!" >&2
 fi              exit 1
           fi
 if [ X"$NEW_KERNEL_VERSION" != X"$BOOTED_KERNEL_VERSION" \          echo "/sbin/reboot copied to /sbin/oreboot"
      -a ! -e /sbin/oreboot ]; then  
     $SUDO cp /sbin/reboot /sbin/oreboot  
     if [ $? -ne 0 ]; then  
         echo "Error copying old reboot command!" >&2  
         exit 1  
     fi      fi
     echo "/sbin/reboot copied to /sbin/oreboot"  
 fi  fi
   
 install_kernels  install_kernels
Line 578 
Line 603 
   
     if [ -e /sbin/oreboot ]; then      if [ -e /sbin/oreboot ]; then
         echo Removing /sbin/oreboot          echo Removing /sbin/oreboot
         $SUDO rm -f /sbin/oreboot          rm -f /sbin/oreboot
     fi      fi
     update_etc      update_etc
   
     echo '==> UPDATING PACKAGES'      echo '==> UPDATING PACKAGES'
     $SUDO pkg_add -ui -F update -F updatedepends      pkg_add -ui -F update -F updatedepends
   
 else  else
     echo Instructions for updating to the new version available from      echo Instructions for updating to the new version available from
Line 594 
Line 619 
     fi      fi
 fi  fi
   
 echo New kernel installed.  Please reboot!  echo Update complete. enter to reboot, ctrl+C to cancel
   read _temp
 if [ -e /sbin/oreboot ]; then  if [ -e /sbin/oreboot ]; then
     echo Possibly using /sbin/oreboot      echo using /sbin/oreboot
       /sbin/oreboot
   else
       /sbin/reboot
 fi  fi

Legend:
Removed from v.1.58  
changed lines
  Added in v.1.70

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>