Getting Started

Getting Started #

Prerequisites #

Macaroni OS Linux support only AMD64 at the moment.

Get Macaroni OS #

To begin playing with Macaroni you have different ways but before share the different possibilities, i will try to supply some information about the available releases.

Release Description
Macaroni Funtoo The core release based on OpenRC/SysVinit Funtoo system.
Macaroni Funtoo Systemd A Funtoo SystemD release. The idea is to use it only for Server target and as experimental base rootfs where we will develop an alternative tool that will replace SystemD probably written in Golang but that will be compatible with part of SystemD files.

Respect the Gentoo/Funtoo world, Macaroni tries to reduce the complexity of the others PMS and it doesn’t manage the SLOTs or better the SLOT is added as postfix of the category. For example the package sys-devel/gcc:9.2.0 is mapped as sys-devel-9.2.0/gcc.

Using docker container #

$> docker run --rm -ti macaronios/funtoo-minimal
4e02286e61d3 / # luet repo update
⠈ Downloaded repository.yaml of 0.00 MB ( 0.00 MiB/s )
Downloaded tree.tar.gz of 0.00 MB ( 0.00 MiB/s )
Downloaded repository.meta.yaml.tar.gz of 0.00 MB ( 0.00 MiB/s )
🏠  Repository geaaru-repo-index revision: 1 - 2021-12-12 20:42:48 +0000 UTC
ℹ️  Repository: geaaru-repo-index Priority: 1 Type: http Revision: 1
Downloaded repository.yaml of 0.00 MB ( 0.00 MiB/s )
Downloaded tree.tar.zst of 0.00 MB ( 0.00 MiB/s )
Downloaded repository.meta.yaml.tar.zst of 5.57 MB ( 2.48 MiB/s )
🏠  Repository macaroni-commons revision: 23 - 2022-01-11 16:08:20 +0000 UTC
ℹ️  Repository: macaroni-commons Priority: 2 Type: http Revision: 23
Downloaded repository.yaml of 0.00 MB ( 0.00 MiB/s )
Downloaded tree.tar.zst of 0.53 MB ( 0.44 MiB/s )
Downloaded repository.meta.yaml.tar.zst of 6.04 MB ( 6.78 MiB/s )
🏠  Repository macaroni-funtoo revision: 77 - 2022-01-16 08:09:51 +0000 UTC
ℹ️  Repository: macaroni-funtoo Priority: 2 Type: http Revision: 77
Downloaded repository.yaml of 0.00 MB ( 0.00 MiB/s )
Downloaded tree.tar.zst of 0.00 MB ( 0.01 MiB/s )
Downloaded repository.meta.yaml.tar.zst of 0.27 MB ( 0.67 MiB/s )
🏠  Repository mottainai-stable revision: 1 - 2022-01-14 15:54:04 +0000 UTC
ℹ️  Repository: mottainai-stable Priority: 1 Type: http Revision: 1

4e02286e61d3 / # luet search pci
sys-apps/pciutils-3.6.2+3
x11-libs/libpciaccess-0.16+3

4e02286e61d3 / # luet i sys-apps/pciutils
...
4e02286e61d3 / # luet cleanup
Cleaned:  5 packages.

Using an LXD container #

The Funtoo & Macaroni teams supply their LXD images over an Simplestreams Server. To configure the LXD remote just run this command:

$> lxc remote add macaroni https://images.macaroni.funtoo.org/lxd-images --protocol simplestreams --public

and then check the available images:

$> lxc image list macaroni:

Download the Macaroni ISO #

The ISOs of Macaroni OS could be downloaded from Funtoo CDN.

All the ISOs use Calamares as Installer.

The password of the macaroni user is macaroni.

Knows Issues #

The current status of the Macaroni OS is related to his PMS that is under heavy development process and it doesn’t support yet very well the requirements needed for a Desktop environment and a good stability.

The main issue is that the current upgrade process execute an uninstall of all packages to upgrade before to begin the installation of the new packages and without check if there are changes. This generate some issue with X sometime.

So, for the moment, I suggest to upgrade a Desktop environment from terminal (just switch with CTRL+ALT+F1).

Instead, if it’s used in a Container environment could be a valid and stable solution. In a container, is less important the upgrade process because usually, the container is dropped and created from a new image. In this condition you could create a very optimized container thanks to the subsets feature available in the fork release of luet.

Macaroni doesn’t use the Funtoo ebuild in the installation phase, this means that the post-install scripts must be managed from the luet finalizer. In particular, is been created the whip tool to help in this job. In particular, is been created the whip-catalog to store all hooks to call. For the Desktop environment the post-install hooks could be configured correctly in all packages.

The whip tool is usable and the catalog could be used with this command:

$> whip list --table
+-----------+---------------------+-----------------------------------------------------------------------+
|   FILE    |        NAME         |                              DESCRIPTION                              |
+-----------+---------------------+-----------------------------------------------------------------------+
| gtk       | mime_update_db      | Update mime cache.                                                    |
| gtk       | gtk_update_icons    | Update Gnome icons cache.                                             |
| gtk       | glib_update_schemas | Update Glib Schemas.                                                  |
| texlive   | texlive_postinst    | Setup texlive files.                                                  |
|           |                     |                                                                       |
| texlive   | texlive_rebuild_fmt | Rebuild TeX formats.                                                  |
|           |                     |                                                                       |
| dbus      | dbus_gen_machineid  | Setup /etc/machine-id.                                                |
| eudev     | eudev_setup         | Validate Eudev setup.                                                 |
|           |                     |                                                                       |
| fonts     | create_scale        | Create fonts.scale file, used by the old server-side fonts subsystem. |
| fonts     | create_fonts_dir    | Create fonts.dir file, used by the old server-side fonts subsystem.   |
|           |                     |                                                                       |
| fonts     | setup_all_fonts     | Setup fonts.                                                          |
|           |                     |                                                                       |
| openrc    | openrc_setup        | Setup core OpenRC services.                                           |
|           |                     |                                                                       |
| perl      | postinst            | Setup perl binaries links.                                            |
|           |                     |                                                                       |
| polkit    | polkit_setup        | Setup env for polkitd.                                                |
|           |                     |                                                                       |
| eclass_db | db_cleanup          | Clean libdb* links and includes.                                      |
|           |                     |                                                                       |
| eclass_db | db_fix_so           | Fix links of /usr/include/db.h and .so                                |
|           |                     |                                                                       |
| elogind   | elogind_setup       | Check elogind setup.                                                  |
|           |                     |                                                                       |
| gdb       | setup               | Setup gdm files.                                                      |
+-----------+---------------------+-----------------------------------------------------------------------+

An hook is callable with the hook subcommand:

$> whip hook gtk.gtk_update_icons gtk.glib_update_schemas

Upgrade #

Just:

$> luet repo update
$> luet upgrade

luet follow the same Funtoo/Gentoo idea about the configuration files, in particolar, if the file to install is related to a proctect directory and the file is already present then luet creates the file _cfg0001_<file> that could be merged with the classic etc-update or other similar software.

Search Packages #

The current search engine uses a regex to the category/name string. The subcommand is callable with search or s.

$> luet search lxd-compose
app-emulation/lxd-compose-0.16.3

or as a table:

$> luet s lxd-compose --table
+---------------------------+---------+------------------+---------+
| PACKAGE                   | VERSION | REPOSITORY       | LICENSE |
+---------------------------+---------+------------------+---------+
| app-emulation/lxd-compose | 0.16.3  | mottainai-stable | GPL-3.0 |
+---------------------------+---------+------------------+---------+

or as a JSON with metadata:

$> luet s lxd-compose -o json | jq
{
  "packages": [
    {
      "License": "GPL-3.0",
      "category": "app-emulation",
      "files": [
        "usr/bin/lxd-compose"
      ],
      "hidden": false,
      "name": "lxd-compose",
      "repository": "mottainai-stable",
      "target": "",
      "version": "0.16.3"
    }
  ]
}

or search between installed packages:

$> luet s lxd --installed

Install a package #

The subcommand is callable with install or i.

$> luet i app-emulation/lxd-compose

Uninstall a package #

The subcommand is callable with uninstall or rm.

$> luet rm app-emulation/lxd-compose

Show files of a package #

$> luet q files app-emulation/lxd-compose
usr/bin/lxd-compose

or as JSON array:

$> luet q files app-emulation/lxd-compose -o json
["usr/bin/lxd-compose"]

or as YAML:

$> luet q files app-emulation/lxd-compose -o yaml
- usr/bin/lxd-compose