Void-packages - Сердце Void Linux, или как собрать свою идеальную систему

31 May, 2026

Надоело ждать? Собери сам!

Знакомая ситуация: нужен пакет, но его нет в репозитории, или есть, но с устаревшей версией, или без нужных вам опций компиляции? В мире Linux-дистрибутивов это не редкость. И если в большинстве случаев приходится либо искать сторонние PPA, либо компилировать вручную, то пользователи Void Linux имеют в своем арсенале мощный, но при этом удивительно гибкий инструмент — репозиторий void-packages и его верного спутника xbps-src.

Это не просто набор исходников, это целая философия, позволяющая получить полный контроль над тем, что установлено в вашей системе. Сегодня мы погрузимся в мир void-packages и узнаем, как он работает, кому пригодится и почему каждый разработчик, интересующийся внутренним устройством Linux, должен с ним познакомиться.

Что такое void-packages и зачем он нужен?

Представьте, что у вас есть не просто магазин приложений, а целая фабрика, где вы можете заказать любую программу по своим чертежам. void-packages — это именно такая фабрика для Void Linux. Это огромная коллекция source-пакетов (исходников), которые используются для сборки бинарных пакетов для дистрибутива Void Linux.

В центре всего этого — скрипт xbps-src. Он берет на себя всю рутину: скачивает исходники, компилирует их, устанавливает во временную, изолированную директорию (так называемый fake destdir), а затем упаковывает все это в бинарный пакет формата XBPS. Эти пакеты потом можно устанавливать, обновлять или удалять с помощью стандартных утилит xbps-install и xbps-query.

Кому это будет интересно?

Реклама
  • Разработчикам Void Linux: Очевидно, это основной инструмент для создания и поддержки пакетов.
  • Любопытным инженерам: Тем, кто хочет понять, как устроена сборка пакетов в дистрибутивах, как работает chroot и изоляция.
  • Энтузиастам: Тем, кто хочет собрать специфическую версию ПО, включить или выключить определенные фичи, или даже собрать весь дистрибутив с нуля.
  • Системным администраторам: Для создания кастомных сборок ПО для своих серверов или рабочих станций.

Ключевые возможности: Ваш личный сборочный цех

void-packages и xbps-src предлагают целый арсенал инструментов, которые делают процесс сборки пакетов максимально гибким и контролируемым.

1. Изолированная и безопасная сборка: Прощай, sudo make install!

Один из краеугольных камней xbps-src — это изоляция процесса сборки. Забудьте о сборке под root и риске повредить вашу основную систему. xbps-src использует различные методы chroot (среди них xbps-uunshare, xbps-uchroot и даже bubblewrap) для создания полностью изолированной среды. Это значит, что все зависимости, компиляция и установка происходят внутри "песочницы", не затрагивая вашу хост-систему.

Зачем это нужно?

  • Безопасность: Если что-то пойдет не так во время сборки (например, вредоносный скрипт), ваша основная система останется нетронутой.
  • Чистота: Никаких "мусорных" файлов и библиотек, которые могли бы засорить вашу систему.
  • Воспроизводимость: Сборка происходит в контролируемой среде, что помогает добиться более предсказуемых результатов.

2. Гибкая настройка пакетов: Собери, как хочешь

Вам когда-нибудь хотелось собрать nginx с поддержкой специфического модуля, который не включен в бинарную сборку дистрибутива? С xbps-src это не проблема! Вы можете легко задавать опции сборки для каждого пакета.

Например, чтобы узнать, какие опции доступны для пакета foo:

$ ./xbps-src show-options foo

А чтобы включить или выключить их:

$ ./xbps-src -o option1,~option2 pkg foo

Где option1 будет включена, а option2 — выключена. Более того, вы можете глобально задавать CFLAGS, CXXFLAGS и LDFLAGS или переопределять их для конкретных пакетов через файл etc/conf. Это дает вам беспрецедентный контроль над тем, как именно компилируется ваш софт.

3. Распределенная компиляция с distcc: Ускоряем процесс!

Сборка больших проектов может занимать много времени. Но что, если у вас есть несколько машин в локальной сети? xbps-src поддерживает распределенную компиляцию с distcc. Вы можете настроить другие машины как "рабочих", и xbps-src будет распределять задачи компиляции между ними, значительно ускоряя процесс.

Это особенно полезно для разработчиков, которые часто пересобирают крупные пакеты или работают над целыми группами пакетов. Представьте, как ваш старенький ноутбук вдруг превращается в часть мощного сборочного кластера!

4. Кросс-компиляция и сборка для разных архитектур/libc: Универсальный солдат

Нужно собрать пакет для ARM-платы или для системы с musl вместо glibc? xbps-src умеет и это! Он поддерживает кросс-компиляцию для различных целевых архитектур.

$ ./xbps-src -a <target_arch> pkg <pkgname>

Или, например, для сборки пакетов под musl на glibc-системе:

$ ./xbps-src -A x86_64-musl pkg <pkgname>

Это открывает огромные возможности для разработчиков встраиваемых систем, IoT-устройств или просто тех, кто экспериментирует с различными окружениями.

5. Использование вне Void Linux: Не только для "войдовцев"

Интересно, что xbps-src не привязан исключительно к Void Linux. Вы можете использовать его в любом другом современном Linux-дистрибутиве! Для этого достаточно скачать статические бинарники xbps, склонировать репозиторий void-packages и начать работу.

$ wget http://repo-default.voidlinux.org/static/xbps-static-latest.<arch>-musl.tar.xz
$ tar xvf xbps-static-latest.<arch>-musl.tar.xz -C ~/XBPS
$ export PATH=~/XBPS/usr/bin:$PATH
$ git clone https://github.com/void-linux/void-packages.git
$ cd void-packages
$ ./xbps-src binary-bootstrap

Это делает xbps-src не просто инструментом для Void Linux, а универсальной утилитой для управления исходниками и сборки пакетов, которую можно интегрировать в свой рабочий процесс, независимо от основного дистрибутива.

Под капотом: Как это работает?

В основе void-packages лежит концепция masterdir — это основная директория, которая служит корневой файловой системой для сборки/установки пакетов внутри chroot. Внутри masterdir есть builddir (где распаковываются и собираются исходники) и destdir (куда устанавливаются скомпилированные файлы перед упаковкой в бинарный пакет). Все это управляется xbps-src, который оркестрирует процесс, разрешает зависимости (используя локальные или удаленные репозитории) и в итоге помещает готовые бинарные пакеты в hostdir/binpkgs.

Этот подход позволяет не только эффективно управлять сборкой, но и легко создавать собственные локальные репозитории, подписывать их и делиться с другими.

Практическое применение: Где это пригодится?

  • Создание кастомных сборок ПО: Нужна специфическая версия ffmpeg с поддержкой экзотического кодека? Или Vim с определенным набором патчей? void-packages — ваш выбор.
  • Разработка и тестирование пакетов: Если вы контрибьютор Void Linux или просто хотите создать свой пакет, xbps-src предоставляет идеальную среду для разработки и тестирования.
  • Сборка минималистичных систем: Для встраиваемых устройств или создания собственных Live-образов Void Linux, вы можете собрать только необходимые компоненты base-system с нуля.
  • Изучение сборки дистрибутивов: Если вы всегда хотели понять, как дистрибутивы Linux собирают и управляют своими пакетами, void-packages — отличная "песочница" для изучения.

Выводы: Стоит ли попробовать?

void-packages и xbps-src — это гораздо больше, чем просто репозиторий исходников. Это мощный, гибкий и удивительно хорошо спроектированный набор инструментов, который дает разработчикам беспрецедентный контроль над процессом сборки пакетов.

Если вы:

  • Пользователь Void Linux, который хочет глубже понять свою систему.
  • Разработчик, которому нужна максимальная гибкость в компиляции ПО.
  • Любопытный инженер, желающий изучить внутреннее устройство Linux-дистрибутивов.
  • Или просто тот, кто устал от ограничений бинарных репозиториев.

Тогда void-packages определенно стоит вашего внимания. Он не только решит многие ваши задачи, но и, возможно, изменит ваш взгляд на то, как можно управлять программным обеспечением в Linux. Попробуйте, и вы откроете для себя новый уровень свободы и контроля!