make delete-old

Polytropon freebsd at edvax.de
Tue Mar 3 15:30:56 UTC 2020


On Tue, 3 Mar 2020 18:16:37 +0300, Yuri Pankov wrote:
> On 03.03.2020 18:07, Polytropon wrote:
> > On Tue, 3 Mar 2020 17:13:50 +0300, Yuri Pankov wrote:
> >> On 03.03.2020 16:07, Robert Huff wrote:
> >>> tech-lists writes:
> >>>
> >>>>    Is a reboot required after make delete-old ?
> >>>
> >>> 	I don't think so.
> >>> 	But you might want to re-run ldconfig.
> >>
> >> I don't think delete-old deletes shared libraries (and that's the answer
> >> for original question, you don't need to reboot), there's
> >> delete-old-libs for that, more so, running ldconfig (the binary) can be
> >> harmful, if needed there's a ldconfig service; not sure which one you meant.
> > 
> > According to /usr/src/Makefile's comment header, the
> > step "make delete-old" is followed by a reboot (in
> > combination with the 2nd mergemaster run, after
> > "make installworld"), while "make delete-old-libs"
> > is performed after the reboot, without a further one.
> > 
> > In /usr/src/Makefile, you can find the following order:
> > 
> > # For individuals wanting to upgrade their sources (even if only a
> > # delta of a few days):
> > #
> > #  1.  `cd /usr/src'       (or to the directory containing your source tree).
> > #  2.  `make buildworld'
> > #  3.  `make buildkernel KERNCONF=YOUR_KERNEL_HERE'     (default is GENERIC).
> > #  4.  `make installkernel KERNCONF=YOUR_KERNEL_HERE'   (default is GENERIC).
> > #       [steps 3. & 4. can be combined by using the "kernel" target]
> > #  5.  `reboot'        (in single user mode: boot -s from the loader prompt).
> > #  6.  `mergemaster -p'
> > #  7.  `make installworld'
> > #  8.  `mergemaster'            (you may wish to use -i, along with -U or -F).
> > #  9.  `make delete-old'
> > # 10.  `reboot'
> > # 11.  `make delete-old-libs' (in case no 3rd party program uses them anymore)
> > 
> > Additional information from "man 7 build":
> > 
> >       delete-old	      Delete obsolete base system files	and directories	inter-
> > 		      actively.	 When -DBATCH_DELETE_OLD_FILES is specified at
> > 		      the command line,	the delete operation will be non-in-
> > 		      teractive.  The variables	DESTDIR, TARGET_ARCH and
> > 		      TARGET should be set as with "make installworld".
> > 
> >       delete-old-libs  Delete obsolete base system libraries interactively.
> > 		      This target should only be used if no third party	soft-
> > 		      ware uses	these libraries.  When
> > 		      -DBATCH_DELETE_OLD_FILES is specified at the command
> > 		      line, the	delete operation will be non-interactive.  The
> > 		      variables	DESTDIR, TARGET_ARCH and TARGET	should be set
> > 		      as with "make installworld".
> > 
> > To conclude this into an answer that matches existing
> > documentation:
> > 
> > Yes, "make delete-old" requires a reboot. :-)
> 
> It's the 'installworld' (7) and 'mergemaster' (8) steps that require a 
> reboot, and 'delete-old' (9) being immediately followed by 'reboot' (10) 
> step does NOT mean 'delete-old' requires 'reboot'. 

The documentation suggests that the "make delete-old" step
happens in single-user mode (which you entered in step 5).
So in this "limited mode", deleting libraries is safer than
doing this in a state where 3rd party programs might use
them (as it would typically happen in multi-user mode).
This whole setting is to make the process safer. So when
you do the "make delete-old" step in the setting it is
suggested for, i. e., in single-user mode, you'll have
to exit that mode, and the step the documentation uses
here is "reboot" (to make sure everything previously
installed by "make installworld") is in place during
a system startup; just using "exit" to continue into
multi-user mode doesn't sound convincing...



> You can actually 
> skip the step 9, as steps 7 and 8 are what already made the files 
> obsolete, and the only problem (that I can think of) from skipping is 
> obsolete header files picked up when compiling, and removing those 
> doesn't require a reboot.

The documentation doesn't mention header files (even though
they usually belong to libraries) - it talks about "obsolete
base system libraries". As I said, the documentation seems
to explain what's the _safest_ way of doing things. Of
course nothing stops you from skipping steps, or doing
them in a different order.



-- 
Polytropon
Magdeburg, Germany
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...


More information about the freebsd-questions mailing list