Commit 04236dd7 authored by Roman Alifanov's avatar Roman Alifanov

add readme

parent 370a28fd
# EEPM D-Bus Service
D-Bus сервис для [EEPM](https://github.com/Etersoft/eepm) (Etersoft Package Manager) на Rust.
Сервис предоставляет D-Bus API для управления пакетами, оборачивая bash-скрипты `epm`.
## Возможности
- Поиск, установка, удаление и обновление пакетов
- Управление приложениями через `epm play`
- Обновление ядра с автовыбором модулей
- Polkit авторизация для привилегированных операций
- Сигналы прогресса для отслеживания выполнения
- CLI клиент с поддержкой JSON вывода
## Сборка
### Cargo
```bash
cargo build --release
```
### Meson
```bash
meson setup _build --prefix /usr
meson compile -C _build
sudo meson install -C _build --no-rebuild
```
> **Важно:** используйте `--no-rebuild` при установке,
## Использование
### Запуск D-Bus сервиса
```bash
sudo eepm-dbus dbus-system
```
Или через systemd:
```bash
sudo systemctl start eepm-dbus
```
### CLI команды
#### Операции чтения (без polkit)
```bash
# Поиск пакетов
eepm-dbus search vim
eepm-dbus search vim --installed
# Информация о пакете
eepm-dbus info neovim
# Список установленных пакетов
eepm-dbus list
eepm-dbus list --limit 50 --offset 100
# Зависимости
eepm-dbus requires neovim
eepm-dbus what-depends neovim
eepm-dbus file-list neovim
# Проверки
eepm-dbus check-install htop mc
eepm-dbus check-remove firefox --depends
eepm-dbus check-upgrade
eepm-dbus check-update-kernel
eepm-dbus check-auto-remove
eepm-dbus check-auto-orphans
eepm-dbus check
```
#### Управление пакетами (требуют polkit)
```bash
# Установка/удаление
eepm-dbus install htop mc
eepm-dbus remove firefox
eepm-dbus remove firefox --purge --depends
# Обновление
eepm-dbus update
eepm-dbus upgrade
# Очистка
eepm-dbus clean
eepm-dbus auto-remove
eepm-dbus auto-orphans
# Ядро
eepm-dbus update-kernel
```
#### Приложения (epm play)
```bash
# Просмотр (без polkit)
eepm-dbus play-list # Установленные
eepm-dbus play-list-all # Все доступные
eepm-dbus play-search telegram
eepm-dbus play-info telegram
eepm-dbus play-installed telegram
eepm-dbus play-available-version telegram
eepm-dbus play-installed-version telegram
# Управление (требуют polkit)
eepm-dbus play-install telegram
eepm-dbus play-remove telegram
eepm-dbus play-update telegram
eepm-dbus play-update all
```
#### Флаги
```bash
--json # JSON вывод
-p, --progress # Показывать прогресс
-q, --quiet # Тихий режим
```
### Примеры
```bash
# Поиск с JSON выводом
eepm-dbus search vim --json
# Установка с прогрессом
eepm-dbus -p install htop
# Проверка обновлений
eepm-dbus check-upgrade --json
```
## D-Bus API
**Имя сервиса:** `ru.etersoft.EPM`
**Путь:** `/ru/etersoft/EPM`
### Интерфейсы
| Интерфейс | Описание | Polkit |
|-----------|----------|--------|
| `ru.etersoft.EPM.Query` | Операции чтения | Нет |
| `ru.etersoft.EPM.Manage` | Операции изменения | Да |
### Сигналы прогресса
Сервис эмитит сигнал `Notification` для отслеживания прогресса операций:
```
Interface: ru.etersoft.EPM
Path: /ru/etersoft/EPM
Signal: Notification(json: String)
```
Формат JSON:
```json
{
"name": "upgrade",
"message": "Installing neovim-0.11.5-alt1",
"state": "BEFORE",
"type": "PROGRESS",
"progress": 75.0,
"transaction": "upgrade-123456"
}
```
## Конфигурация
| Файл | Назначение |
|------|------------|
| `data/ru.etersoft.EPM.conf.in` | D-Bus policy |
| `data/ru.etersoft.EPM.policy.in` | Polkit policy |
| `data/ru.etersoft.EPM.service.in` | D-Bus activation |
| `data/eepm-dbus.service.in` | Systemd unit |
## Зависимости
- Rust 1.70+
- [EEPM](https://github.com/Etersoft/eepm) (`epm` в PATH)
- D-Bus
- Polkit
### Rust crates
- `zbus` — D-Bus
- `tokio` — async runtime
- `serde` / `serde_json` — сериализация
- `clap` — CLI
- `tracing` — логирование
## Лицензия
GPL-3.0
## Благодарности
Структура `EventData`, парсеры и концепция D-Bus сигналов `Notification` заимствованы из [APM](https://altlinux.space/alt-atomic/apm) (Atomic Package Manager).
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment