by Adam Šamalík
(independent of the distribution)
(different variants or different generations)
(mostly because of conflicting dependencies)
Fast updates
& latest versions?
Slow updates &
stable versions?
Includes the kernel, glibc, and other basic tools and libraries with proven long-term ABI stability.
Similar concept to Android or iPhone apps.
Like a database, Firefox, or a LAMP stack.
Defining its components, an API, a build recipe,
and install profiles.
"Stop it! We want to see some code, Adam!"
document: modulemd
version: 1
data:
# An ID of the module.
name: foo
stream: stream-name
version: 20160927144203
# What's the module about?
summary: An example module
description: >
A module for the demonstration of the metadata format. Also,
the obligatory lorem ipsum dolor sit amet goes right here.
# How can I use it? How can I change it? Can I sell it?
license:
module:
- MIT
content:
- Beerware
- GPLv2+
# Where does it live?
references:
community: http://www.example.com/
documentation: http://www.example.com/
tracker: http://www.example.com/
# Some extra metadata can be here.
xmd: ~
# What do we need to build and run this module?
dependencies:
buildrequires:
base-runtime: stream-name
base-runtime-build: stream-name
requires:
base-runtime: stream-name
# What sources we want to build? In which order?
components:
rpms:
bar:
rationale: We need this to demonstrate stuff.
ref: f26
baz:
rationale: This one is here to demonstrate other stuff.
ref: f24
xyz:
rationale: xyz is a bundled dependency of baz.
ref: f24
buildorder: 10
modules:
includedmodule:
rationale: Included in the stack, just because.
ref: stream-name
buildorder: 100
# Any binary packages we don't want to include?
filter:
rpms:
- baz-nonfoo
# Which packages are the reason this module exists?
# (Other packages are just dependencies,
# treated like an implementation detail.)
api:
rpms:
- bar
- bar-extras
- baz
# Ways to install this module.
profiles:
default:
description: Normal instalation
rpms:
- bar
- bar-extras
- baz
minimal:
description: Minimal instalation.
rpms:
- bar
Like an RPM repository, Linux Container, Flatpak, OSTree, ISO, etc.
$ dnf install httpd
$ dnf install httpd
...
$ vim /etc/httpd/configuration.file
$ dnf install httpd
...
$ vim /etc/httpd/configuration.file
...
$ vim /var/www/index.html
$ dnf install httpd
...
$ vim /etc/httpd/configuration.file
...
$ vim /var/www/index.html
...
$ systemctl start httpd
$ dnf install httpd
...
$ vim /etc/httpd/configuration.file
...
$ vim /var/www/index.html
...
$ systemctl start httpd
#.... few days later ....
$ dnf update
Major versions or variants of an application.
Or get an iso with pre-selected streams - similar to the current situation.
So "$ dnf update" works!
https://docs.pagure.org/Modularity