svcadm(8)을 검색하려면 섹션에서 8 을 선택하고, 맨 페이지 이름에 svcadm을 입력하고 검색을 누른다.
pkgdepend(1)
pkgdepend(1) User Commands pkgdepend(1)
NAME
pkgdepend - Image Packaging System dependency analyzer
SYNOPSIS
/usr/bin/pkgdepend [options] command [cmd_options] [operands]
/usr/bin/pkgdepend generate [-IMm] -d dir [-d dir]
[-D name=value] [-k path] manifest_file
/usr/bin/pkgdepend resolve [-EmoSv] [-d output_dir]
[-e external_package_file]... [-s suffix]
manifest_file ...
DESCRIPTION
The pkgdepend command generates and resolves dependencies for packages.
A package might depend on files from other packages. The pkgdepend com‐
mand is typically used in two passes: file dependency generation and
file-to-package resolution.
The generate subcommand examines the content of a package and deter‐
mines what external files the package needs.
The resolve subcommand takes the list of files from the generate step,
and searches a reference set of packages to determine the names of the
packages that contain those dependent files. The reference set of pack‐
ages that are searched for the dependent files are the packages that
are currently installed on the publisher's system.
Several components of delivered files are used as sources of dependency
information:
ELF ELF headers in delivered files are analyzed for depen‐
dency information, with the -k and -D options modifying
the information obtained. For more details on ELF depen‐
dencies, see ldd and the Oracle Solaris 11.4 Linkers and
Libraries Guide.
Scripts Shell scripts that contain #! lines referencing an inter‐
preter result in a dependency on the package that deliv‐
ers that interpreter.
Python Python scripts are first analyzed as scripts. In addi‐
tion, any imports the script declares might also serve as
sources of dependency information.
Hard links Hard links in manifests result in a dependency on the
package that delivers the link target.
SMF Delivered SMF service manifests that include require_all
dependencies result in dependencies on the packages that
deliver the SMF manifests that provide those FMRIs.
OPTIONS
The following options are supported:
-?
--help
Display a usage message.
-R dir
Operate on the image rooted at dir. If no directory was specified
or determined based on environment, the default is /. See the
"Environment Variables" section for more information.
SUB-COMMANDS
The following subcommands are supported:
pkgdepend generate [-IMm] -d dir [-d dir] [-D name=value] [-k path]
manifest_file
Produce the dependencies on files of the manifest specified by man‐
ifest_file.
-I
Show the dependencies that are satisfied within manifest_file.
Do not use the result of -I with pkgdepend resolve.
-M
Display a list of file types that could not be analyzed.
-m
Repeat the original manifest with any discovered dependencies
added after.
-d dir
Add dir to a list of directories to search for the manifest's
files.
-D name=value
Add the value as a way to expand the token name in run paths
for ELF file dependencies.
-k path
Add the path to the list of run paths to search for kernel mod‐
ules. Using the -k option removes the default paths, which are
/kernel and /usr/kernel.
Run paths such as those specified by the -k option can also be
specified per action or per manifest by using the action or
manifest attribute pkg.depend.runpath. The value of the
pkg.depend.runpath attribute is a colon-separated string of the
paths to use. Setting any pkg.depend.runpath attributes in the
manifest or action overrides paths specified with the -k
option.
The special token $PKGDEPEND_RUNPATH can be used as one compo‐
nent of the pkg.depend.runpath attribute value in order to
include the standard system run path for the file being ana‐
lyzed.
In some cases, you might want to prevent automatic generation of
dependencies. For example, if a package delivers a sample Python
script that imports a set of modules, those modules imported by the
sample script are not dependencies for the package that delivers
the sample script. Use the action or manifest attribute
pkg.depend.bypass-generate to prevent generating dependencies
against the specified files.
The pkg.depend.bypass-generate values are Python regular expres‐
sions that match file names. The regular expressions are implicitly
anchored at the start and end of the file path. The value given in
the following example matches this/that but does not match some‐
thing/this/that/the/other.
pkg.depend.bypass-generate=this/that
For more information about Python regular expression syntax, use
the command pydoc re or see more complete documentation at
http://docs.python.org/dev/howto/regex.html.
When pkgdepend generate input manifests contain SMF manifest files,
any SMF services or instances declared by those SMF manifest files
are included in the pkgdepend output. These SMF services or
instances are included in the form of a set action with the name
org.opensolaris.smf.fmri.
pkgdepend resolve [-EmoSv] [-d output_dir] [-e external_pack‐
age_file]... [-s suffix] manifest_file ...
Transform dependencies on files into dependencies on the packages
that deliver those files. Dependencies are first resolved against
the manifests given on the command line and then against the pack‐
ages installed on the system. By default, the dependencies for each
manifest are placed in a file named manifest_file.res.
-e external_package_file
Only resolve against packages from the system whose names match
a pattern in external_package_file. This option can be speci‐
fied multiple times. The -e option cannot be used with the -S
option.
-E
If -e is specified, show the packages that were expected to be
external dependencies but were not external dependencies. Pack‐
ages that were expected to be external dependencies are pack‐
ages from the system whose names match a pattern in exter‐
nal_package_file.
If -e is not specified, show the external dependencies of the
resolved packages. External dependencies of the resolved pack‐
ages are packages not named on the command line that are tar‐
gets of dependencies in the resolved packages.
-m
Repeat the manifest, with any dependencies produced by the gen‐
erate step removed, before adding the resolved dependencies.
-o
Write the results to standard output. This option is intended
for human consumption. Appending this output to a file might
result in an invalid manifest. The -d or -s options are
strongly recommended instead of -o for use in a pipeline for
manifest processing.
-d output_dir
Write the resolved dependencies for each manifest provided in a
separate file in output_dir. By default, each file has the same
base name as the manifest that was the source of the dependen‐
cies written to that file.
-s suffix
For each output file, append suffix to the base name of the
file that was the source of the resolved dependencies. If suf‐
fix is not .suffix, a period (.) is prepended to suffix.
-S
Only resolve against the manifests given on the command line
and not against the manifests installed on the system.
-v
Include additional package dependency debugging metadata.
EXAMPLES
Example 1 Generate Dependencies
Generate the dependencies for the manifest written in foo, whose con‐
tent directory is in ./bar/baz, and store the results in foo.fdeps.
$ pkgdepend generate -d ./bar/baz foo > foo.fdeps
Example 2 Resolve Dependencies
Resolve the file dependencies in foo.fdeps and bar.fdeps against each
other and against the packages currently installed on the system.
$ pkgdepend resolve foo.fdeps bar.fdeps
$ ls *.res
foo.fdeps.res bar.fdeps.res
Example 3 Generate and Resolve Dependencies For Two Manifests
Generate the file dependencies for two manifests (foo and bar) and
retain all the information in the original manifests. Then resolve the
file dependencies and place the resulting manifests in ./res. These
resulting manifests can be used with pkgsend publish.
$ pkgdepend generate -d /proto/foo -m foo > ./deps/foo
$ pkgdepend generate -d /proto/bar -m bar > ./deps/bar
$ pkgdepend resolve -m -d ./res ./deps/foo ./deps/bar
$ ls ./res
foo bar
Example 4 Add Values To Tokens For ELF File Dependencies
Replace all PLATFORM tokens in the run paths in ELF files with sun4v
and sun4u while generating the dependencies for the manifest written in
foo whose content directory is in /.
$ pkgdepend generate -d / -D 'PLATFORM=sun4v' \
-D 'PLATFORM=sun4u' foo
Example 5 Specify a Kernel Module Directory
Specify /kmod as the directory in which to find kernel modules when
generating the dependencies for the manifest written in foo whose con‐
tent directory is in /.
$ pkgdepend generate -d / -k /kmod foo
Example 6 Bypass Dependency Generation
Append opt/python to the standard Python run path for a given Python
script, and bypass dependency generation against all Python modules
called test for a file delivered as opt/python/foo/file.py.
Avoid generating dependencies against any file delivered in
usr/lib/python2.7/vendor-packages/xdg.
$ cat manifest.py
set name=pkg.fmri value=pkg:/mypackage@1.0,1.0
set name=pkg.summary value="My test package"
dir path=opt mode=0755 group=sys owner=root
dir path=opt/python mode=0755 group=sys owner=root
dir path=opt/python/foo mode=0755 group=sys owner=root
file path=opt/python/__init__.py mode=0644 group=sys owner=root
file path=opt/python/foo/__init__.py mode=0644 group=sys owner=root
#
# Add runpath and bypass-generate attributes:
#
file path=opt/python/foo/file.py mode=0644 group=sys owner=root \
pkg.depend.bypass-generate=.*/test.py.* \
pkg.depend.bypass-generate=.*/testmodule.so \
pkg.depend.bypass-generate=.*/test.so \
pkg.depend.bypass-generate=usr/lib/python2.7/vendor-packages/xdg/.* \
pkg.depend.runpath=$PKGDEPEND_RUNPATH:/opt/python
$ pkgdepend generate -d proto manifest.py
ENVIRONMENT VARIABLES
PKG_IMAGE Specifies the directory that contains the image to use for
package operations. This value is ignored if -R is speci‐
fied.
EXIT STATUS
The following exit values are returned:
0 Everything worked.
1 An error occurred.
2 Invalid command line options were specified.
99 An unanticipated exception occurred.
ATTRIBUTES
See attributes(7) for descriptions of the following attributes:
tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
TRIBUTE VALUE _ Availabilitypackage/pkg _ Interface StabilityUncommit‐
ted
SEE ALSO
pkg(7)
Packaging and Delivering Software With the Image Packaging System in
Oracle Solaris 11.4
https://github.com/oracle/solaris-ips
Oracle Solaris 11.4 17 Nov 2017 pkgdepend(1)