Sync usage with man page.
[netbsd-mini2440.git] / external / bsd / pkg_install / dist / add / pkg_add.1
blobb0d7737e9c464fc99383fdb795c8549be892ea6a
1 .\" $NetBSD: pkg_add.1,v 1.38 2009/08/06 18:14:15 wiz Exp $
2 .\"
3 .\" FreeBSD install - a package for the installation and maintenance
4 .\" of non-core utilities.
5 .\"
6 .\" Redistribution and use in source and binary forms, with or without
7 .\" modification, are permitted provided that the following conditions
8 .\" are met:
9 .\" 1. Redistributions of source code must retain the above copyright
10 .\"    notice, this list of conditions and the following disclaimer.
11 .\" 2. Redistributions in binary form must reproduce the above copyright
12 .\"    notice, this list of conditions and the following disclaimer in the
13 .\"    documentation and/or other materials provided with the distribution.
14 .\"
15 .\" Jordan K. Hubbard
16 .\"
17 .\"
18 .\"     @(#)pkg_add.1
19 .\"
20 .Dd August 6, 2009
21 .Dt PKG_ADD 1
22 .Os
23 .Sh NAME
24 .Nm pkg_add
25 .Nd a utility for installing and upgrading software package distributions
26 .Sh SYNOPSIS
27 .Nm
28 .Op Fl AfILnRuVv
29 .Op Fl K Ar pkg_dbdir
30 .Op Fl m Ar machine
31 .Op Fl P Ar destdir
32 .Op Fl p Ar prefix
33 .Op Fl W Ar viewbase
34 .Op Fl w Ar view
35 .Ar Oo Oo Li ftp|http Oc Ns Li :// Ns Oo Ar user Oc Ns \
36 Oo Li \&: Ns Ar password Oc \
37 Ns Li @ Oc Ns Ar host Ns Oo Li \&: Ns Ar port Oc Ns \
38 Oo Li / Ns Ar path/ Oc Ns Ar pkg-name ...
39 .Sh DESCRIPTION
40 The
41 .Nm
42 command is used to extract and upgrade packages that have been
43 previously created with the
44 .Xr pkg_create 1
45 command.
46 Packages are prepared collections of pre-built binaries, documentation,
47 configurations, installation instructions and/or other files.
48 .Nm
49 can recursively install other packages that the current package
50 depends on or requires from both local disk and via FTP or HTTP.
51 .Sh WARNING
52 .Bf -emphasis
53 Since the
54 .Nm
55 command may execute scripts or programs contained within a package file,
56 your system may be susceptible to
57 .Dq Trojan horses
58 or other subtle
59 attacks from miscreants who create dangerous package files.
60 .Pp
61 You are advised to verify the competence and identity of those who
62 provide installable package files.
63 For extra protection, use the digital signatures provided where possible
64 (see the
65 .Xr pkg_install.conf 5 ) ,
66 or, failing that, use
67 .Xr tar 1
68 to extract the package file, and inspect its contents and scripts
69 to ensure it poses no danger to your system's integrity.
70 Pay particular attention to any
71 .Pa +INSTALL
73 .Pa +DEINSTALL
74 files, and inspect the
75 .Pa +CONTENTS
76 file for
77 .Cm @cwd ,
78 .Cm @mode
79 (check for setuid),
80 .Cm @dirrm ,
81 .Cm @exec ,
82 and
83 .Cm @unexec
84 directives, and/or use the
85 .Xr pkg_info 1
86 command to examine the package file.
87 .Ef
88 .Sh OPTIONS
89 The following command line arguments are supported:
90 .Bl -tag -width indent
91 .It Ar pkg-name [ ... ]
92 The named packages are installed.
93 .Nm
94 will first try to use
95 .Ar pkg-name
96 as full URL or path name without any wildcard processing.
97 If that fails,
98 .Nm
99 will try to match packages using wildcard processing.
100 If that fails as well and
101 .Ar pkg-name
102 does not contain any /, the entries of the
103 .Dv PKG_PATH
104 variable are searched using the wildcard processing rules.
105 .It Fl A
106 Mark package as installed automatically, as dependency of another
107 package.
108 You can use
109 .Dl Ic pkg_admin set automatic=YES
110 to mark packages this way after installation, and
111 .Dl Ic pkg_admin unset automatic
112 to remove the mark.
113 If you
115 a package without specifying
116 .Fl A
117 after it had already been automatically installed, the mark is
118 removed.
119 .It Fl f
120 Force installation to proceed even if prerequisite packages are not
121 installed or the install script fails.
122 Although
124 will still try to find and auto-install missing prerequisite packages,
125 a failure to find one will not be fatal.
126 This flag also overrides the fatal error when the operating system or
127 architecture the package was built on differ from that of the host.
128 .It Fl I
129 If an installation script exists for a given package, do not execute it.
130 .It Fl K Ar pkg_dbdir
132 .Ar pkg_dbdir
133 as the package database directory.
134 If this option isn't specified, then the package database directory is
135 taken from the value of the environment variable
136 .Ev PKG_DBDIR
137 if it's set, otherwise it defaults to
138 .Pa /var/db/pkg .
139 .It Fl L
140 Don't add the package to any views after installation.
141 .It Fl m
142 Override the machine architecture returned by uname with
143 .Ar machine .
144 .It Fl n
145 Don't actually install a package, just report the steps that
146 would be taken if it was.
147 .It Fl P Ar destdir
148 Prefix all file and directory names with
149 .Ar destdir .
150 For packages without install scripts this has the same behavior as
151 using chroot.
152 .It Fl p Ar prefix
154 .Ar prefix
155 as the directory in which to extract files from a package.
156 If a package has set its default directory, it will be overridden
157 by this flag.
158 Note that only the first
159 .Cm @cwd
160 directive will be replaced, since
162 has no way of knowing which directory settings are relative and
163 which are absolute.
164 Only one directory transition is supported and the second one is expected to go
165 into
166 .Ar pkgdb .
167 .It Fl R
168 Do not record the installation of a package.
169 This implies
170 .Fl I .
171 This means that you cannot deinstall it later, so only use this option if
172 you know what you are doing!
173 .It Fl u
174 If the package that's being installed is already installed,
175 an update is performed.
176 It is currently not possible to update to an identical version.
177 If this is specified twice, then any dependent packages that are
178 too old will also be updated to fulfill the dependency.
179 See below for a more detailed description of the process.
180 .It Fl V
181 Print version number and exit.
182 .It Fl v
183 Turn on verbose output.
184 .It Fl W Ar viewbase
186 .Ar viewbase
187 as the base directory for the managed views.
188 The default
189 .Ar viewbase
190 directory is set by
191 .Xr pkg_view 1 .
192 This value also may be set from the
193 .Ev LOCALBASE
194 environment variable.
195 .It Fl w Ar view
196 Set the
197 .Ar view
198 to which packages should be added after installation.
199 The default
200 .Ar view
201 is set by
202 .Xr pkg_view 1 .
203 This value also may be set from the
204 .Ev PKG_VIEW
205 environment variable.
208 One or more
209 .Ar pkg-name
210 arguments may be specified, each being either a file containing the
211 package (these usually ending with the
212 .Dq .tgz
213 suffix) or a
214 URL pointing at a file available on an ftp or web site.
215 Thus you may extract files directly from their anonymous ftp or WWW
216 locations (e.g.,
218 ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/i386/3.1_2007Q2/shells/bash-3.2.9.tgz
221 http://www.example.org/packages/screen-4.0.tbz).
222 Note:  For ftp transfers, if you wish to use
223 .Bf -emphasis
224 passive mode
226 ftp in such transfers, set the variable
227 .Bf -emphasis
228 FTP_PASSIVE_MODE
230 to some value in your environment.
231 Otherwise, the more standard ACTIVE mode may be used.
234 consistently fails to fetch a package from a site known to work,
235 it may be because you have a firewall that demands the usage of
236 .Bf -emphasis
237 passive mode
239 ftp.
240 .Sh TECHNICAL DETAILS
242 extracts each package's meta data (including the
243 .Dq packing list )
244 to memory and then runs through the following sequence to fully extract
245 the contents of the package:
246 .Bl -enum -offset indent
248 A check is made to determine if the package or another version of it
249 is already recorded as installed.
250 If it is,
251 installation is terminated if the
252 .Fl u
253 option is not given.
255 If the
256 .Fl u
257 option is given, it's assumed the package should be replaced by the
258 new version instead.
259 Before doing so, all packages that depend on the
260 pkg being upgraded are checked if they also work with the new version.
261 If that test is successful, replacing is prepared by moving an existing
262 .Pa +REQUIRED_BY
263 file aside (if it exists), and running
264 .Xr pkg_delete 1
265 on the installed package.
266 Installation then proceeds as if the package
267 was not installed, and restores the
268 .Pa +REQUIRED_BY
269 file afterwards.
271 The package build information is extracted from the
272 .Pa +BUILD_INFO
273 file and compared against the result of
274 .Xr uname 3 .
275 If the operating system or architecture of the package differ from
276 that of the host, installation is aborted.
277 This behavior is overridable with the
278 .Fl f
279 flag.
281 The package build information from
282 .Pa +BUILD_INFO
283 is then checked for
284 .Ev USE_ABI_DEPENDS=NO
286 .Ev IGNORE_RECOMMENDED ) .
287 If the package was built with ABI dependency recommendations ignored,
288 a warning will be issued.
290 A check is made to determine if the package conflicts (from
291 .Cm @pkgcfl
292 directives, see
293 .Xr pkg_create 1 )
294 with an already recorded as installed package or if an installed package
295 conflicts with the package.
296 If it is, installation is terminated.
298 The file list of the package is compared to the file lists of the
299 installed packages.
300 If there is any overlap, the installation is terminated.
302 All package dependencies (from
303 .Cm @pkgdep
304 directives, see
305 .Xr pkg_create 1 )
306 are read from the packing list.
307 If any of these required packages are not currently installed,
308 an attempt is made to find and install it;
309 if the missing package cannot be found or installed,
310 the installation is terminated.
311 If the
312 .Fl u
313 option was specified twice, any required packages that are installed,
314 but which have a version number that is considered to be too old,
315 are also updated.
316 The dependent packages are found according to the normal
317 .Ev PKG_PATH
318 rules.
320 If the package contains an
321 .Ar install
322 script, it is executed with the following arguments:
323 .Bl -tag -width indentindent
324 .It Ar pkg-name
325 The name of the package being installed.
326 .It Cm PRE-INSTALL
327 Keyword denoting that the script is to perform any actions needed before
328 the package is installed.
331 If the
332 .Ar install
333 script exits with a non-zero status code, the installation is terminated.
335 The files from the file list are extracted to the chosen prefix.
337 If an
338 .Ar install
339 script exists for the package, it is executed with the following arguments:
340 .Bl -tag -width indentindent
341 .It Ar pkg_name
342 The name of the package being installed.
343 .It Cm POST-INSTALL
344 Keyword denoting that the script is to perform any actions needed
345 after the package has been installed.
348 After installation is complete, a copy of the packing list,
349 .Ar deinstall
350 script, description, and display files are copied into
351 .Pa /var/db/pkg/\*[Lt]pkg-name\*[Gt]
352 for subsequent possible use by
353 .Xr pkg_delete 1 .
354 Any package dependencies are recorded in the other packages'
355 .Pa /var/db/pkg/\*[Lt]other-pkg\*[Gt]/+REQUIRED_BY
356 file
357 (if an alternate package database directory is specified, then it
358 overrides the
359 .Pa /var/db/pkg
360 path shown above).
362 If the package is a depoted package, then add it to the default view.
364 Finally, if we were upgrading a package, any
365 .Pa +REQUIRED_BY
366 file that was moved aside before upgrading was started is now moved
367 back into place.
371 .Ar install
372 script is called with the environment variable
373 .Ev PKG_PREFIX
374 set to the installation prefix (see the
375 .Fl p
376 option above).
377 This allows a package author to write a script
378 that reliably performs some action on the directory where the package
379 is installed, even if the user might change it with the
380 .Fl p
381 flag to
382 .Cm pkg_add .
383 The scripts are also called with the
384 .Ev PKG_METADATA_DIR
385 environment variable set to the location of the
386 .Pa +*
387 meta-data files, and with the
388 .Ev PKG_REFCOUNT_DBDIR
389 environment variable set to the location of the package reference counts
390 database directory.
391 If the
392 .Fl P
393 flag was given to
394 .Nm ,
395 .Ev PKG_DESTDIR
396 will be set to
397 .Ar destdir .
398 .Sh ENVIRONMENT
399 .Bl -tag -width PKG_TMPDIR
400 .It Ev LOCALBASE
401 This is the location of the
402 .Ar viewbase
403 directory in which all the views are managed.
404 The default
405 .Ar viewbase
406 directory is
407 .Pa /usr/pkg .
408 .It Ev PKG_DBDIR
409 If the
410 .Fl K
411 flag isn't given, then
412 .Ev PKG_DBDIR
413 is the location of the package database directory.
414 The default package database directory is
415 .Pa /var/db/pkg .
416 .It Ev PKG_PATH
417 The value of the
418 .Ev PKG_PATH
419 variable overrides the
420 .Xr pkg_install.conf 5
421 variable of the same name.
422 It is used if a given package can't be found, it's usually set to
423 .Pa /usr/pkgsrc/packages/All .
424 The environment variable
425 should be a series of entries separated by semicolons.
426 Each entry consists of a directory name or URL.
427 The current directory may be indicated implicitly by an empty directory
428 name, or explicitly by a single period.
429 .It Ev PKG_REFCOUNT_DBDIR
430 Location of the package reference counts database directory.
431 The default location is the path to the package database directory with
432 .Dq .refcount
433 appended to the path, e.g.
434 .Pa /var/db/pkg.refcount .
435 .It Ev PKG_VIEW
436 The default view can be specified in the
437 .Ev PKG_VIEW
438 environment variable.
440 .Sh EXAMPLES
441 In all cases,
443 will try to install binary packages listed in dependencies list.
445 You can specify a compiled binary package explicitly on the command line.
446 .Bd -literal
447 # pkg_add /usr/pkgsrc/packages/All/tcsh-6.14.00.tgz
450 If you omit the version number,
452 will install the latest version available.
453 With
454 .Fl v ,
456 emits more messages to terminal.
457 .Bd -literal
458 # pkg_add -v /usr/pkgsrc/packages/All/unzip
461 You can grab a compiled binary package from remote location by specifying
462 a URL.
463 The URL can be put into an environment variable,
464 .Ev PKG_PATH .
465 .Bd -literal
466 # pkg_add -v ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/i386/3.1_2007Q2/All/firefox-2.0.0.4.tgz
468 # export PKG_PATH=ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/i386/3.1_2007Q2/All
469 # pkg_add -v firefox
472 Over time, as problems are found in packages, they will be moved
473 from the
474 .Pa All
475 subdirectory into the
476 .Pa vulnerable
477 subdirectory.
478 If you want to accept vulnerable packages by default
479 (and know what you are doing),
480 you can add the
481 .Pa vulnerable
482 directory to your
483 .Ev PKG_PATH
484 like this:
485 .Bd -literal
486 # export PKG_PATH="ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/i386/3.1_2007Q2/All/;ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/i386/3.1_2007Q2/vulnerable/"
489 (The quotes are needed because semicolon
490 .Pq Sq \&;
491 is a shell meta-character.)
492 If you do this, consider using the audit capabilities in
493 .Xr pkg_admin 1
494 and running it after every
495 .Nm .
496 .Sh CONFIGURATION VARIABLES
497 The following variables change the behavior of
499 and are described in
500 .Xr pkg_install.conf 5 :
501 .Bl -tag -compact -offset indent -width CERTIFICATE_ANCHOR_PKGS
502 .It Ev CHECK_LICENSE
503 .It Ev CHECK_VULNERABILITIES
504 .It Ev CERTIFICATE_ANCHOR_PKGS
505 .It Ev CERTIFICATE_CHAIN
506 .It Ev VERIFIED_INSTALLATION
508 .Sh SEE ALSO
509 .Xr pkg_admin 1 ,
510 .Xr pkg_create 1 ,
511 .Xr pkg_delete 1 ,
512 .Xr pkg_info 1 ,
513 .Xr tar 1 ,
514 .Xr mktemp 3 ,
515 .Xr sysconf 3 ,
516 .Xr pkg_install.conf 5 ,
517 .Xr pkgsrc 7
518 .Sh AUTHORS
519 .Bl -tag -width indent -compact
520 .It "Jordan Hubbard"
521 Initial work and ongoing development.
522 .It "John Kohl"
524 refinements.
525 .It "Hubert Feyrer"
527 wildcard dependency processing, pkgdb, upgrading, etc.
528 .It Thomas Klausner
529 HTTP support.
530 .It Joerg Sonnenberger
531 Rewrote most of the code base to work without external commands.
533 .Sh BUGS
534 Package upgrading needs a lot more work to be really universal.
536 Sure to be others.