Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
PKG-CREATE(8)		FreeBSD	System Manager's Manual		 PKG-CREATE(8)

     pkg create	-- a utility for creating software package distributions

     pkg create	[-enqv]	[-f format] [-l	level] [-o outdir] [-p plist]
	 [-r rootdir] [-t timestamp] -m	metadatadir
     pkg create	[-enqv]	[-f format] [-l	level] [-o outdir] [-r rootdir]
	 [-t timestamp]	-M manifest
     pkg create	[-egnqvx] [-f format] [-l level] [-o outdir] [-r rootdir]
	 [-t timestamp]	pkg-name ...
     pkg create	[-enqv]	[-f format] [-l	level] [-o outdir] [-r rootdir]
	 [-t timestamp]	-a

     pkg create	[--expand-manifest] [--no-clobber] [--quiet] [--verbose]
	 [--format format] [--level level] [--out-dir outdir] [--plist plist]
	 [--root-dir rootdir] --metadata metadatadir
     pkg create	[--expand-manifest] [--no-clobber] [--quiet] [--verbose]
	 [--format format] [--level level] [--out-dir outdir]
	 [--root-dir rootdir] --manifest manifest
     pkg create	[--expand-manifest] [--{glob,no-clobber,regex}]	[--quiet]
	 [--verbose] [--format format] [--level	level] [--out-dir outdir]
	 [--root-dir rootdir] pkg-name ...
     pkg create	[--expand-manifest] [--no-clobber] [--quiet] [--verbose]
	 [--format format] [--level level] [--out-dir outdir]
	 [--root-dir rootdir] --all

     pkg create	is used	to create packages from	binaries or other files	in-
     stalled on	your computer.	Package	tarballs can be	created	from the files
     of	a previously installed package using metadata from the local package
     database.	Any number of packages may be created in one invocation	of
     this style.

     Alternatively, a single package can be created from an arbitrary selec-
     tion of files on your system, but this requires a metadatadir and option-
     ally plist	to be supplied.	 The package name will be derived from the
     +MANIFEST file which must be contained within the metadatadir, or passed
     as	the argument to	-M.

     Packages thus created can be distributed and subsequently installed on
     other machines using the pkg add command.

     The following options are supported by pkg	create:

     -a, --all	     Create package tarballs from all packages installed on
		     your system.  This	option is incompatible with the

     -e, --expand-manifest
		     The manifest contained in pkg will	be expanded to read-
		     able UCL format.  -g, -x or -m metadatadir	options.

     -g, --glob	     Interpret pkg-name	as a shell glob	pattern	and create
		     package only for installed	binaries whose name match this
		     pattern.  This option is incompatible with	the -a,	-x or
		     -m	metadatadir options.

     -x, --regex     Like -g, but interpret pkg-name as	a regular expression
		     using the "modern"	or "extended" syntax described in
		     re_format(7).  This option	is incompatible	with the -a,
		     -g	or -m metadatadir options.

     -f	format,	--format format
		     Set format	as the package output format.  It can be one
		     of	tzst, txz, tbz,	tgz or tar which are currently the
		     only supported formats.  If an invalid or no format is
		     specified txz is assumed.

     -l	level, --level level
		     Set the compression level for created packages.  It can
		     be	any valid numeric compression level you	might specify
		     to	the underlying compression format.  Additionally,
		     level may be one of the special words "fast" or "best".
		     If	level is one of	these special words, the fastest or
		     slowest compression level,	respectively, for the speci-
		     fied compression format, is used.

     -m	metadatadir, --metadata	metadatadir
		     Specify the directory containing the package manifest,
		     +MANIFEST and optionally three other files; one contain-
		     ing a message to be displayed on package installation,
		     +DISPLAY.	Another	containing the description for the
		     package, +DESC.  If specified, only a single package will
		     be	created.  +DISPLAY and +DESC are not required; the
		     +MANIFEST file can	contain	all the	required information
		     needed to build a package.	 This option is	incompatible
		     with the -M, -a, -g or -x options.

     -M	manifest, --manifest manifest
		     Read all of the package metadata from the manifest	file.
		     This is exactly the same format as	+MANIFEST mentioned
		     above, but	any file name can be used, and no other	file
		     will be used to read package metadata from.  If speci-
		     fied, only	a single package will be created.  This	option
		     is	incompatible with the -m, -a, -g or -x options.

     -t	timestamp, --timestamp
		     Set the timestamp of the files within the archive.

     -n, --no-clobber
		     Do	not overwrite already existing packages.

     -o	outdir,	--out-dir outdir
		     Set outdir	as the output directory.  If this option is
		     not given,	all created packages will be saved in the cur-
		     rent directory.

     -p	plist, --plist plist
		     Specify some package metadata using the legacy plist for-
		     mat from pkg_add(1), commonly found in pkg-plist files in
		     the ports tree.  Metadata from the	plist file, if speci-
		     fied, will	take precedence	over any equivalents from the
		     metadatadir.  Only	has any	effect when used with
		     metadatadir.  See PLIST FORMAT for	details.

     -q, --quiet     Force quiet output.  This is the default, unless
		     PKG_CREATE_VERBOSE	is set to yes in pkg.conf.

     -v, --verbose   Force verbose output, the opposite	of --quiet.

     -r	rootdir, --root-dir rootdir
		     rootdir specifies the top-level directory to be treated
		     as	the root of the	filesystem hierarchy containing	the
		     package files.  File paths	in generated packages will be
		     relative to rootdir.  This	allows a package to be gener-
		     ated from content offset from its intended	final loca-
		     tion, which allows	a package building without disturbing
		     similar content already on	the system.  If	unspecified,
		     the default is effectively	/, the actual root directory.

     name pkg-name
	  This entry sets the package's	name to	pkg-name.  Among other things,
	  this name is used - with the version and the origin of the concerned
	  package - to identify	a dependency.

     version pkg-version
	  This entry sets the package's	version	to pkg-version.

     origin pkg-origin
	  This entry sets the package's	origin to pkg-origin.  This is a
	  string of the	form category/port-dir which designates	the port this
	  package was built from.

     comment comment-string
	  comment-string is a one-line description of this package.  It	is the
	  equivalent of	the COMMENT variable for a port, not a way to put com-
	  ments	in a +MANIFEST file.

     desc description
	  description is a longer description of the package.  It is the
	  equivalent of	the pkg-descr file for a port.	It may be one to a few
	  paragraphs.  For example:

		desc = <<EOD
		   This	is a longer description	of the package.
		   It can span multiple	lines.

		   It can also span multiple paragraphs.

     arch cpu-type
	  The architecture of the machine the package was built	on.  cpu-type
	  takes	values like x86, amd64...

     www url
	  The software's official website.

     maintainer	mail-address
	  The maintainer's mail	address.

     prefix path-prefix
	  The path where the files contained in	this package are installed
	  (usually /usr/local).

     flatsize size
	  The size that	the files contained in this package will occupy	on
	  your system once uncompressed.  This value does not take into	ac-
	  count	files stored in	the package database.

     deps dep-name dep-origin dep-version
	  Associative array of package dependencies, keyed on dep-name and
	  with values version dep-version and origin dep-origin.  For example:

		"deps" : {
		   "pstree" : {
		      "version"	: "2.36",
		      "origin" : "sysutils/pstree"
		   "cdiff" : {
		      "version"	: ",1",
		      "origin" : "textproc/cdiff"

     conflict pkg-glob
	  Flag this package as incompatible with the one designated by
	  pkg-glob.  Conflicting packages cannot be installed on the same sys-
	  tem as they may contain references to	the same files.

     option option-name	option-value
	  Set the option option-name to	the value option-value.

     file sha256-hash path
	  file entries list files included in the package.  If the file	is a
	  regular one, such an entry contains its sha256 digest	along with its
	  path.	 If a packaged file is a link, you must	use this entry's other
	  form,	as described below.

     file - path
	  Same as above	but for	file links.  The sha256	hash is	replaced with
	  a - (dash).

     dir path
	  Mimics the file entry	but for	directories.

     The following describes the plist format:

     The plist is a sequential list of lines which can have keywords
     prepended.	 A keyword starts with an `@'.	Lines not starting with	a key-
     word are considered as paths to a file.  If started with a	`/' then it is
     considered	an absolute path.  Otherwise the file is considered as rela-
     tive to PREFIX.

     Keyword lines are formed as follows: @keyword line

     Available keywords	are the	following:

     @cwd [directory]
	     Set the internal directory	pointer	to point to directory.	All
	     subsequent	filenames will be assumed relative to this directory.
     @mode mode
	     Set default permission for	all subsequently extracted files to
	     mode.  Format is the same as that used by the chmod command.  Use
	     without an	arg to set back	to default (mode of the	file while be-
	     ing packed) permissions.
     @owner user
	     Set default ownership for all subsequent files to user.  Use
	     without an	arg to set back	to default (root) ownership.
     @group group
	     Set default group ownership for all subsequent files to group.
	     Use without an arg	to set back to default (wheel) group owner-
     @comment string
	     The line will be ignored when packing.
     @dir name
	     Declare directory name to be deleted at deinstall time.  By de-
	     fault, most directories created by	a package installation are
	     deleted automatically when	the package is deinstalled, so this
	     directive is only needed for empty	directories or directories
	     outside of	PREFIX.	 These directives should appear	at the end of
	     the package list.	If the directory is not	empty a	warning	will
	     be	printed, and the directory will	not be removed.	 (Subdirecto-
	     ries should be listed before parent directories.)
     @include name
	     Include the name plist file to the	plist currently	being parsed.
	     the name will be opened relatively	to the main plist file being
	     parsed.  Note: only one level of @include is allowed

     The following environment variables affect	the execution of pkg create.
     See pkg.conf(5) for further description.




		      Set the timestamp	for every single file in the archive
		      to the one specified in the environment variable

     See pkg.conf(5).

     Create package files for installed	packages:
	   % pkg create	-a -o /usr/ports/packages/All

     Create package file for pkg:
	   % pkg create	-o /usr/ports/packages/All pkg

     pkg_create(3), pkg_printf(3), pkg_repos(3), pkg-keywords(5),
     pkg-lua-script(5),	pkg-repository(5), pkg-script(5), pkg-triggers(5),
     pkg.conf(5), pkg(8), pkg-add(8), pkg-alias(8), pkg-annotate(8),
     pkg-audit(8), pkg-autoremove(8), pkg-backup(8), pkg-check(8),
     pkg-clean(8), pkg-config(8), pkg-delete(8), pkg-fetch(8), pkg-info(8),
     pkg-install(8), pkg-lock(8), pkg-query(8),	pkg-register(8), pkg-repo(8),
     pkg-rquery(8), pkg-search(8), pkg-set(8), pkg-shell(8), pkg-shlib(8),
     pkg-ssh(8), pkg-stats(8), pkg-triggers(8),	pkg-update(8),
     pkg-updating(8), pkg-upgrade(8), pkg-version(8), pkg-which(8)

FreeBSD	13.0		       October 13, 2020			  FreeBSD 13.0


Want to link to this manual page? Use this URL:

home | help