Every package gets a name which must be unique within the project. It is recommended to adapt the name of the original package or tarball. It is also a good idea to follow the names of other distributions to not confuse users that deal with other distributions as well.

A few examples:

GNU bison -> bison
Glibc -> glibc

Sub-package names

Some packages generate more than one sub-package since it is handy to split packages into smaller parts that can be optionally installed - or not. For that we also have a naming convention which is strongly recommended to be followed.


It is very common to keep libraries in a sub-package since sometimes other packages link against them and so they can be installed without having the main program around. Library packages should be called %{name}-libs and should use the LIBS template.

Development Headers

Development headers and other development files must never be shipped with the main package unless the main package is a development tool as well (like gcc).

Use the DEVEL template and possibly add more files manually.

(Optional) Utilities

Some packages come with debugging tools that are usually not used. These should then be put into an extra package called ${name}-utils. There is no template for this.


Debug information is stripped from the main packages so that they will consume less space on disk and in memory. However this information is needed to debug packages. Every package with binary data should have a debuginfo package called %{name}-debuginfo that is built from the DEBUGINFO template.


Modules for scripting languages should be put into extra sub-packages with names of the same pattern as if they would have been built on their own.

Sub-module packages for scripting languages


Python packages are named like python-$name where the name variable is the name of the module. If unsure what $name is meant to be use the string that is used to import the module.

This rule does not apply to packages that have a "py" or "Py" in its name like pyliblzma. If there is a dot . in the name, it MUST be replaced by a dash -.


Perl packages are named like perl-$name where the name variable is the name of the module. If unsure what $name is meant to be use the string that is used to import the module.


Valid characters

Packages in the IPFire distributions may only contain one of the following characters:


The underscore _ is not allowed to be used as a delimiter. The use is exceptional for packages which have the underscore in the upstream name (like lm_sensors). If you want to use a delimiter to create a sub-package a dash - is to be used.


It may be advantageous to have multiple versions of one package in the distribution (Berkeley DB), when it is recommended to add a major number to the name:db4. Do not use delimiters here (NOT db-4).