2.7. Package Layout

Each Software Collection's layout consists of the metapackage, which installs a subset of other packages, and a number of the Software Collection's packages, which are installed within the Software Collection namespace.

2.7.1. Metapackage

Each Software Collection includes a metapackage, which installs a subset of the Software Collection's packages that are essential for the user to perform most common tasks with the Software Collection. For example, the essential packages can provide the Perl language interpreter, but no Perl extension modules. The metapackage contains a basic file system hierarchy and delivers a number of the Software Collection's scriptlets.
The purpose of the metapackage is to make sure that all essential packages in the Software Collection are properly installed and that it is possible to enable the Software Collection.
The metapackage produces the following packages that are also part of the Software Collection:
The main package: %scl
The main package in the Software Collection contains dependencies of the base packages, which are included in the Software Collection. The main package does not contain any files.
When specifying dependencies for your Software Collection's packages, ensure that no other package in your Software Collection depends on the main package. The purpose of the main package is to install only those packages that are essential for the user to perform most common tasks with the Software Collection.
Normally, the main package does not specify any build time dependencies (for instance, packages that are only build time dependencies of another Software Collection's packages).
For example, if the name of the Software Collection is myorganization-ruby193, then the main package macro is expanded to:
myorganization-ruby193
The runtime subpackage: name-runtime
The runtime subpackage in the Software Collection owns the Software Collection's file system and delivers the Software Collection's scriptlets. This package needs to be installed for the user to be able to use the Software Collection.
For example, if the name of the Software Collection is myorganization-ruby193, then the runtime subpackage macro is expanded to:
myorganization-ruby193-runtime
The build subpackage: name-build
The build subpackage in the Software Collection delivers the Software Collection's build configuration. It contains RPM macros needed for building packages into the Software Collection. The build subpackage is optional and can be excluded from the Software Collection.
For example, if the name of the Software Collection is myorganization-ruby193, then the build subpackage macro is expanded to:
myorganization-ruby193-build
The contents of the myorganization-ruby193-build subpackage are shown below:
$ cat /etc/rpm/macros.ruby193-config
%scl myorganization-ruby193
The scldevel subpackage: name-scldevel
The scldevel subpackage in the %scl Software Collection contains development files, which are useful when developing packages of another Software Collection that depends on the %scl Software Collection. The scldevel subpackage is optional and can be excluded from the %scl Software Collection.
For example, if the name of the Software Collection is myorganization-ruby193, then the scldevel subpackage macro is expanded to:
myorganization-ruby193-scldevel
For more information about the scldevel subpackage, see Section 4.1, “Providing an scldevel Subpackage”.