install(1): Add a -N option, improving NetBSD and FreeBSD compatibility
[dragonfly.git] / usr.bin / xinstall / install.1
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 m Ar mode
45 .Op Fl N Ar dbdir
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 m Ar mode
55 .Op Fl N Ar dbdir
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 m Ar mode
64 .Op Fl N Ar dbdir
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 B Ar suffix
97 Use
98 .Ar suffix
99 as the backup suffix if
100 .Fl b
101 is given.
102 .It Fl C
103 Copy the file.
104 If the target file already exists and the files are the same,
105 then don't change the modification time of the target.
106 .It Fl c
107 Copy the file.
108 This is actually the default.
109 The
110 .Fl c
111 option is only included for backwards compatibility.
112 .It Fl d
113 Create directories.
114 Missing parent directories are created as required.
115 .It Fl D Ar destdir
116 Specify the
117 .Ev DESTDIR
118 (top of the file hierarchy) that the items are installed into.
119 This option is implemented for compatibility with the
120 .Nx
121 version of
122 .Nm
123 and does nothing.
124 .It Fl f
125 Specify the target's file flags; see
126 .Xr chflags 1
127 for a list of possible flags and their meanings.
128 .It Fl g
129 Specify a group.
130 A numeric GID is allowed.
131 .It Fl l
132 When the
133 .Fl N
134 option is specified and the owner or group cannot be found, fallback to
135 system files.
136 .It Fl M
137 Disable all use of
138 .Xr mmap 2 .
139 .It Fl m
140 Specify an alternate mode.
141 The default mode is set to rwxr-xr-x (0755).
142 The specified mode may be either an octal or symbolic value; see
143 .Xr chmod 1
144 for a description of possible mode values.
145 .It Fl N
146 Use the user database text file
147 .Pa master.passwd
148 and group database text file
149 .Pa group
150 from
151 .Ar dbdir ,
152 rather than using the results from the system's
153 .Xr getpwnam 3
154 and
155 .Xr getgrnam 3
156 (and related) library calls.
157 .It Fl o
158 Specify an owner.
159 A numeric UID is allowed.
160 .It Fl p
161 Preserve the modification time.
162 Copy the file, as if the
163 .Fl C
164 (compare and copy) option is specified,
165 except if the target file doesn't already exist or is different,
166 then preserve the modification time of the file.
167 .It Fl S
168 Safe copy.
169 Normally,
170 .Nm
171 unlinks an existing target before installing the new file.
172 With the
173 .Fl S
174 flag a temporary file is used and then renamed to be
175 the target.
176 The reason this is safer is that if the copy or
177 rename fails, the existing target is left untouched.
178 .It Fl s
179 .Nm
180 exec's the command
181 .Xr strip 1
182 to strip binaries so that
183 .Nm
184 can be portable over a large
185 number of systems and binary types.
186 .It Fl U
187 Indicate that
188 .Nm
189 is running unprivileged, and that it should not try to change
190 the owner, the group, or the file flags of the destination.
191 .It Fl v
192 Cause
193 .Nm
194 to be verbose,
195 showing files as they are installed or backed up.
196 .El
197 .Pp
198 By default,
199 .Nm
200 preserves all file flags, with the exception of the
201 .Dq nodump
202 flag.
203 .Pp
204 The
205 .Nm
206 utility attempts to prevent moving a file onto itself.
207 .Pp
208 Installing
209 .Pa /dev/null
210 creates an empty file.
211 .Sh ENVIRONMENT
212 The
213 .Nm
214 utility checks for the presence of the
215 .Ev STRIPBIN
216 environment variable and if present,
217 uses the assigned value as the program to run if and when the
218 .Fl s
219 option has been specified.
220 .Pp
221 If the
222 .Ev DONTSTRIP
223 environment variable is present,
224 .Nm
225 will ignore any specification of the
226 .Fl s
227 option.
228 This is mainly for use in debugging the
229 .Dx
230 .Xr dports 7
231 collection.
232 .Sh FILES
233 .Bl -tag -width INS@XXXX -compact
234 .It Pa INS@XXXX
235 If either
236 .Fl S
237 option is specified, or the
238 .Fl C
239 or
240 .Fl p
241 option is used in conjunction with the
242 .Fl s
243 option, temporary files named
244 .Pa INS@XXXX ,
245 where
246 .Pa XXXX
247 is decided by
248 .Xr mkstemp 3 ,
249 are created in the target directory.
250 .El
251 .Sh EXIT STATUS
252 .Ex -std
253 .Sh COMPATIBILITY
254 Historically
255 .Nm
256 moved files by default.
257 The default was changed to copy in
258 .Fx 4.4 .
259 .Sh SEE ALSO
260 .Xr chflags 1 ,
261 .Xr chgrp 1 ,
262 .Xr chmod 1 ,
263 .Xr cp 1 ,
264 .Xr mv 1 ,
265 .Xr strip 1 ,
266 .Xr mmap 2 ,
267 .Xr getgrnam 3 ,
268 .Xr getpwnam 3 ,
269 .Xr chown 8
270 .Sh HISTORY
271 The
272 .Nm
273 utility appeared in
274 .Bx 4.2 .
275 .Sh BUGS
276 Temporary files may be left in the target directory if
277 .Nm
278 exits abnormally.
279 .Pp
280 File flags cannot be set by
281 .Xr fchflags 2
282 over a NFS filesystem.  Other filesystems do not have a concept of flags.
283 The
284 .Nm
285 utility will only warn when flags could not be set on a filesystem
286 that does not support them.
287 .Pp
288 The
289 .Nm
290 utility with
291 .Fl v
292 falsely says a file is copied when
293 .Fl C
294 snaps hard links.