Важливою складовою популярних дистрибутивів Linux, є система міжпроцесної комунікації під назвою D-Bus. Простіше кажучи – застосунки можуть спілкуватися між собою, реагуючи на відповідні повідомлення, передаючи-отримуючи дані, тощо. Для ядра також вже досить давно реалізована шина обміну повідомленнями Bus1. У зв'язку з цим – D-Bus також ще називають D-Bus1.
Приблизно пару років тому назад, розробник Bus1 започаткував проект D-Bus Broker. Мотивом для створення цього проекту стало те, що демон D-Bus занадто переускладнений, а також має помилки, які не можливо виправити без досить значних втручань в архітектуру D-Bus, і, відповідно, без порушення гарантованої D-Bus функціональності. D-Bus Broker надає нову реалізацію шини D-Bus, але при цьому повністю сумісний з еталонною реалізацією D-Bus, може прозоро замінювати штатний демон D-Bus. Проект зфокусований на кращій швидкодії та продуктивності, а також на усуненні недоліків D-Bus. Також зазначу, що D-Bus Broker працює у користувацькому просторі. Дистрибутиви на кшталт Fedora вже використовують D-Bus Broker типово.
Для користувачів це означає те, що при використанні D-Bus Broker можуть частково або повністю зникнути ситуації, коли застосунки працюють в деяких випадках повільно, або ж не стабільно. Іншими словами – якщо застосунок повільно реагує на дії користувача, то це може бути пов'язано не лише з самим застосунком, але й з недоліками D-Bus (не контрольованою втратою повідомлень, витоками пам'яті, і тому подібне).
Наприклад незрячі користувачі, використовуючи скрін-рідер Orca, досить часто зтикаються з тим що в застосунку Thunderbird, переходячи до теки з дуже великою кількістю повідомлень, Orca немовби замислюється на деякий час. І цей час може бути досить довгим. У цій ситуації частково винен саме D-Bus, оскільки компонент допоміжних технологій (AT-SPI) взаємодіє з D-Bus; А скрін-рідер Orca, у свою чергу, взаємодіє з компонентом допоміжних технологій для надання користувачеві необхідної інформації. Якщо ж використовувати в цій ситуації D-Bus Broker, то Orca буде реагувати на теки з великою кількістю повідомлень у Thunderbird значно швидше.
Платою за кращу швидкодію та продуктивність D-Bus Broker можна вважати його вимоги. Працювати D-Bus Broker буде лише на відносно сучасних Linux-дистрибутивах (необзідне ядро версії не нижче ніж 4.10, а також GLibC не нижче 2.16).
Користувачі Ubuntu-OEM-Pack-MATE 18.04, можуть без проблем інсталювати D-Bus Broker. Для цього:
1. Встановлюємо пакунки, необхідні для побудови D-Bus Broker. Мені знадобилося лише встановити систему побудови з вихідного коду Meson, а також пакунки pkg-config та libsystemd-dev. Для встановлення цих пакунків необхідно виконати команду:
sudo apt install pkg-config meson libsystemd-dev
Також необхідно встановити пакунок git, якщо він відсутній;
2. Необхідно клонувати GIT-сховище D-Bus Broker. Для цього, потрібно створити теку, в якій буде зберігатися каталог з клонованим сховищем, після чого перейти до неї. Використовуючи термінал, це можгна зробити наступним чином:
2.1. Відкривши термінал, створюємо теку з назвою repos такою командою
mkdir repos
Замість repos, звичайно ж, кожен може використовувати власну назву теки;
2.2. переходимо до цієї теки командою
cd repos
Для клонування GIT-сховища, необхідно виконати команду
git clone
github.com/bus1/dbus-broker.git
3. Перейшовши до каталогу з клонованим сховищем за допомогою команди
cd dbus-broker
створюємо теку build:
mkdir build
4. переходимо до створеної теки
cd build
5. Виконуємо команду, яка налаштовує середовище побудови
meson setup
6. Виконуємо команду
ninja
для побудови D-Bus Brokerз вихідного коду. Зауважте! Після виконання цієї та попередньої команд, про всяк випадок, необхідно читати текст, що надходить до терміналу. Мені знадобилися лише два вище зазначених пакунка; Але може статися так, що, наприклад, у оригінальній Ubuntu 18.04, потрібно буде встановити якісь додаткові компоненти. Якщо це саме ваша ситуація, то при виконанні цих команд Meson підкаже, який компонент відсутній у вашій системі;
7. виконуємо команду
ninja test
8. Встановлюємо D-Bus Broker, використовуючи команду:
sudo ninja install
9. Активуємо сервіс D-bus Broker такими командами
sudo systemctl enable dbus-broker.service
sudo systemctl --global enable dbus-broker.service
Після перезавантаження системи, D-Bus Broker одразу почне працювати.
Для оновлення GIT-сховища, тобто для отримання найновішого вихідного коду, в каталозі сховища необхідно періодично виконувати команду
git pull
Для встановлення новішої версії D-Bus Broker, краще спочатку видалити стару, використовуючи наступний порядок дій:
1. Деактивуємо сервіси D-Bus Broker командами
sudo systemctl --global disable dbus-broker.service
sudo systemctl disable dbus-broker.service
2. Перейшовши до створеної теки build, виконуємо команду
sudo ninja uninstall
3. Задля страховки від несподіванок, повертаємося в каталог зі сховищем командою
cd ../
і видаляємо створену нами теку build, із усім її вмістом
sudo rm -R build/
4. Знову створюємо теку build, і виконуємо кроки з побудови та встановлення, що описані вище.