The PackageManager component provides an API for managing KPA packages in solutions that are based on KasperskyOS.
The PackageManager component API is built on top of IPC and helps simplify program development. PackageManager is a separate system program that is accessed through IPC. However, developers are provided with a client library that eliminates the necessity of directly using IPC calls.
The programming interface of the PackageManager component is described in the article titled "PackageManager component".
Adding the PackageManager component to a KasperskyOS-based solution
Hereinafter the "client" refers to the program that uses the PackageManager component API to manage KPA packages.
The typical usage scenario for the PackageManager component includes the following steps:
find_package (package_manager REQUIRED)
include_directories (${package_manager_INCLUDE})
add_subdirectory (package_manager)
create_package_manager_entity()
from the CMake library package_manager
.To build the PackageManager program, create a directory named package_manager
in the root directory of the project. In the new directory, create a CMakeLists.txt
file containing the create_package_manager_entity()
command.
The CMake command create_package_manager_entity()
takes the following parameters:
Mandatory ENTITY
parameter that specifies the name of the executable file for the PackageManager program.
Optional parameters:
DEPENDS
– additional dependencies for building the PackageManager program.MAIN_CONN_NAME
– name of the IPC channel for connecting to the PackageManager process. It must match the value of the mainConnection
variable when calling the PackageManager API in the client code.ROOT_PATH
– path to the root directory for service files of the PackageManager program. The default value is "/ROOT"
.PKGS_DIR
– path to the directory containing the KPA packages to be installed.PKG_EXTENSION
– extension for the KPA package file.DB_PATH
– full name of the SQLite database file in the KasperskyOS-based solution image containing data on the installed KPA packages.APPS_DIR
– path to the directory where the KPA packages will be installed.VFS_CLIENT_LIB
– name of the client transport library used to connect the PackageManager program to the VFS
program.NK_MODULE_NAME
– path for installing the header files of the PackageManager component in the SDK relative to the directory /opt/KasperskyOS-Community-Edition-<version>/sysroot-*-kos/include/
. Default value: kl/package_manager
.AUDIT_CONN_NAME
– name of the IPC channel for connecting to the AuditStorage
process.WITHOUT_SIGN_MODE
– external signature verification mode: true
– lack of an external signature is not considered an error, false
– lack of an external signature is considered an error. The default value is false
. MANIFEST_SCHEMA_BUILD_STORE
– path to the build directory of the KasperskyOS-based solution image containing the manifest schema.MANIFEST_SCHEMA_RUNTIME_PATH
– path to the directory of the started KasperskyOS-based solution containing the manifest schema.PATH_TO_ADDITIONAL_EXTENSIONS_SCHEMAS
– path to the directory containing additional manifest schemas for objects of an arbitrary format that are defined in the extentions
key value of the KPA package manifest.CUSTOM_LAYOUT
– full name of the JSON file that is used to redefine the paths for installing KPA package components.include (package_manager/create_package_manager_entity)
create_package_manager_entity(
ENTITY PkgMgrEntity
NK_MODULE_NAME "package_manager"
MAIN_CONN_NAME "PkgMgrEntity"
ROOT_PATH "/"
PKGS_DIR "/packages"
PKG_EXTENSION "kpa"
DB_PATH "${DB_PATH}"
APPS_DIR "${APPS_PATH}"
MANIFEST_SCHEMA_BUILD_STORE "${CMAKE_BINARY_DIR}/rootdir/schema"
MANIFEST_SCHEMA_RUNTIME_PATH "/schema"
PATH_TO_ADDITIONAL_EXTENSIONS_SCHEMAS "${CMAKE_SOURCE_DIR}/resources/additional_extensions/"
CUSTOM_LAYOUT "/custom_layout_schema.json"
VFS_CLIENT_LIB vfs::client
AUDIT_CONN_NAME "audit_storage"
WITHOUT_SIGN_MODE TRUE)
CMakeLists.txt
file for building the client:target_link_libraries (<name of the CMake target for building the client> ${package_manager_CLIENT_LIBS})
package_manager.PkgMgrEntity
process class:VFS
program.Sync
, VMM
, Thread
, HAL
, Handle
, FS
, Notice
, CM
and Profiler
(their descriptions are located in the directory sysroot-*-kos/include/kl/core
from the SDK).sysroot-*-kos/include/kl/package_manager
from the SDK).Use the header file component/package_manager/kos_ipc/package_manager_proxy.h
for this. For more details, refer to PackageManager component.