summaryrefslogtreecommitdiff
path: root/static/netbsd/man1/pkg_add.1
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:15 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:15 -0400
commit253e67c8b3a72b3a4757fdbc5845297628db0a4a (patch)
treeadf53b66087aa30dfbf8bf391a1dadb044c3bf4d /static/netbsd/man1/pkg_add.1
parenta9157ce950dfe2fc30795d43b9d79b9d1bffc48b (diff)
docs: Added All NetBSD Manuals
Diffstat (limited to 'static/netbsd/man1/pkg_add.1')
-rw-r--r--static/netbsd/man1/pkg_add.1432
1 files changed, 432 insertions, 0 deletions
diff --git a/static/netbsd/man1/pkg_add.1 b/static/netbsd/man1/pkg_add.1
new file mode 100644
index 00000000..3eda48d7
--- /dev/null
+++ b/static/netbsd/man1/pkg_add.1
@@ -0,0 +1,432 @@
+.\" $NetBSD: pkg_add.1,v 1.4 2021/04/10 19:49:59 nia Exp $
+.\"
+.\" FreeBSD install - a package for the installation and maintenance
+.\" of non-core utilities.
+.\"
+.\" 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.
+.\"
+.\" Jordan K. Hubbard
+.\"
+.\"
+.\" @(#)pkg_add.1
+.\"
+.Dd March 8, 2021
+.Dt PKG_ADD 1
+.Os
+.Sh NAME
+.Nm pkg_add
+.Nd a utility for installing and upgrading software package distributions
+.Sh SYNOPSIS
+.Nm
+.Op Fl AfhInRUuVv
+.Op Fl C Ar config
+.Op Fl K Ar pkg_dbdir
+.Op Fl m Ar machine
+.Op Fl P Ar destdir
+.Op Fl p Ar prefix
+.Ar Oo Oo Li ftp|http Oc Ns Li :// Ns Oo Ar user Oc Ns \
+Oo Li \&: Ns Ar password Oc \
+Ns Li @ Oc Ns Ar host Ns Oo Li \&: Ns Ar port Oc Ns \
+Oo Li / Ns Ar path/ Oc Ns Ar pkg-name ...
+.Sh DESCRIPTION
+The
+.Nm
+command is used to extract and upgrade packages that have been
+previously created with the
+.Xr pkg_create 1
+command.
+Packages are prepared collections of pre-built binaries, documentation,
+configurations, installation instructions and/or other files.
+.Nm
+can recursively install other packages that the current package
+depends on or requires from both local disk and via FTP or HTTP.
+.Sh WARNING
+.Bf -emphasis
+Since the
+.Nm
+command may execute scripts or programs contained within a package file,
+your system may be susceptible to
+.Dq Trojan horses
+or other subtle
+attacks from miscreants who create dangerous package files.
+.Pp
+You are advised to verify the competence and identity of those who
+provide installable package files.
+For extra protection, use the digital signatures provided where possible
+(see the
+.Xr pkg_install.conf 5 ) ,
+or, failing that, use
+.Xr tar 1
+to extract the package file, and inspect its contents and scripts
+to ensure it poses no danger to your system's integrity.
+Pay particular attention to any
+.Pa +INSTALL
+or
+.Pa +DEINSTALL
+files, and inspect the
+.Pa +CONTENTS
+file for
+.Cm @cwd ,
+.Cm @mode
+(check for setuid),
+.Cm @dirrm ,
+.Cm @exec ,
+and
+.Cm @unexec
+directives, and/or use the
+.Xr pkg_info 1
+command to examine the package file.
+.Ef
+.Sh OPTIONS
+The following command line arguments are supported:
+.Bl -tag -width indent
+.It Ar pkg-name [ ... ]
+The named packages are installed.
+.Nm
+will first try to use
+.Ar pkg-name
+as full URL or path name without any wildcard processing.
+If that fails,
+.Nm
+will try to match packages using wildcard processing.
+If that fails as well and
+.Ar pkg-name
+does not contain any /, the entries of the
+.Dv PKG_PATH
+variable are searched using the wildcard processing rules.
+.It Fl A
+Mark package as installed automatically, as dependency of another
+package.
+You can use
+.Dl Ic pkg_admin set automatic=YES
+to mark packages this way after installation, and
+.Dl Ic pkg_admin unset automatic
+to remove the mark.
+If you
+.Nm
+a package without specifying
+.Fl A
+after it had already been automatically installed, the mark is
+removed.
+.It Fl C Ar config
+Read the configuration file from
+.Ar config
+instead of the system default.
+.It Fl D
+Force updating even if the dependencies of depending packages are not
+satisfied by the new package.
+This is used by "make replace", after which one would typically
+replace the depending packages.
+.It Fl f
+Force installation to proceed even if prerequisite packages are not
+installed or the install script fails.
+Although
+.Nm
+will still try to find and auto-install missing prerequisite packages,
+a failure to find one will not be fatal.
+This flag also overrides the fatal error when the operating system or
+architecture the package was built on differ from that of the host.
+.It Fl h
+Display help and exit.
+.It Fl I
+If an installation script exists for a given package, do not execute it.
+.It Fl K Ar pkg_dbdir
+Override the value of the
+.Dv PKG_DBDIR
+configuration option with the value
+.Ar pkg_dbdir .
+.It Fl m
+Override the machine architecture returned by uname with
+.Ar machine .
+.It Fl n
+Don't actually install a package, just report the steps that
+would be taken if it was.
+.It Fl P Ar destdir
+Prefix all file and directory names with
+.Ar destdir .
+For packages without install scripts this has the same behavior as
+using
+.Xr chroot 8 .
+.It Fl p Ar prefix
+Override the prefix stored in the package with
+.Ar prefix .
+.It Fl R
+Do not record the installation of a package.
+This implies
+.Fl I .
+This means that you cannot deinstall it later, so only use this option if
+you know what you are doing!
+.It Fl U
+Replace an already installed version from a package.
+Implies
+.Fl u .
+.It Fl u
+If the package that's being installed is already installed,
+an update is performed.
+Installed dependent packages are updated recursively, if they are too
+old to fulfill the dependencies of the to-be-installed version.
+See below for a more detailed description of the process.
+.It Fl V
+Print version number and exit.
+.It Fl v
+Turn on verbose output.
+.El
+.Pp
+One or more
+.Ar pkg-name
+arguments may be specified, each being either a file containing the
+package (these usually ending with the
+.Dq .tgz
+suffix) or a
+URL pointing at a file available on an ftp or web site.
+Thus you may extract files directly from their anonymous ftp or WWW
+locations (e.g.,
+.Nm
+http://cdn.NetBSD.org/pub/pkgsrc/packages/NetBSD/x86_64/9.0/All/bash-5.0.18.tgz
+or
+.Nm
+http://www.example.org/packages/screen-4.0.tbz).
+Note: For ftp transfers, if you wish to use
+.Bf -emphasis
+passive mode
+.Ef
+ftp in such transfers, set the variable
+.Bf -emphasis
+FTP_PASSIVE_MODE
+.Ef
+to some value in your environment.
+Otherwise, the more standard ACTIVE mode may be used.
+If
+.Nm
+consistently fails to fetch a package from a site known to work,
+it may be because you have a firewall that demands the usage of
+.Bf -emphasis
+passive mode
+.Ef
+ftp.
+.Sh TECHNICAL DETAILS
+.Nm
+extracts each package's meta data (including the
+.Dq packing list )
+to memory and then runs through the following sequence to fully extract
+the contents of the package:
+.Bl -enum -offset indent
+.It
+A check is made to determine if the package or another version of it
+is already recorded as installed.
+If it is,
+installation is terminated if the
+.Fl u
+or
+.Fl U
+options are not given.
+.Pp
+If the same version is installed and
+.Fl U
+is not given, it is marked as manually installed and process stops.
+If the
+.Fl u
+option is given, it's assumed the package should be replaced by the
+new version instead.
+Before doing so, all packages that depend on the
+pkg being upgraded are checked if they also work with the new version.
+If that test is not successful, the dependent packages are updated first.
+The replacing is then prepared by moving an existing
+.Pa +REQUIRED_BY
+file aside (if it exists), and running
+.Xr pkg_delete 1
+on the installed package.
+Installation then proceeds as if the package
+was not installed, and restores the
+.Pa +REQUIRED_BY
+file afterwards.
+.It
+The package build information is extracted from the
+.Pa +BUILD_INFO
+file and compared against the result of
+.Xr uname 3 .
+If the operating system or architecture of the package differ from
+that of the host, installation is aborted.
+This behavior is overridable with the
+.Fl f
+flag.
+.It
+The package build information from
+.Pa +BUILD_INFO
+is then checked for
+.Ev USE_ABI_DEPENDS=NO
+(or
+.Ev IGNORE_RECOMMENDED ) .
+If the package was built with ABI dependency recommendations ignored,
+a warning will be issued.
+.It
+A check is made to determine if the package conflicts (from
+.Cm @pkgcfl
+directives, see
+.Xr pkg_create 1 )
+with an already recorded as installed package or if an installed package
+conflicts with the package.
+If it is, installation is terminated.
+.It
+The file list of the package is compared to the file lists of the
+installed packages.
+If there is any overlap, the installation is terminated.
+.It
+All package dependencies (from
+.Cm @pkgdep
+directives, see
+.Xr pkg_create 1 )
+are read from the packing list.
+If any of these required packages are not currently installed,
+an attempt is made to find and install it;
+if the missing package cannot be found or installed,
+the installation is terminated.
+.It
+If the package contains an
+.Ar install
+script, it is executed with the following arguments:
+.Bl -tag -width indentindent
+.It Ar pkg-name
+The name of the package being installed.
+.It Cm PRE-INSTALL
+Keyword denoting that the script is to perform any actions needed before
+the package is installed.
+.El
+.Pp
+If the
+.Ar install
+script exits with a non-zero status code, the installation is terminated.
+.It
+The files from the file list are extracted to the chosen prefix.
+.It
+If an
+.Ar install
+script exists for the package, it is executed with the following arguments:
+.Bl -tag -width indentindent
+.It Ar pkg_name
+The name of the package being installed.
+.It Cm POST-INSTALL
+Keyword denoting that the script is to perform any actions needed
+after the package has been installed.
+.El
+.It
+After installation is complete, a copy of the packing list,
+.Ar deinstall
+script, description, and display files are copied into
+.Pa \*[Lt]PKG_DBDIR\*[Gt]/\*[Lt]pkg-name\*[Gt]
+for subsequent possible use by
+.Xr pkg_delete 1 .
+Any package dependencies are recorded in the other packages'
+.Pa +REQUIRED_BY
+file.
+.It
+Finally, if we were upgrading a package, any
+.Pa +REQUIRED_BY
+file that was moved aside before upgrading was started is now moved
+back into place.
+.El
+.Pp
+The
+.Ar install
+script is called with the environment variable
+.Ev PKG_PREFIX
+set to the installation prefix (see the
+.Fl p
+option above).
+This allows a package author to write a script
+that reliably performs some action on the directory where the package
+is installed, even if the user might change it with the
+.Fl p
+flag to
+.Cm pkg_add .
+The scripts are also called with the
+.Ev PKG_METADATA_DIR
+environment variable set to the location of the
+.Pa +*
+meta-data files, and with the
+.Ev PKG_REFCOUNT_DBDIR
+environment variable set to the location of the package reference counts
+database directory.
+If the
+.Fl P
+flag was given to
+.Nm ,
+.Ev PKG_DESTDIR
+will be set to
+.Ar destdir .
+Additionally,
+.Ev PKG_METADATA_DIR
+and
+.Ev PKG_REFCOUNT_DBDIR
+are prefixed with
+.Ar destdir .
+.Sh ENVIRONMENT
+See
+.Xr pkg_install.conf 5
+for options, that can also be specified using the environment.
+.Sh EXAMPLES
+In all cases,
+.Nm
+will try to install binary packages listed in dependencies list.
+.Pp
+You can grab a compiled binary package from remote location by specifying
+a URL:
+.Bd -literal
+# pkg_add http://cdn.NetBSD.org/pub/pkgsrc/packages/NetBSD/x86_64/9.0/All/firefox-84.0.tgz
+.Ed
+.Pp
+The base URL can also be provided by the configuration variable,
+.Dv PKG_PATH :
+.Bd -literal
+# export PKG_PATH=http://cdn.NetBSD.org/pub/pkgsrc/packages/NetBSD/x86_64/9.0/All
+# pkg_add firefox
+.Ed
+.Pp
+You can also specify a compiled binary package by filesystem path:
+.Bd -literal
+# pkg_add /usr/pkgsrc/packages/All/tcsh-6.14.00.tgz
+.Ed
+.Pp
+If you omit the version number,
+.Nm
+will install the latest version available.
+With
+.Fl v ,
+.Nm
+emits more messages to terminal:
+.Bd -literal
+# pkg_add -v /usr/pkgsrc/packages/All/unzip
+.Ed
+.Sh SEE ALSO
+.Xr pkg_admin 1 ,
+.Xr pkg_create 1 ,
+.Xr pkg_delete 1 ,
+.Xr pkg_info 1 ,
+.Xr pkg_install.conf 5 ,
+.Xr pkgsrc 7
+.Sh AUTHORS
+.Bl -tag -width indent -compact
+.It "Jordan Hubbard"
+Initial work and ongoing development.
+.It "John Kohl"
+.Nx
+refinements.
+.It "Hubert Feyrer"
+.Nx
+wildcard dependency processing, pkgdb, upgrading, etc.
+.It Thomas Klausner
+HTTP support.
+.It Joerg Sonnenberger
+Rewrote most of the code base to work without external commands.
+.El
+.Sh BUGS
+Package upgrading needs a lot more work to be really universal.
+.Pp
+Sure to be others.