On Tue, Oct 28, 2025 at
            1:35=E2=80=AFPM Dag-Erling Sm=C3=B8rgrav <
des@freebsd.org>
            wrote:
          
 
          Thomas Schweikle <tschweikle@gmail.com>=
;
            writes:
            > Dag-Erling Sm=C3=B8rgrav <des@freebsd.org>
            writes:
            > > Thomas Schweikle <tschweikle@gmail.com>
            writes:
            > > > Dag-Erling Sm=C3=B8rgrav <des@freebsd.org>
            writes:
            > > > > How was this system installed?
            > > > By compiling 15-STABLE from latest available
            14.3 getting sources via=C2=A0 =C2=A0
            > > How did you install 14.3?
            > Same way. It was Upgraded from 13-STABLE. And this was
            upgraded from
            > 12-STABLE. If I remember it right, the system installed
            from
            > disquettes was 5.0-RELEASE some way back in time ...
            
            Do you understand the difference between the words =E2=80=9Cins=
tall=E2=80=9D
            and
            =E2=80=9Cupgrade=E2=80=9D?
            
            What did you use prior to etcupdate?=C2=A0 When was /etc last
            updated?
          =C2=A0
          The last time mergemaster was available. Later on it was
            done manually, since etcupdate did not work.
          
          
          My findings: etcupdate just does not work, because right
            after cloning etc is not in a working state. It is, after
            running
          
          
          make _legacy
          
          
          in "/usr/src". Then it runs
          
          
          etcupdate extract
          etcupdate=C2=A0diff
          
          
          without this "Failed to build new tree.", but it t=
hen
            fails run
          
          
          etcupdate -p
          
          
          right after building world, kernel and installkernel,
            exhausting: "No previous tree to
              compare against, a sane comparison is not possible." jus=
t
              because there is no tree to compare against, or better:
              "etcupdate extract" created an empty tree without a=
ny
              files within.It is just "make _legacy" creates all =
the
              folders, etcupdate expects, but not the files. It seems
              all those advices given within the handbook or at various
              places within the internet all give it the wrong=C2=A0way:
          
            
          clone
          ettupdate extract
          etcupdate diff
          make buildworld
          make buildkernel
          make installkernel
          etcupdate -p
          reboot
          make installworld
          etcupdate -B
          reboot
          
          
          But
          
          
          clone
          make buildworld
          make buildkernel
          etcupdate extract
          etcupdate diff
          make installkernel
          etcupdate -p
          make installworld
          etcupdate -B
          reboot
          
          
          because you will never have a working etc before building
            world and kernel. And in tune you'd never will have anythin=
g
            you could extract. You are assuming something to extract,
            but there isn't anything before building. mergemaster did
            get this right (comparing the fresh build /usr/src etc
            against /etc). etcupdate does not -- at least if it is used
            the way the handbook advises. It would only work this way,
            if you did not clone the working tree right fresh into an
            empty directory (or after "git reset hard" -- removin=
g
            anything from /usr/src what was created after the last "gi=
t
            pull" simulating "git clone" as far as possible)=
.
          
          
         
        -- 
        
      
    
    Hello Thomas,
    that=E2=80=99s splendid - it=E2=80=99s impressive that you=E2=80=99ve m=
anaged to upgrade
    FreeBSD from version 5.0! FreeBSD truly is an amazing operating
    system; being able to upgrade continuously for 25+ years without
    ever needing to reinstall is a real achievement. Well done; my
    oldest installations that are still being upgraded date back only to
    the FreeBSD 6.x era.
    
    Anyway, it=E2=80=99s time to say goodbye to mergemaster=C2=A0 - you won=
=E2=80=99t regret
    it. The FreeBSD Handbook covers this transition in detail [1]. To
    perform the upgrade correctly, you should run mergemaster(8) for the
    last time under FreeBSD 14, and before rebooting, you=E2=80=99ll also n=
eed
    to run etcupdate(8) too.
    Here=E2=80=99s the sequence that worked
      for me many times in recent weeks:
    # make buildworld
    # make buildkernel
    # mergemaster
    # etcupdate extract
    # etcupdate diff
    # etcupdate -B
    # make installkernel
    # make installworld
    # reboot
    # pkg upgrade
    # make delete-old
    # make delete-old-libs
    bootloader upgrade
    # zpool upgrade
    # reboot
    It=E2=80=99s a bit risky and not entirely in line with the Handbook =
to
      skip the first reboot, but if you=E2=80=99re upgrading from a relativ=
ely
      recent 14.3-STABLE and your root filesystem is on ZFS, you can
      create a backup Boot Environment (BE) as a safeguard in case
      something goes wrong.=C2=A0
      Even better, you can create a testing BE and perform the
      installation into that BE after mounting it by using DESTDIR. Just
      remember that both mergemaster and etcupdate must also be executed
      with respect to this DESTDIR path.
      
    
    If you=E2=80=99ve used etcupdate in the past and weren=E2=80=99t sat=
isfied with
      its behavior, and therefore continued using mergemaster, I
      recommend cleaning the cruft by running the following command
      before starting the final transition to etcupdate:
    # rm -rf /var/db/etcupdate/
    
      1.
https://docs.freebsd.org/en/books/hand=
book/cutting-edge/#updating-src-quick-start
    Cheers
      Marek
  
-- 
--000000000000b552110642b87302--