Re: Patch suggestion for sysupgrade

2019-11-15 Thread Raimo Niskanen
On Fri, Nov 15, 2019 at 07:00:05AM +0100, NilsOla Nilsson wrote:
> I have upgraded a machine where /home was NFS-mounted,
> like this:
> - check that the / partition has space for the files
>   that will populate /home/_sysupgrade
> - unmount /home
> - comment ut the /home line in /etc/fstab
> - upgrade with sysupgrade
> - restore the line in /etc/fstab
> - mount -a

That is another way to do it.

Though, for the last sysupgrade on amd64 6.5 -> 6.6 the _sysupgrade
directory used 443M, and to depend on that it is fine to put that on the /
partition feels a bit risky...  It _should_ work since the / partition
is typically 1G and has 833M available, but it feels discomforting.

/ Raimo


> 
> All this could be done remote.
> 
> Note that I can log in to a user where the home
> directory is not NFS-mounted, in our case
> /local_home/
> 
> On Thu, Nov 14, 2019 at 03:01:18PM +0100, Raimo Niskanen wrote:
> > The use case for this patch is that in our lab network we have NFS
> > automounted /home/* directories, so using /home/_sysupgrade
> > for sysupgrade does not work.
> > 
> > With this patch it is easy to modify /usr/sbin/sysupgrade and change
> > just the line SETSDIR=/home/_sysupgrade to point to some other local file
> > system that is outside hier(7) for example /opt/_sysupgrade
> > or /srv/_sysupgrade.
> > 
> > Even using /var/_sysupgrade or /usr/_sysupgrade should work.  As far as
> > I can tell the sysupgrade directory only has to be on a local file system,
> > and not get overwritten by the base system install.
> > 
> > The change for mkdir -p ${SETSDIR} is to make the script more defensive 
> > about
> > the result of mkdir, e.g in case the umask is wrong, or if the directory
> > containing the sysupgrade directory has got the wrong group, etc.
> > 
> > 
> > A follow-up to this patch, should it be accepted, could be to add an option
> > -d SysupgradeDir, but I do not know if that would be considered as a too odd
> > and error prone feature to merit an option.  Or?
> > 
> > The patch is on 6.6 stable.
> > 
> > Index: usr.sbin/sysupgrade/sysupgrade.sh
> > ===
> > RCS file: /cvs/src/usr.sbin/sysupgrade/sysupgrade.sh,v
> > retrieving revision 1.25
> > diff -u -u -r1.25 sysupgrade.sh
> > --- usr.sbin/sysupgrade/sysupgrade.sh   28 Sep 2019 17:30:07 -  
> > 1.25
> > +++ usr.sbin/sysupgrade/sysupgrade.sh   14 Nov 2019 13:27:34 -
> > @@ -119,6 +119,7 @@
> > URL=${MIRROR}/${NEXT_VERSION}/${ARCH}/
> >  fi
> >  
> > +[[ -e ${SETSDIR} ]] || mkdir -p ${SETSDIR}
> >  if [[ -e ${SETSDIR} ]]; then
> > eval $(stat -s ${SETSDIR})
> > [[ $st_uid -eq 0 ]] ||
> > @@ -127,8 +128,6 @@
> >  ug_err "${SETSDIR} needs to be owned by root:wheel"
> > [[ $st_mode -eq 040755 ]] || 
> > ug_err "${SETSDIR} is not a directory with permissions 0755"
> > -else
> > -   mkdir -p ${SETSDIR}
> >  fi
> >  
> >  cd ${SETSDIR}
> > @@ -185,7 +184,7 @@
> >  
> >  cat <<__EOT >/auto_upgrade.conf
> >  Location of sets = disk
> > -Pathname to the sets = /home/_sysupgrade/
> > +Pathname to the sets = ${SETSDIR}/
> >  Set name(s) = done
> >  Directory does not contain SHA256.sig. Continue without verification = yes
> >  __EOT
> > @@ -193,7 +192,7 @@
> >  if ! ${KEEP}; then
> > CLEAN=$(echo SHA256 ${SETS} | sed -e 's/ /,/g')
> > cat <<__EOT > /etc/rc.firsttime
> > -rm -f /home/_sysupgrade/{${CLEAN}}
> > +rm -f ${SETSDIR}/{${CLEAN}}
> >  __EOT
> >  fi
> > 
> > Best regards
> > --  
> > / Raimo Niskanen, Erlang/OTP, Ericsson AB
> 
> -- 
> Nils Ola Nilsson, email nils...@abc.se, tel +46-70-374 69 89



-- 

/ Raimo Niskanen, Erlang/OTP, Ericsson AB



Re: Patch suggestion for sysupgrade

2019-11-15 Thread Raimo Niskanen
On Thu, Nov 14, 2019 at 04:59:23PM +, gil...@poolp.org wrote:
> A similar patch for this was sent to tech@ by Renaud Allard, you might want to
> go review the "sysupgrade: Allow to use another directory for data sets" 
> thread
> and comment it.

Thanks for the pointer!  I see in that thread that this is hard
to find a safe solution to this problem...

/ Raimo


> 
> 
> November 14, 2019 3:01 PM, "Raimo Niskanen"  
> wrote:
> 
> > The use case for this patch is that in our lab network we have NFS
> > automounted /home/* directories, so using /home/_sysupgrade
> > for sysupgrade does not work.
> > 
> > With this patch it is easy to modify /usr/sbin/sysupgrade and change
> > just the line SETSDIR=/home/_sysupgrade to point to some other local file
> > system that is outside hier(7) for example /opt/_sysupgrade
> > or /srv/_sysupgrade.
> > 
> > Even using /var/_sysupgrade or /usr/_sysupgrade should work. As far as
> > I can tell the sysupgrade directory only has to be on a local file system,
> > and not get overwritten by the base system install.
> > 
> > The change for mkdir -p ${SETSDIR} is to make the script more defensive 
> > about
> > the result of mkdir, e.g in case the umask is wrong, or if the directory
> > containing the sysupgrade directory has got the wrong group, etc.
> > 
> > A follow-up to this patch, should it be accepted, could be to add an option
> > -d SysupgradeDir, but I do not know if that would be considered as a too odd
> > and error prone feature to merit an option. Or?
> > 
> > The patch is on 6.6 stable.
> > 
> > Index: usr.sbin/sysupgrade/sysupgrade.sh
> > ===
> > RCS file: /cvs/src/usr.sbin/sysupgrade/sysupgrade.sh,v
> > retrieving revision 1.25
> > diff -u -u -r1.25 sysupgrade.sh
> > --- usr.sbin/sysupgrade/sysupgrade.sh 28 Sep 2019 17:30:07 - 1.25
> > +++ usr.sbin/sysupgrade/sysupgrade.sh 14 Nov 2019 13:27:34 -
> > @@ -119,6 +119,7 @@
> > URL=${MIRROR}/${NEXT_VERSION}/${ARCH}/
> > fi
> > 
> > +[[ -e ${SETSDIR} ]] || mkdir -p ${SETSDIR}
> > if [[ -e ${SETSDIR} ]]; then
> > eval $(stat -s ${SETSDIR})
> > [[ $st_uid -eq 0 ]] ||
> > @@ -127,8 +128,6 @@
> > ug_err "${SETSDIR} needs to be owned by root:wheel"
> > [[ $st_mode -eq 040755 ]] || 
> > ug_err "${SETSDIR} is not a directory with permissions 0755"
> > -else
> > - mkdir -p ${SETSDIR}
> > fi
> > 
> > cd ${SETSDIR}
> > @@ -185,7 +184,7 @@
> > 
> > cat <<__EOT >/auto_upgrade.conf
> > Location of sets = disk
> > -Pathname to the sets = /home/_sysupgrade/
> > +Pathname to the sets = ${SETSDIR}/
> > Set name(s) = done
> > Directory does not contain SHA256.sig. Continue without verification = yes
> > __EOT
> > @@ -193,7 +192,7 @@
> > if ! ${KEEP}; then
> > CLEAN=$(echo SHA256 ${SETS} | sed -e 's/ /,/g')
> > cat <<__EOT > /etc/rc.firsttime
> > -rm -f /home/_sysupgrade/{${CLEAN}}
> > +rm -f ${SETSDIR}/{${CLEAN}}
> > __EOT
> > fi
> > 
> > Best regards
> > -- 
> > / Raimo Niskanen, Erlang/OTP, Ericsson AB

-- 

/ Raimo Niskanen, Erlang/OTP, Ericsson AB



Re: Patch suggestion for sysupgrade

2019-11-14 Thread NilsOla Nilsson
I have upgraded a machine where /home was NFS-mounted,
like this:
- check that the / partition has space for the files
  that will populate /home/_sysupgrade
- unmount /home
- comment ut the /home line in /etc/fstab
- upgrade with sysupgrade
- restore the line in /etc/fstab
- mount -a

All this could be done remote.

Note that I can log in to a user where the home
directory is not NFS-mounted, in our case
/local_home/

On Thu, Nov 14, 2019 at 03:01:18PM +0100, Raimo Niskanen wrote:
> The use case for this patch is that in our lab network we have NFS
> automounted /home/* directories, so using /home/_sysupgrade
> for sysupgrade does not work.
> 
> With this patch it is easy to modify /usr/sbin/sysupgrade and change
> just the line SETSDIR=/home/_sysupgrade to point to some other local file
> system that is outside hier(7) for example /opt/_sysupgrade
> or /srv/_sysupgrade.
> 
> Even using /var/_sysupgrade or /usr/_sysupgrade should work.  As far as
> I can tell the sysupgrade directory only has to be on a local file system,
> and not get overwritten by the base system install.
> 
> The change for mkdir -p ${SETSDIR} is to make the script more defensive about
> the result of mkdir, e.g in case the umask is wrong, or if the directory
> containing the sysupgrade directory has got the wrong group, etc.
> 
> 
> A follow-up to this patch, should it be accepted, could be to add an option
> -d SysupgradeDir, but I do not know if that would be considered as a too odd
> and error prone feature to merit an option.  Or?
> 
> The patch is on 6.6 stable.
> 
> Index: usr.sbin/sysupgrade/sysupgrade.sh
> ===
> RCS file: /cvs/src/usr.sbin/sysupgrade/sysupgrade.sh,v
> retrieving revision 1.25
> diff -u -u -r1.25 sysupgrade.sh
> --- usr.sbin/sysupgrade/sysupgrade.sh 28 Sep 2019 17:30:07 -  1.25
> +++ usr.sbin/sysupgrade/sysupgrade.sh 14 Nov 2019 13:27:34 -
> @@ -119,6 +119,7 @@
>   URL=${MIRROR}/${NEXT_VERSION}/${ARCH}/
>  fi
>  
> +[[ -e ${SETSDIR} ]] || mkdir -p ${SETSDIR}
>  if [[ -e ${SETSDIR} ]]; then
>   eval $(stat -s ${SETSDIR})
>   [[ $st_uid -eq 0 ]] ||
> @@ -127,8 +128,6 @@
>ug_err "${SETSDIR} needs to be owned by root:wheel"
>   [[ $st_mode -eq 040755 ]] || 
>   ug_err "${SETSDIR} is not a directory with permissions 0755"
> -else
> - mkdir -p ${SETSDIR}
>  fi
>  
>  cd ${SETSDIR}
> @@ -185,7 +184,7 @@
>  
>  cat <<__EOT >/auto_upgrade.conf
>  Location of sets = disk
> -Pathname to the sets = /home/_sysupgrade/
> +Pathname to the sets = ${SETSDIR}/
>  Set name(s) = done
>  Directory does not contain SHA256.sig. Continue without verification = yes
>  __EOT
> @@ -193,7 +192,7 @@
>  if ! ${KEEP}; then
>   CLEAN=$(echo SHA256 ${SETS} | sed -e 's/ /,/g')
>   cat <<__EOT > /etc/rc.firsttime
> -rm -f /home/_sysupgrade/{${CLEAN}}
> +rm -f ${SETSDIR}/{${CLEAN}}
>  __EOT
>  fi
> 
> Best regards
> --  
> / Raimo Niskanen, Erlang/OTP, Ericsson AB

-- 
Nils Ola Nilsson, email nils...@abc.se, tel +46-70-374 69 89


signature.asc
Description: PGP signature


Re: Patch suggestion for sysupgrade

2019-11-14 Thread gilles
A similar patch for this was sent to tech@ by Renaud Allard, you might want to
go review the "sysupgrade: Allow to use another directory for data sets" thread
and comment it.


November 14, 2019 3:01 PM, "Raimo Niskanen"  
wrote:

> The use case for this patch is that in our lab network we have NFS
> automounted /home/* directories, so using /home/_sysupgrade
> for sysupgrade does not work.
> 
> With this patch it is easy to modify /usr/sbin/sysupgrade and change
> just the line SETSDIR=/home/_sysupgrade to point to some other local file
> system that is outside hier(7) for example /opt/_sysupgrade
> or /srv/_sysupgrade.
> 
> Even using /var/_sysupgrade or /usr/_sysupgrade should work. As far as
> I can tell the sysupgrade directory only has to be on a local file system,
> and not get overwritten by the base system install.
> 
> The change for mkdir -p ${SETSDIR} is to make the script more defensive about
> the result of mkdir, e.g in case the umask is wrong, or if the directory
> containing the sysupgrade directory has got the wrong group, etc.
> 
> A follow-up to this patch, should it be accepted, could be to add an option
> -d SysupgradeDir, but I do not know if that would be considered as a too odd
> and error prone feature to merit an option. Or?
> 
> The patch is on 6.6 stable.
> 
> Index: usr.sbin/sysupgrade/sysupgrade.sh
> ===
> RCS file: /cvs/src/usr.sbin/sysupgrade/sysupgrade.sh,v
> retrieving revision 1.25
> diff -u -u -r1.25 sysupgrade.sh
> --- usr.sbin/sysupgrade/sysupgrade.sh 28 Sep 2019 17:30:07 - 1.25
> +++ usr.sbin/sysupgrade/sysupgrade.sh 14 Nov 2019 13:27:34 -
> @@ -119,6 +119,7 @@
> URL=${MIRROR}/${NEXT_VERSION}/${ARCH}/
> fi
> 
> +[[ -e ${SETSDIR} ]] || mkdir -p ${SETSDIR}
> if [[ -e ${SETSDIR} ]]; then
> eval $(stat -s ${SETSDIR})
> [[ $st_uid -eq 0 ]] ||
> @@ -127,8 +128,6 @@
> ug_err "${SETSDIR} needs to be owned by root:wheel"
> [[ $st_mode -eq 040755 ]] || 
> ug_err "${SETSDIR} is not a directory with permissions 0755"
> -else
> - mkdir -p ${SETSDIR}
> fi
> 
> cd ${SETSDIR}
> @@ -185,7 +184,7 @@
> 
> cat <<__EOT >/auto_upgrade.conf
> Location of sets = disk
> -Pathname to the sets = /home/_sysupgrade/
> +Pathname to the sets = ${SETSDIR}/
> Set name(s) = done
> Directory does not contain SHA256.sig. Continue without verification = yes
> __EOT
> @@ -193,7 +192,7 @@
> if ! ${KEEP}; then
> CLEAN=$(echo SHA256 ${SETS} | sed -e 's/ /,/g')
> cat <<__EOT > /etc/rc.firsttime
> -rm -f /home/_sysupgrade/{${CLEAN}}
> +rm -f ${SETSDIR}/{${CLEAN}}
> __EOT
> fi
> 
> Best regards
> -- 
> / Raimo Niskanen, Erlang/OTP, Ericsson AB