Toolbox

Як незмінна система, Silverblue є ідеальною платформою для розробки програмного забезпечення на основі технологій контейнеризації. Для роботи з контейнерами рекомендуємо скористатися buildah і podman.

Крім того, до складу Silverblue включено допоміжний засіб toolbox, який використовує контейнери для забезпечення роботи середовища, у якому можна встановити засоби для розробки і бібліотеки і скористатися ними.

Чому слід користуватися toolbox?

Toolbox спрощує використання контейнеризованих середовищ для регулярної розробки програмного забезпечення та діагностування. У незмінних операційних системах, зокрема Fedora Silverblue, він надає доступ до знайомого середовища, яке засновано на пакунках, у якому можна встановлювати інструменти і бібліотеки. Втім, toolbox також можна використовувати і у заснованих на пакунках системах.

Використання Toolbox для робочих процесів із контейнеризацією надає вам декілька переваг:

  • Таким чином можна зберігати базову операційну систему незмінною і стабільною, запобігти захаращенню системи, яке трапляється після встановлення значної кількості інструментів і пакунків для розробки.

  • Ви отримуєте доступ до різних версій підтримуваних дистрибутивів незалежно від версії, з якою ви працюєте.

  • Контейнери — якісний спосіб ізолювати і упорядкувати залежності, які потрібні для різних проєктів.

  • Контейнери є безпечним майданчиком для експериментів: якщо щось піде не так, доволі просто викинути набір інструментів (toolbox) і розпочати все знову.

Як це працює

Toolbox працює на основі контейнерів, надаючи доступ до вузького набору команд для створення, входу, побудови списку та вилучення контейнерів. Він також інтегрує контейнери toolbox до вашого звичайного робочого середовища з метою спрощення користування ними як регулярним простором для розробки.

Контейнери створюються з образів. Вони є дуже спрощеними версіями дистрибутивів. У таких образах майже немає інструментів та документації. Команда, яка розробляє Toolbox, супроводжує образ Fedora, де такі інструменти і документація є доступними, надаючи чудові можливості одразу після запуску.

Кожен із контейнерів toolbox є середовищем, до якого ви можете увійти з командного рядка. Усередині кожного контейнера ви знайдете:

  • Ваше поточне ім’я користувача і права доступу

  • Доступ до вашого домашнього каталогу та декількох інших місць

  • Доступ до D-Bus системи і сеансу, журналу системи і Kerberos

  • Типові засоби командного рядка, зокрема програму для керування пакунками (наприклад DNF у Fedora)

Іншими словами, контейнери toolbox виглядають, працюють і поводяться подібно до стандартного середовища командного рядка Linux. Поєднуючи усі ці відомості, контейнери toolbox втрачають певну частину захисту, який набувається використанням технології контейнерів. Тому вам не слід вважати контейнери toolbox пісочницями, у яких ви можете виконувати будь-який скрипт, який би ви ніколи не запускали у будь-якій іншій системі.

У більшості випадків, при запуску команди зсередини контейнера буде використано програму з контейнера. Втім, існує декілька спеціалізованих випадків, коли замість неї буде використано програму з основної системи (за допомогою flatpak-spawn). Одним з прикладів є сама команда toolbox; таким чином можна уможливити використання toolbox з контейнерів toolbox.

Встановлення

Fedora Silverblue

Toolbox вже встановлено у Fedora Silverblue 30 і новіших версіях. У старіших версіях встановити toolbox можна такою командою:

$ rpm-ostree install toolbox

У результаті буде встановлено toolbox як нашарований RPM.

Fedora Workstation

Toolbox можна встановити на Fedora Workstation (або будь-яку засновану на пакунках версію Fedora) за допомогою такої команди:

$ sudo dnf install toolbox

Ваш перший toolbox

Після встановлення toolbox, щоб розпочати роботу, слід віддати дві прості команди:

$ toolbox create

У результаті буде отримано образ OCI і створити з нього контейнер toolbox. Щойно дані буде отримано, віддайте таку команду:

$ toolbox enter

Потрапивши до нутрощів toolbox, ви отримуєте доступ до типових інструментів командного рядка і доступ до встановлення нових інструментів за допомогою програми для керування пакунками (наприклад DNF у Fedora).

Якщо запит щодо команди надходить зсередини toolbox, перед ним буде показано ромб: так система вказує на те, що запит є запитом із середини контейнера toolbox. Символ ромба може бути також показано, якщо ви використовуєте нетипову тему командної оболонки.

Команди і користування

toolbox create [параметри] <назва>

Створює контейнер toolbox. У результаті буде отримано образ OCI, якщо він є недоступним (ця дія потрібна для створення контейнера). Типово, образ за версією збігається із версією основної системи. Якщо основна система не має відповідного образу, замість нього буде використано образ Fedora.

Якщо віддати команду без параметрів, toolbox create автоматично визначить назву створеного контейнера. Для створення додаткових toolbox скористайтеся аргументом <назва>.

Щоб використатися вказану версію основної системи (наприклад, Fedora 32 у Fedora 34), скористайтеся параметром --release <випуск> | -r <випуск>.

Щоб скористатися іншим дистрибутивом для створення контейнера toolbox (наприклад, RHEL у Fedora), скористайтеся параметром --distro <дистрибутив> | -d <дистрибутив>.

Щоб використати інший образ, скористайтеся параметром --image <назва> | -i <назва>.

toolbox enter [параметри] <назва>

Увійти до контейнера toolbox для інтерактивного користування. Якщо команду віддано без параметрів, toolbox enter відкриває типовий контейнер toolbox.

Щоб вказати toolbox із певною назвою, скористайтеся аргументом назва.

Щоб увійти до toolbox для іншого дистрибутива (наприклад, Fedora у RHEL), скористайтеся параметром --distro <дистрибутив> |-d <дистрибутив>.

Щоб увійти до toolbox із визначенням певної версії (наприклад, RHEL 8.1 у RHEL 8.3), скористайтеся параметром --release <випуск> | -r <випуск>.

toolbox run [параметри] <команда> <аргумент …​>

Виконує команду у toolbox, без входу до нього. Якщо команду віддано без параметрів, toolbox run запускає команду у типовому контейнері toolbox.

Щоб запустити програму у toolbox із визначенням певної назви контейнера, скористайтеся параметром --container <назва> | -c <назва>.

Щоб запустити програму у toolbox для іншого дистрибутива (наприклад, Fedora у RHEL), скористайтеся параметром --distro <дистрибутив> |-d <дистрибутив>.

Щоб запустити програму у toolbox із визначенням певної версії (наприклад, RHEL 8.1 у RHEL 8.3), скористайтеся параметром --release <випуск> | -r <випуск>.

toolbox list [параметри]

Виводить список образів і контейнерів toolbox.

Щоб переглянути лише список контейнерів, скористайтеся параметром --containers | -c.

Щоб лише переглянути список образів, скористайтеся параметром --images | -i.

toolbox rm [параметри] <назва …​>

Вилучає один або декілька контейнерів toolbox.

Параметр --force | -f надає змогу вилучити позначені контейнери, навіть якщо їх запущено.

За допомогою параметра --all | -a можна вилучити усі контейнери toolbox.

toolbox rmi [параметри] <назва …​>

Вилучає один або декілька образів toolbox.

Параметр --force | -f надає змогу вилучити позначені образи і усі контейнери, які було створено з використанням позначених образів.

За допомогою параметра -all | -a можна вилучити усі образи toolbox.

toolbox --help

Показує сторінку підручника з Toolbox.

Вихід з toolbox

Щоб повернутися до середовища основної системи, або віддайте команду exit, або вийдіть з поточної оболонки (типово, Ctrl+D).

Під капотом

У toolbox використано такі технології:

Контакти і адреси для сповіщення про вади

Для повідомлень про вади, пропозицій та надсилання латок скористайтеся сторінкою проєкту toolbox на GitHub.

Щоб зв’язатися із користувачами та розробниками toolbox, скористайтеся екземпляром Discourse Fedora або каналом IRC #silverblue на сервері Freenode.