Chapter 2. Components

Table of Contents

2.1. libtukit.so
2.2. tukit
2.3. D-Bus Bindings
2.4. transactional-update

transactional-update is split into two parts: the (open)SUSE specific transactional-update shell script, and the generic tukit (including libtukit, the tukit command line application and the D-Bus bindings).

2.1. libtukit.so

libtukit is a C++ library implementing the core functionality of transactional-update. It is responsible for snapshot management, preparing the environment (including overlay handling, see Section 4.3, “/etc”) and executing the command to run within the update environment.

The library is designed to be a general purpose library for handling transactional systems. It provides methods to create, modify and close transactions as well as execute commands within a transaction. Currently snapper is the only implemented snapshot management option.

Applications such as package managers are expected to use this library for easily supporting transactional systems. DNF for example is supporting transactional systems via the libdnf-plugin-txnupd plugin.

The library also provides C bindings with the same functionality as the C++ library.

2.2. tukit

tukit is a utility application to call libtukit functionality from the command line. Applications which do not support libtukit directly may use this application as a wrapper. This command is not yet intended to be called by the user directly, as it does not perform maintenance tasks such as marking a snapshot for deletion for now.

2.3. D-Bus Bindings

The libtukit functionality is also available via D-Bus interface org.opensuse.tukit. Commands are executed asynchronously, returning a signal when the command execution is finished.

2.4. transactional-update

This shell script is an (open)SUSE specific wrapper for handling the tasks typical on a transactional system, e.g. installing packages, updating the system or updating the bootloader. To do so it is using the tukit wrapper to call applications such as zypper for package management.