.\"	$NetBSD: postinstall.8,v 1.21 2022/01/08 23:57:32 lukem Exp $
.\"
.\" Copyright (c) 2005-2022 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by Thomas Klausner.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd January 9, 2022
.Dt POSTINSTALL 8
.Os
.Sh NAME
.Nm postinstall
.Nd check and fix installation after system upgrades
.Sh SYNOPSIS
.Nm postinstall
.Op Fl a Ar arch
.Op Fl d Ar destdir
.Op Fl m Ar machine
.Op Fl s Pq Ar srcdir | Ar tgzdir | Ar tgzfile
.Op Fl x Ar xsrcdir
.Ar operation
.Ar \&...
.Nm postinstall
.Fl \&?
.Sh DESCRIPTION
The
.Nm
utility performs post-installation checks and/or fixes on a system's
configuration files.
It is especially useful after system upgrades, e.g. after updating
from
.Nx 1.6.2
to
.Nx 2.0 .
The items to check or fix are divided in two groups: enabled by
default and disabled by default.
The latter are items that are dangerous for some reason, for example
because they remove files which may be still in use.
If no
.Ar items
are provided, the default checks or fixes are applied.
Those which are disabled by default must be provided explicitly.
.Pp
Supported options:
.Bl -tag -width XsXsrcdirXXX -offset indent
.It Fl a Ar arch
MACHINE_ARCH.
Defaults to machine of the host operating system.
.It Fl d Ar destdir
Destination directory to check.
Defaults to
.Pa / .
.It Fl m Ar machine
MACHINE.
Defaults to machine of the host operating system.
.It Fl s Pq Ar srcdir | Ar tgzdir | Ar tgzfile
The location of the reference files, or the
.Nx
source files used to create the reference files.
This may be specified in one of three ways:
.Bl -tag -width XXsXtgzfileXX
.It Fl s Ar srcdir
The top level directory of the
.Nx
source tree.
By default this is
.Pa /usr/src .
.It Fl s Ar tgzdir
A directory in which reference files have been
extracted from a binary distribution of
.Nx .
The files that are distributed in the
.Dq Pa etc.tgz
or
.Dq Pa etc.tar.xz
set file must be present.
The files that are distributed in the
.Dq Pa xetc.tgz
or
.Dq Pa xetc.tar.xz
set file are optional.
.It Fl s Ar tgzfile
The location of a set file
(or
.Dq "tgz file"
or
.Dq "tar.xz file" )
such as
.Dq Pa etc.tgz
or
.Dq Pa xetc.tgz
from a binary distribution of
.Nx .
Each set file is a compressed archive containing reference files,
which will be extracted to the
.Pa temproot
directory.
Multiple
.Fl s
options may be used to specify multiple set files.
The
.Dq Pa etc.tgz
set file must be specified.
The
.Dq Pa xetc.tgz
set file is optional.
.El
.It Fl x Ar xsrcdir
Location of the X11 source files.
This must be a directory that contains a
.Nx
xsrc tree.
.It Fl \&?
Display help to stdout, and exit.
.El
.Pp
The
.Ar operation
argument may be one of:
.Bl -tag -width usageXX -offset indent
.It Cm check Ar item Ar \&...
Perform post-installation checks on items.
.It Cm diff Oo Fl Ar bcenpuw Oc Ar item Ar \&...
Similar to
.Cm check ,
but also show the differences between the files.
.It Cm fix Ar item Ar \&...
Apply fixes that
.Cm check
determines need to be applied.
Not all items can be automatically fixed by
.Nm ,
and in some cases an error will be reported,
after which manual intervention will be required.
.Pp
Conflicts between existing files in the target file system
and new files from the
.Nx
distribution are resolved by replacing the existing file
with the new file; there is no attempt to merge the files.
See
.Xr etcupdate 8
for an alternative update method that is able to merge files.
.It Cm help
Display help to stdout, and exit.
.It Cm list
List available
.Ar items ,
showing if they are enabled or disabled by default.
.It Cm usage
Display help to stdout, and exit.
.El
.Sh EXIT STATUS
The
.Nm
utility exits 0 on success, and >0 if an error occurs
or a problem was found.
.Sh SEE ALSO
.Xr etcupdate 8
.Sh HISTORY
The
.Nm
utility first appeared in
.Nx 1.6 .
.Pp
In
.Nx 4.0 ,
the
.Fl s Ar tgzfile
option was added.
.Pp
In
.Nx 5.0 ,
the ability to specify multiple colon-separated files with a single
.Fl s
option was deprecated.
.Pp
In
.Nx 7.0 ,
the ability to specify multiple colon-separated files with a single
.Fl s
option was removed.
Multiple
.Fl s
options must be used instead.