|Version 3 (modified by 7 years ago) ( diff ),|
This document defines the policy for creating packages.
Multiple Packages per Software
Installation files of a software shall be put into separated packages according to their purpose. For a software "foo":
- Package "foo": Contains all runtime files, i.e. everything needed to "run" the software. This may include executables (e.g. executable "bin/foo"), shared libraries (e.g. "lib/libfoo.so"), data files (e.g. "data/foo/foo-runtime-data").
- Package "foo_devel": Contains only the files needed for development. This includes header files and static libraries. Shared libraries are not to be included. Instead the package must declare package "foo" with the matching version as a requirement.
- Package "foo_doc": Contains the documentation for using "foo".
- Package "foo_devel_doc": Contains the documentation for "foo" development, like API documentation etc.
- Package "foo_debuginfo": Contains the debug information for the package "foo".
If multiple packages are defined, they must not contain any common files.
If a software contains client and server software that can be used independently from each other, two separate sets of packages shall be created.
A package "foo" must declare the following provided resolvables:
- "foo=<version>" with <version> naming the exact version of the package.
- "cmd:<name>=<version>" for each executable <name> with version <version> installed in "bin/". This includes a declaration for "cmd:foo", if there is an executable named like the package. Any instance of '-' in <name> shall be replaced by '_'.
- "lib:<name>=<version>" for each shared library <name> (not including a suffix, e.g. "libfoo") with version <version> installed in "lib/". Any instance of '-' in <name> shall be replaced by '_'.
If the backward compatibility of a resolvable is known, a "compat >= <compatibleVersion>" shall be added accordingly.
If a package "foo" provides documentation (which it should, of course), in many cases that can be provided in different formats:
- html documentation is preferred and should be installed into <prefix>/documentation/html/foo
- man-pages is the preferred format for terminal and should be installed into the corresponding folders in <prefix>/documentation/man/
- info files are provided by many packages, if at all desirable, they should be installed into <prefix>documentation/info/. One problem with info files is that all packages currently contain a file named <prefix>/documentation/info/dir, which supposedly is the list of all available info files, but since each package provides an instance of this file containing only its own info files, an arbitrary dir file is made visible via packagefs.