libc/citrus: Catch a NULL pointer earlier, check for empty string later.
[dragonfly.git] / usr.bin / xinstall / install.1
blobf65274c9affd0e6a78d30b69c87aaf22c370648c
1 .\" Copyright (c) 1987, 1990, 1993
2 .\"     The Regents of the University of California.  All rights reserved.
3 .\"
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
6 .\" are met:
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\"    notice, this list of conditions and the following disclaimer.
9 .\" 2. Redistributions in binary form must reproduce the above copyright
10 .\"    notice, this list of conditions and the following disclaimer in the
11 .\"    documentation and/or other materials provided with the distribution.
12 .\" 3. Neither the name of the University nor the names of its contributors
13 .\"    may be used to endorse or promote products derived from this software
14 .\"    without specific prior written permission.
15 .\"
16 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 .\" SUCH DAMAGE.
27 .\"
28 .\"     From: @(#)install.1     8.1 (Berkeley) 6/6/93
29 .\" $FreeBSD: src/usr.bin/xinstall/install.1,v 1.16.2.9 2002/07/01 21:01:23 des Exp $
30 .\"
31 .Dd January 22, 2016
32 .Dt INSTALL 1
33 .Os
34 .Sh NAME
35 .Nm install
36 .Nd install binaries
37 .Sh SYNOPSIS
38 .Nm
39 .Op Fl bCclMpSsUv
40 .Op Fl B Ar suffix
41 .Op Fl D Ar destdir
42 .Op Fl f Ar flags
43 .Op Fl g Ar group
44 .Op Fl L Ar etcdir
45 .Op Fl m Ar mode
46 .Op Fl o Ar owner
47 .Ar file1 file2
48 .Nm
49 .Op Fl bCclMpSsUv
50 .Op Fl B Ar suffix
51 .Op Fl D Ar destdir
52 .Op Fl f Ar flags
53 .Op Fl g Ar group
54 .Op Fl L Ar etcdir
55 .Op Fl m Ar mode
56 .Op Fl o Ar owner
57 .Ar file1 ... fileN directory
58 .Nm
59 .Fl d
60 .Op Fl lUv
61 .Op Fl D Ar destdir
62 .Op Fl g Ar group
63 .Op Fl L Ar etcdir
64 .Op Fl m Ar mode
65 .Op Fl o Ar owner
66 .Ar directory ...
67 .Sh DESCRIPTION
68 The file(s) are copied
69 to the target file or directory.
70 If the destination is a directory, then the
71 .Ar file
72 is copied into
73 .Ar directory
74 with its original filename.
75 If the target file already exists, it is
76 either renamed to
77 .Ar file Ns Pa .old
78 if the
79 .Fl b
80 option is given
81 or overwritten
82 if permissions allow.
83 An alternate backup suffix may be specified via the
84 .Fl B
85 option's argument.
86 .Pp
87 The options are as follows:
88 .Bl -tag -width indent
89 .It Fl b
90 Back up any existing files before overwriting them by renaming
91 them to
92 .Ar file Ns Pa .old .
93 See
94 .Fl B
95 for specifying a different backup suffix.
96 .It Fl L Ar etcdir
97 Specify the location of the /etc directory containing the group and password
98 files.  The default is "/etc".  If an alternative directory is specified
99 group and username lookups will be made from the alternative group and
100 password files rather than the system group and password files.
101 .It Fl B Ar suffix
103 .Ar suffix
104 as the backup suffix if
105 .Fl b
106 is given.
107 .It Fl C
108 Copy the file.
109 If the target file already exists and the files are the same,
110 then don't change the modification time of the target.
111 .It Fl c
112 Copy the file.
113 This is actually the default.
115 .Fl c
116 option is only included for backwards compatibility.
117 .It Fl d
118 Create directories.
119 Missing parent directories are created as required.
120 .It Fl D Ar destdir
121 Specify the
122 .Ev DESTDIR
123 (top of the file hierarchy) that the items are installed into.
124 This option is implemented for compatibility with the
126 version of
128 and does nothing.
129 .It Fl f
130 Specify the target's file flags; see
131 .Xr chflags 1
132 for a list of possible flags and their meanings.
133 .It Fl g
134 Specify a group.
135 A numeric GID is allowed.
136 .It Fl l
137 When the
138 .Fl L
139 option is specified and the owner or group cannot be found, fallback to
140 system files.
141 .It Fl M
142 Disable all use of
143 .Xr mmap 2 .
144 .It Fl m
145 Specify an alternate mode.
146 The default mode is set to rwxr-xr-x (0755).
147 The specified mode may be either an octal or symbolic value; see
148 .Xr chmod 1
149 for a description of possible mode values.
150 .It Fl o
151 Specify an owner.
152 A numeric UID is allowed.
153 .It Fl p
154 Preserve the modification time.
155 Copy the file, as if the
156 .Fl C
157 (compare and copy) option is specified,
158 except if the target file doesn't already exist or is different,
159 then preserve the modification time of the file.
160 .It Fl S
161 Safe copy.
162 Normally,
164 unlinks an existing target before installing the new file.
165 With the
166 .Fl S
167 flag a temporary file is used and then renamed to be
168 the target.
169 The reason this is safer is that if the copy or
170 rename fails, the existing target is left untouched.
171 .It Fl s
173 exec's the command
174 .Xr strip 1
175 to strip binaries so that
177 can be portable over a large
178 number of systems and binary types.
179 .It Fl U
180 Indicate that
182 is running unprivileged, and that it should not try to change
183 the owner, the group, or the file flags of the destination.
184 .It Fl v
185 Cause
187 to be verbose,
188 showing files as they are installed or backed up.
191 By default,
193 preserves all file flags, with the exception of the
194 .Dq nodump
195 flag.
199 utility attempts to prevent moving a file onto itself.
201 Installing
202 .Pa /dev/null
203 creates an empty file.
204 .Sh ENVIRONMENT
207 utility checks for the presence of the
208 .Ev STRIPBIN
209 environment variable and if present,
210 uses the assigned value as the program to run if and when the
211 .Fl s
212 option has been specified.
214 If the
215 .Ev DONTSTRIP
216 environment variable is present,
218 will ignore any specification of the
219 .Fl s
220 option.
221 This is mainly for use in debugging the
223 .Xr dports 7
224 collection.
225 .Sh FILES
226 .Bl -tag -width INS@XXXX -compact
227 .It Pa INS@XXXX
228 If either
229 .Fl S
230 option is specified, or the
231 .Fl C
233 .Fl p
234 option is used in conjunction with the
235 .Fl s
236 option, temporary files named
237 .Pa INS@XXXX ,
238 where
239 .Pa XXXX
240 is decided by
241 .Xr mkstemp 3 ,
242 are created in the target directory.
244 .Sh EXIT STATUS
245 .Ex -std
246 .Sh COMPATIBILITY
247 Historically
249 moved files by default.
250 The default was changed to copy in
251 .Fx 4.4 .
252 .Sh SEE ALSO
253 .Xr chflags 1 ,
254 .Xr chgrp 1 ,
255 .Xr chmod 1 ,
256 .Xr cp 1 ,
257 .Xr mv 1 ,
258 .Xr strip 1 ,
259 .Xr mmap 2 ,
260 .Xr chown 8
261 .Sh HISTORY
264 utility appeared in
265 .Bx 4.2 .
266 .Sh BUGS
267 Temporary files may be left in the target directory if
269 exits abnormally.
271 File flags cannot be set by
272 .Xr fchflags 2
273 over a NFS filesystem.  Other filesystems do not have a concept of flags.
276 utility will only warn when flags could not be set on a filesystem
277 that does not support them.
281 utility with
282 .Fl v
283 falsely says a file is copied when
284 .Fl C
285 snaps hard links.