From Fedora Project Wiki

m (Don't instruct packagers to use a dash followed by a suffix containing a dash.)
m (Remove pointless "new" from Addon Packages section. https://pagure.io/packaging-committee/issue/774)
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{DISPLAYTITLE:Guidelines for Naming Fedora Packages}}
{{DISPLAYTITLE:Guidelines for Naming Fedora Packages}}
<div style="float: right;" class="toclimit-2">__TOC__</div>
<div style="float: right; margin-left: 0.5em" class="toclimit-2">__TOC__</div>


{{admon/note|"Binary" packages|Throughout this guideline, the term "binary package" refers to the result of building a source package (using rpmbuild or mock, for example) even though it may contain no actual binaries.}}
{{admon/note|"Binary" packages|Throughout this guideline, the term "binary package" refers to the result of building a source package (using rpmbuild or mock, for example) even though it may contain no actual binaries.}}
Line 22: Line 22:
=== General Naming ===
=== General Naming ===


Package names should be in lower case and use dashes in preference to  
Package names SHOULD be in lower case and use dashes in preference to  
underscores.  You can take some cues from the name of the upstream tarball,  
underscores.  You can take some cues from the name of the upstream tarball,  
the project name from which this software came, and the name which has been used for this  
the project name from which this software came, and the name which has been used for this  
package by other distributions/packagers in the past.  You can also request  
package by other distributions/packagers in the past.  You can also request  
guidance from the upstream developers.  Do not just blindly follow those  
guidance from the upstream developers.  Do not just blindly follow those  
examples, however, as package names should strive to be consistent within  
examples, however, as package names SHOULD strive to be consistent within  
Fedora more than consistent between distributions.
Fedora more than consistent between distributions.


Line 42: Line 42:


=== Separators ===
=== Separators ===
When naming packages for Fedora, the maintainer must use the dash '-' as the delimiter for name parts. The maintainer must NOT use an underscore '_', a plus '+', or a period '.' as a delimiter.  Version numbers used in compat libraries do not need to omit the dot '.' or change it into a dash '-' (see [[#MultiplePackages| Multiple packages with the same base name]] for more info on this case).
When naming packages for Fedora, the maintainer MUST use the dash '-' as the delimiter for name parts. The maintainer MUST NOT use an underscore '_', a plus '+', or a period '.' as a delimiter.  Version numbers used in compat libraries do not need to omit the dot '.' or change it into a dash '-' (see [[#MultiplePackages| Multiple packages with the same base name]] for more info on this case).


There are a few exceptions to the no underscore '_' rule.
There are a few exceptions to the no underscore '_' rule.
Line 66: Line 66:


=== When Upstream Naming is outside of the specified character set ===
=== When Upstream Naming is outside of the specified character set ===
Fedora recognizes that the task of converting text to the specified ASCII character set (aka transliteration) is difficult. Accordingly, when the upstream name is outside of the specified ASCII character set, the Fedora package maintainer should first contact the upstream for that software and ask them for a transliteration of the name for Fedora to use.
Fedora recognizes that the task of converting text to the specified ASCII character set (aka transliteration) is difficult. Accordingly, when the upstream name is outside of the specified ASCII character set, the Fedora package maintainer SHOULD first contact the upstream for that software and ask them for a transliteration of the name for Fedora to use.


If (and only if) the upstream is unable, unwilling, or unavailable to provide a transliterated name, the Fedora packager must choose to either perform their own transliteration, or withdraw the package from consideration in Fedora.
If (and only if) the upstream is unable, unwilling, or unavailable to provide a transliterated name, the Fedora packager must choose to either perform their own transliteration, or withdraw the package from consideration in Fedora.


When deciding how to transliterate a package name, the Fedora packager should look to see what (if any) other distributions have done for that package's name, and take that into account.
When deciding how to transliterate a package name, the Fedora packager SHOULD look to see what (if any) other distributions have done for that package's name, and take that into account.


=== Extra Provides ===
=== Extra Provides ===
Transliterated packages may Provide: the original, non-transliterated name, but are not required to do so.
Transliterated packages MAY Provide: the original, non-transliterated name, but are not required to do so.


== Conflicting Package Names ==
== Conflicting Package Names ==
Line 79: Line 79:


== Multiple packages with the same base name ==
== Multiple packages with the same base name ==
For many reasons, it is sometimes advantageous to keep multiple versions of a package in Fedora to be installed simultaneously. When doing so, the package name MUST reflect this fact. One package should use the base name (with no version information).  All other packages derived from it MUST include the base name suffixed by either:
For many reasons, it is sometimes advantageous to keep multiple versions of a package in Fedora to be installed simultaneously. When doing so, the package name MUST reflect this fact. One package SHOULD use the base name (with no version information).  All other packages derived from it MUST include the base name suffixed by either:
* the package version (see below)
* a dash followed by a descriptive suffix such as "stable" which provides some indication as to the nature of the packaged version.


'''Example:'''
* The package version, which SHOULD include the periods present in the original version.
<BR>The python-sqlalchemy package occasionally has multiple versions in Fedora for backwards compatibility.<BR>
** If the base package name ends with a digit, a single underscore ("_") MUST be appended to the name, and the version MUST be appended to that, in order to avoid confusion over where the name ends and the version begins.
The most current version of python-sqlalchemy has <code>Name: python-sqlalchemy</code> <BR>
** If the base package name does not end with a digit, the version MUST be directly appended to the package name with no intervening separator.
The previous version of python-sqlalchemy has <code>Name: python-sqlalchemy0.5</code> <BR>
* a hyphen ("-") followed by a descriptive suffix such as "stable" which provides some indication as to the nature of the packaged version.  
Removing the dot in the version number may be optionally done and is seen frequently in older packages.  Keeping the dot is preferred in new packages as it is less ambiguous what version foo1.1.6 refers to than foo116.<BR>
Note that we do not use delimiters in the name in this situation.  We attach the version number to the name.


Please also note that strings such as "-latest" can often become misleading over time if the package (in *all* active Fedora releases) is not kept updated with the latest upstream version.
'''Examples:'''
 
* The python-sqlalchemy package occasionally has multiple versions in Fedora for backwards compatibility. The most current version of python-sqlalchemy is named <code>python-sqlalchemy</code> and an older supported version is <code>python-sqlalchemy0.5</code>.  No delimiter is used in this situation.
=== Underscores ===
* The most current version of the v8 package is named <code>v8</code>.  In order to package version "3.13", the package MUST be named <code>v8_3.13</code>.
There is one time when a delimiter between a compat package's base name and the version are necessary.  When the compat package's base name ends in a digit the version '''MUST''' be separated from the rest of the package with an underscore.
 
'''Example'''
<BR>We want to have a backwards compatible version of the v8 package in Fedora.<BR>
The most current version of v8 has <code>Name: v8</code> <BR>
The previous version of v8 has <code>Name: v8_3.13</code> <BR>
Note that "v8" and "3.13" are separated by an underscore.  This makes the package name much more readable than <code>v83.13</code>.


Please also note that strings such as "-latest" can often become misleading over time if the package (in '''all''' active Fedora releases) is not kept updated with the latest upstream version.


=== Documentation Packages with Embedded OS versioning ===
=== Documentation Packages with Embedded OS versioning ===
Line 106: Line 96:


== Case Sensitivity ==
== Case Sensitivity ==
In Fedora packaging, the maintainer should use his/her best judgement when considering how to name the package. While case sensitivity is not a mandatory requirement, case should only be used where necessary. Keep in mind to respect the wishes of the upstream maintainers. If they refer to their application as "ORBit", you should use "ORBit" as the package name, and not "orbit". However, if they do not express any preference of case, you should default to lowercase naming.<BR>
In Fedora packaging, the maintainer uses their best judgement when considering how to name the package. While case sensitivity is not a mandatory requirement, case SHOULD only be used where necessary. Keep in mind to respect the wishes of the upstream maintainers. If they refer to their application as "ORBit", you SHOULD use "ORBit" as the package name, and not "orbit". However, if they do not express any preference of case, you SHOULD default to lowercase naming.<BR>
<BR>
<BR>
The exception to this is for perl module packaging. The CPAN Group and Type should be capitalized in the name, as if they were proper nouns . (Refer to '''[[#AddonPerl|  Addon Packages (perl modules)]] ''' for details.)
The exception to this is for perl module packaging. The CPAN Group and Type SHOULD be capitalized in the name, as if they were proper nouns . (Refer to '''[[#AddonPerl|  Addon Packages (perl modules)]] ''' for details.)


== Renaming/replacing existing packages ==
== Renaming/replacing existing packages ==
Line 114: Line 104:


== Documentation Subpackages ==
== Documentation Subpackages ==
Large documentation files should go in a subpackage. This subpackage must be named with the format: <code>%{name}-doc</code> .
Large documentation files SHOULD go in a subpackage. This subpackage must be named with the format: <code>%{name}-doc</code> .
The definition of large is left up to the packager's best judgement, but is not restricted to size. Large can refer to either size or quantity.
The definition of large is left up to the packager's best judgement, but is not restricted to size. Large can refer to either size or quantity of files.


== Font Packages ==
== Font Packages ==
Line 121: Line 111:


== Addon Packages ==
== Addon Packages ==
If a new package is considered an "addon" package that enhances or adds a new functionality to an existing Fedora package without being useful on its own, its name should reflect this fact.<BR>
If a package is considered an "addon" package that enhances or adds functionality to an existing Fedora package without being useful on its own, its name SHOULD reflect this fact.<BR>
<BR>
<BR>
The new package ("child") should prepend the "parent" package in its name, in the format: <code>%{parent}-%{child}</code>.
The new package ("child") SHOULD prepend the "parent" package in its name, in the format: <code>%{parent}-%{child}</code>.


'''Examples:'''
'''Examples:'''
Line 157: Line 147:
Packages of emacs add-on components (code that adds additional functionality to emacs compatible editors) have their own naming
Packages of emacs add-on components (code that adds additional functionality to emacs compatible editors) have their own naming
scheme. It is often the case that a component will add functionality to several different compatible editors, such as GNU
scheme. It is often the case that a component will add functionality to several different compatible editors, such as GNU
Emacs and XEmacs (and possibly development versions of these editors). The package name should take into account the upstream name of the
Emacs and XEmacs (and possibly development versions of these editors). The package name SHOULD take into account the upstream name of the
emacs component.
emacs component.


Where a component adds functionality to more than one emacs compatible editor, the package name should be of the form emacs-common-$NAME. In this
Where a component adds functionality to more than one emacs compatible editor, the package name SHOULD be of the form emacs-common-$NAME. In this
case, the main package should contain only files common to all emacs compatible editors, and the code specific to each should be placed in a
case, the main package SHOULD contain only files common to all emacs compatible editors, and the code specific to each SHOULD be placed in a
subpackage reflecting the specific editor $EDITOR-$NAME eg. xemacs-$NAME, emacs-$NAME (the latter being the package specific to GNU Emacs). An
subpackage reflecting the specific editor $EDITOR-$NAME eg. xemacs-$NAME, emacs-$NAME (the latter being the package specific to GNU Emacs). An
example of this scheme can be found in the package emacs-common-muse.
example of this scheme can be found in the package emacs-common-muse.


Where a component is designed to add functionality to only a single emacs compatible editor, the main package name should reflect this by being
Where a component is designed to add functionality to only a single emacs compatible editor, the main package name SHOULD reflect this by being
called $EDITOR-$NAME. An example of this situation can be found in the package emacs-auctex, which is built only for GNU Emacs.
called $EDITOR-$NAME. An example of this situation can be found in the package emacs-auctex, which is built only for GNU Emacs.


Line 177: Line 167:


=== erlang modules ===
=== erlang modules ===
Packages of erlang modules (thus they rely on erlang as a parent) have their own naming scheme. They should take into account the upstream name of the erlang module. This makes a package name format of <code>erlang-$NAME</code>. When in doubt, use the name of the module that you use when importing it into a script.
Packages of erlang modules (thus they rely on erlang as a parent) have their own naming scheme. They SHOULD take into account the upstream name of the erlang module. This makes a package name format of <code>erlang-$NAME</code>. When in doubt, use the name of the module that you use when importing it into a script.


'''Example: '''
'''Example: '''
Line 188: Line 178:


=== gnome shell extensions ===
=== gnome shell extensions ===
Packages that extend gnome shell should begin with the prefix <code>gnome-shell-extension-</code>.  In particular, this prefix should not be pluralized (ie: it should '''not''' be <code>gnome-shell-extensions</code>).
Packages that extend gnome shell SHOULD begin with the prefix <code>gnome-shell-extension-</code>.  In particular, this prefix SHOULD NOT be pluralized (ie: it SHOULD NOT be <code>gnome-shell-extensions</code>).


=== OCaml modules ===
=== OCaml modules ===
OCaml modules, libraries and syntax extensions should be named ocaml-foo.  Examples include: ocaml-extlib, ocaml-ssl.
OCaml modules, libraries and syntax extensions SHOULD be named ocaml-foo.  Examples include: ocaml-extlib, ocaml-ssl.


This naming does not apply to applications written in OCaml, which can be given their normal name.  Examples include: mldonkey, virt-top, cduce.
This naming does not apply to applications written in OCaml, which can be given their normal name.  Examples include: mldonkey, virt-top, cduce.
Line 200: Line 190:


=== perl modules ===
=== perl modules ===
Packages of perl modules (thus they rely on perl as a parent) use a slightly different naming scheme. They should be named perl-CPANDIST where CPANDIST is the name of the packaged CPAN module distribution (which is almost always also the unit of perl module packaging).  In the rare cases when a CPAN module distribution needs to be split into smaller subpackages eg. due to dependencies, the extra subpackages should be named perl-CPANDIST-Something.<BR>
Packages of perl modules (thus they rely on perl as a parent) use a slightly different naming scheme. They SHOULD be named perl-CPANDIST where CPANDIST is the name of the packaged CPAN module distribution (which is almost always also the unit of perl module packaging).  In the rare cases when a CPAN module distribution needs to be split into smaller subpackages eg. due to dependencies, the extra subpackages SHOULD be named perl-CPANDIST-Something.<BR>


'''Examples: '''
'''Examples: '''
Line 218: Line 208:
does not generally produce a binary package of the same name.
does not generally produce a binary package of the same name.


The package name should reflect the upstream name of the Python module, and
The package name SHOULD reflect the upstream name of the Python module, and
should generally take into account the name of the module used when importing
SHOULD generally take into account the name of the module used when importing
it in Python scripts.  This name will be prefixed depending on the type of the package.
it in Python scripts.  This name will be prefixed depending on the type of the package.


Line 226: Line 216:


=== Python source package naming ===
=== Python source package naming ===
Source packages for Python modules should be named using the <code>python-</code> prefix.
Source packages for Python modules SHOULD be named using the <code>python-</code> prefix.


'''Examples: '''
'''Examples: '''
Line 236: Line 226:
However, it does occur that two separately maintained modules have the same
However, it does occur that two separately maintained modules have the same
name but are targeted against different versions of Python.  In this case,
name but are targeted against different versions of Python.  In this case,
source package for the software targeted at Python2 should take a
source package for the software targeted at Python2 SHOULD take a
<code>python2-</code> prefix, and the source package for the Python3 version
<code>python2-</code> prefix, and the source package for the Python3 version
should have a name beginning with <code>python3-</code>.
SHOULD have a name beginning with <code>python3-</code>.


==== Python2 binary package naming ====
==== Python2 binary package naming ====
Python2 binary packages should be named using a <code>python2-</code> prefix.
Python2 binary packages MUST be named using a <code>python2-</code> prefix.


==== Python3 binary package naming ====
==== Python3 binary package naming ====
Python3 binary packages shoud be named with a prefix of <code>python3-</code>.
Python3 binary packages MUST be named with a prefix of <code>python3-</code>.
 
==== Outdated Python package naming conventions ====
Previously there were two other conventions for Python package naming, and some
packages using these naming rules persist in Fedora.
 
* Python2 module binary packages were named using a <code>python-</code> prefix.
 
* Python module packages with names containing "py" were not required to use any prefix.
 
Neither of these may be used for new Python packages.


=== R modules ===
=== R modules ===
Packages of R modules (thus they rely on R as a parent) have their own naming scheme. They should take into account the upstream name of the R module. This makes a package name format of <code>R-$NAME</code>. When in doubt, use the name of the module that you type to import it in R.
Packages of R modules (thus they rely on R as a parent) have their own naming scheme. They SHOULD take into account the upstream name of the R module. This makes a package name format of <code>R-$NAME</code>. When in doubt, use the name of the module that you type to import it in R.


'''Examples: '''
'''Examples: '''
Line 282: Line 262:


=== TeX ===
=== TeX ===
As Fedora has switched TeX environments in the past, TeX packages should not
As Fedora has switched TeX environments in the past, TeX packages SHOULD not
be named after the TeX environment (TeX Live or teTeX) but instead should
be named after the TeX environment (TeX Live or teTeX) but instead SHOULD
carry the prefix "tex-".
carry the prefix "tex-".



Revision as of 16:56, 19 July 2018

Note.png
"Binary" packages
Throughout this guideline, the term "binary package" refers to the result of building a source package (using rpmbuild or mock, for example) even though it may contain no actual binaries.

Versioning guidelines have moved

This document previously contained information on both naming and versioning. The versioning guidelines are now at Packaging:Versioning.

Common Character Set for Package Naming

While Fedora is an international community, for consistency and usability, there needs to be a common character set for package naming.

Specifically, all Fedora packages must be named using only the following ASCII characters. These characters are displayed here:

abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789-._+

But do check #Separators for additional restrictions on using the -._+ characters.

General Naming

Package names SHOULD be in lower case and use dashes in preference to underscores. You can take some cues from the name of the upstream tarball, the project name from which this software came, and the name which has been used for this package by other distributions/packagers in the past. You can also request guidance from the upstream developers. Do not just blindly follow those examples, however, as package names SHOULD strive to be consistent within Fedora more than consistent between distributions.

Additionally, it is possible that the upstream name does not fall into the Common Character Set . If this is the case, refer to: When Upstream Naming is outside of the specified character set .

Also remember to check whether the type of package you are packaging has specific rules for naming. Font packages and the various sorts of addon packages, for instance.

Separators

When naming packages for Fedora, the maintainer MUST use the dash '-' as the delimiter for name parts. The maintainer MUST NOT use an underscore '_', a plus '+', or a period '.' as a delimiter. Version numbers used in compat libraries do not need to omit the dot '.' or change it into a dash '-' (see Multiple packages with the same base name for more info on this case).

There are a few exceptions to the no underscore '_' rule.

arptables_jf
dhcpv6_client
java_cup
knm_new
libart_lgpl
lm_sensors
microcode_ctl
nss_db
nss_ldap
sg3_utils
tcp_wrappers

If in doubt, ask on devel@lists.fedoraproject.org.

When Upstream Naming is outside of the specified character set

Fedora recognizes that the task of converting text to the specified ASCII character set (aka transliteration) is difficult. Accordingly, when the upstream name is outside of the specified ASCII character set, the Fedora package maintainer SHOULD first contact the upstream for that software and ask them for a transliteration of the name for Fedora to use.

If (and only if) the upstream is unable, unwilling, or unavailable to provide a transliterated name, the Fedora packager must choose to either perform their own transliteration, or withdraw the package from consideration in Fedora.

When deciding how to transliterate a package name, the Fedora packager SHOULD look to see what (if any) other distributions have done for that package's name, and take that into account.

Extra Provides

Transliterated packages MAY Provide: the original, non-transliterated name, but are not required to do so.

Conflicting Package Names

Conflicting package names, even if they differ by case alone, are not allowed. Please see Packaging:Conflicts#Conflicting Package Names for more details.

Multiple packages with the same base name

For many reasons, it is sometimes advantageous to keep multiple versions of a package in Fedora to be installed simultaneously. When doing so, the package name MUST reflect this fact. One package SHOULD use the base name (with no version information). All other packages derived from it MUST include the base name suffixed by either:

  • The package version, which SHOULD include the periods present in the original version.
    • If the base package name ends with a digit, a single underscore ("_") MUST be appended to the name, and the version MUST be appended to that, in order to avoid confusion over where the name ends and the version begins.
    • If the base package name does not end with a digit, the version MUST be directly appended to the package name with no intervening separator.
  • a hyphen ("-") followed by a descriptive suffix such as "stable" which provides some indication as to the nature of the packaged version.

Examples:

  • The python-sqlalchemy package occasionally has multiple versions in Fedora for backwards compatibility. The most current version of python-sqlalchemy is named python-sqlalchemy and an older supported version is python-sqlalchemy0.5. No delimiter is used in this situation.
  • The most current version of the v8 package is named v8. In order to package version "3.13", the package MUST be named v8_3.13.

Please also note that strings such as "-latest" can often become misleading over time if the package (in all active Fedora releases) is not kept updated with the latest upstream version.

Documentation Packages with Embedded OS versioning

Documentation packages (as approved by the Fedora Documentation Project) can be named with the OS version number in the package name to allow parallel installation of multiple versions, in cases where the documentation is specific to a release of Fedora and there is value in having multiple versions simultaneously installed.

Case Sensitivity

In Fedora packaging, the maintainer uses their best judgement when considering how to name the package. While case sensitivity is not a mandatory requirement, case SHOULD only be used where necessary. Keep in mind to respect the wishes of the upstream maintainers. If they refer to their application as "ORBit", you SHOULD use "ORBit" as the package name, and not "orbit". However, if they do not express any preference of case, you SHOULD default to lowercase naming.

The exception to this is for perl module packaging. The CPAN Group and Type SHOULD be capitalized in the name, as if they were proper nouns . (Refer to Addon Packages (perl modules) for details.)

Renaming/replacing existing packages

See: Packaging:Guidelines#Renaming.2FReplacing_Existing_Packages

Documentation Subpackages

Large documentation files SHOULD go in a subpackage. This subpackage must be named with the format: %{name}-doc . The definition of large is left up to the packager's best judgement, but is not restricted to size. Large can refer to either size or quantity of files.

Font Packages

Packages containing fonts must be named [foundryname-]projectname[-fontfamilyname]-fonts, in lowercase. For a full explanation, see Packaging/FontsPolicy#Naming.

Addon Packages

If a package is considered an "addon" package that enhances or adds functionality to an existing Fedora package without being useful on its own, its name SHOULD reflect this fact.

The new package ("child") SHOULD prepend the "parent" package in its name, in the format: %{parent}-%{child}.

Examples:

gnome-applet-netmon (netmon applet for gnome, relies on gnome)
php-adodb (adodb functionality for php, relies on php)
python3-twisted (the twisted module for python3, relies on python3)
xmms-cdread (direct cd read functionality for xmms, relies on xmms)

When the addon package is a language binding, note that the language itself is always the parent. Thus, a lua binding for the "randomdb" database would be lua-randomdb, not randomdb-lua. Also note that some packages may have grandfathered names using the opposite ordering.

There are some exceptions to this general addon package naming policy, and they are noted below.

httpd, pam, and SDL

Packages that rely on Apache httpd, pam, or SDL as a parent use a slightly different naming scheme. pam and SDL addons use the format: %{parent}_%{child}, with an underscore "_" as a delimiter. Apache httpd addons use the format: mod_%{child}, with an underscore "_" as a delimiter. This naming scheme is usually the same as used for the source tarball name.

Examples:

mod_perl (perl components for Apache httpd, relies on httpd)
pam_krb5 (krb5 components for pam, relies on pam)
SDL_gfx (Additional graphics components for SDL, relies on SDL)
SDL_ttf (TrueType font rendering support for SDL, relies on SDL)

Eclipse plugins

Eclipse plugin packages MUST be named eclipse-<projectname>. For example, a package of the AnyEdit plugin for Eclipse would be named eclipse-anyedit.

emacs components

Packages of emacs add-on components (code that adds additional functionality to emacs compatible editors) have their own naming scheme. It is often the case that a component will add functionality to several different compatible editors, such as GNU Emacs and XEmacs (and possibly development versions of these editors). The package name SHOULD take into account the upstream name of the emacs component.

Where a component adds functionality to more than one emacs compatible editor, the package name SHOULD be of the form emacs-common-$NAME. In this case, the main package SHOULD contain only files common to all emacs compatible editors, and the code specific to each SHOULD be placed in a subpackage reflecting the specific editor $EDITOR-$NAME eg. xemacs-$NAME, emacs-$NAME (the latter being the package specific to GNU Emacs). An example of this scheme can be found in the package emacs-common-muse.

Where a component is designed to add functionality to only a single emacs compatible editor, the main package name SHOULD reflect this by being called $EDITOR-$NAME. An example of this situation can be found in the package emacs-auctex, which is built only for GNU Emacs.


Examples:

emacs-common-muse (muse component for all emacs compatible editors)
xemacs-muse (muse component subpackage that provides XEmacs specific files)
emacs-autex (autex component only for GNU Emacs)

erlang modules

Packages of erlang modules (thus they rely on erlang as a parent) have their own naming scheme. They SHOULD take into account the upstream name of the erlang module. This makes a package name format of erlang-$NAME. When in doubt, use the name of the module that you use when importing it into a script.

Example:

erlang-esdl (erlang module named esdl)

GAP

See the GAP guidelines for the proper naming of GAP addon packages.

gnome shell extensions

Packages that extend gnome shell SHOULD begin with the prefix gnome-shell-extension-. In particular, this prefix SHOULD NOT be pluralized (ie: it SHOULD NOT be gnome-shell-extensions).

OCaml modules

OCaml modules, libraries and syntax extensions SHOULD be named ocaml-foo. Examples include: ocaml-extlib, ocaml-ssl.

This naming does not apply to applications written in OCaml, which can be given their normal name. Examples include: mldonkey, virt-top, cduce.

LibreOffice extensions

Packages of LibreOffice extensions (thus they rely on LibreOffice as a parent) have their own naming scheme. They must take into account the upstream name of the LibreOffice extension. This makes a package name format of libreoffice-$NAME.


perl modules

Packages of perl modules (thus they rely on perl as a parent) use a slightly different naming scheme. They SHOULD be named perl-CPANDIST where CPANDIST is the name of the packaged CPAN module distribution (which is almost always also the unit of perl module packaging). In the rare cases when a CPAN module distribution needs to be split into smaller subpackages eg. due to dependencies, the extra subpackages SHOULD be named perl-CPANDIST-Something.

Examples:

perl-Archive-Zip (Archive-Zip is the CPAN distribution name)
perl-Cache-Cache (Cache-Cache is the CPAN distribution name)

php modules

For details on the PHP naming scheme, see Packaging/PHP#NamingScheme .

Python modules

Python packaging is complicated by the fact that there are two partially incompatible language versions in use, here called Python2 and Python3. However, the common case is for one source package to produce a binary package for each Python version, and this results in a naming convention where the source package does not generally produce a binary package of the same name.

The package name SHOULD reflect the upstream name of the Python module, and SHOULD generally take into account the name of the module used when importing it in Python scripts. This name will be prefixed depending on the type of the package.

Note that when a module that has a dot in its name, the usual rule about changing "." to "-" applies.

Python source package naming

Source packages for Python modules SHOULD be named using the python- prefix.

Examples:

python-psycopg  (python module named psycopg)
python-PyQt4 (python module named PyQt4)

However, it does occur that two separately maintained modules have the same name but are targeted against different versions of Python. In this case, source package for the software targeted at Python2 SHOULD take a python2- prefix, and the source package for the Python3 version SHOULD have a name beginning with python3-.

Python2 binary package naming

Python2 binary packages MUST be named using a python2- prefix.

Python3 binary package naming

Python3 binary packages MUST be named with a prefix of python3-.

R modules

Packages of R modules (thus they rely on R as a parent) have their own naming scheme. They SHOULD take into account the upstream name of the R module. This makes a package name format of R-$NAME. When in doubt, use the name of the module that you type to import it in R.

Examples:

R-mAr (R module named mAr)
R-RScaLAPACK (R module named RScaLAPACK)
R-waveslim (R module named waveslim)

Sugar Activities

The name for all packaged Sugar activities must be prefixed with sugar-. For more details, see Packaging/SugarActivityGuidelines .

Tcl/Tk extensions

The name for all packaged Tcl/Tk extensions must be prefixed with tcl-. This rule applies even for Tcl/Tk packages that are already prefixed with tcl in the name. For more details, see Packaging/Tcl#NamingConventions.

locales

If a package adds a locale to an existing parent package, then it can use an underscore in the locale.

Examples:

ttfonts-zh_TW (adds zh_TW locale fonts in ttfonts family)
ttfonts-zh_CN (adds zh_CN locale fonts in ttfonts family)

TeX

As Fedora has switched TeX environments in the past, TeX packages SHOULD not be named after the TeX environment (TeX Live or teTeX) but instead SHOULD carry the prefix "tex-".

Authorship

The original author of these guidelines was Tom 'spot' Callaway. They are now maintained by the Packaging Committee with input from the Fedora community.