is there a list of packages that can be assumed to be installed on any
given Fedora system, and thus never have to be listed as dependencies?
I guess this isn't much of an issue in practice, I'm just wondering if
there is a *defined* set of packages that make up a minimal Fedora
install / minimal build environment?
Packaging Guidelines for Cron Files says to use Requires: crontabs since the crontabs package requires /etc/cron.d itself, which is provided by cron daemon packages (like cronie). But the former no longer appears to be true--Fedora 28's crontabs package does not require /etc/cron.d (but cronie does provide it). How should this guideline be updated?
Cron Job Files Packaging
Packages with cron job files must have an explicit Requires: crontabs. Since crontabs requires /etc/cron.d and all cron daemon packages create (and own) that directory, crontabs serves as a virtual requires for cron daemon functionality.
Example of cron job packaging
On 05. 02. 19 0:44, Eli Young wrote:
> Python packages can specify extras dependencies, which are sets of dependencies not required for core functionality, and which generally correspond to some feature. These can then be specified by downstream consumers of the package. For example, requests has an entry in extras called security, which currently adds requirements of python packages pyOpenSSL >= 0.14, cryptography >= 1.3.4, and idna >= 2.0.0. A downstream consumer that wants to use this would add a dependency on requests[security].
> From what I can tell, the current practice in Fedora packaging is to ignore these. This simplifies packaging Python modules that have extras specified, but ultimately pushes the specification of those dependencies down into every consumer of the package, whether users or other packages.
> As an example of this, I currently maintain the python-dns-lexicon package, which provides a common CLI and API for various different DNS providers. Some of the providers have additional dependencies that are necessary to function, and which are specified as extras. The Plesk provider, for example, also requires python-xmltodict. In line with what appears to standard practice, extra dependencies are not currently installed with the broader python-dns-lexicon package. If, however, a user or dependent package wants to utilize the Plesk functionality of python-dns-lexicon, they now need to know that python-xmltodict needs to be installed, and will need to check whenever the package updates as to whether or not that has changed.
> How should we be handling this? Right now, it seems that most packages follow this behavior of punting on the responsibility to package consumers. Should this continue? If not, how should we handle things? Should we just include all extras dependencies in the parent package? Alternatively, should we have dummy/meta subpackages for extras that require the parent package as well as any extras dependencies (e.g. python-dns-lexicon-plesk would require python-dns-lexicon and python-xmltodict)?
This (metapackages) is what I've done in python-trimesh:
I'd still consider this on case by case basis instead of developing a general
solution, sometimes a simple Recommends works. Sometimes, it's more complicated.
I'm CCing packaging and python to get more attention to this, but please keep
the discussion on devel, so it's not shattered.
> : https://github.com/requests/requests/blob/v2.21.0/setup.py#L105
> : https://github.com/AnalogJ/lexicon/blob/v3.0.6/setup.py#L101