Void linux установка и настройка

Обновлено: 04.07.2024

Сразу скажу, признаться, Void — очень понравился. Не только тем, что отсутствует systemd, а вместо него (или другой сист.иниц.) довольно простенький, но юзабельный runit, а тем, что Void — глоток свежего воздуха во время помирающей генты, с её всё накапливающимися проблемами инфраструктуры, и прекрасная альтернатива всем другим некогда удобным дистрам (арч, например).

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

Установка системы возможна установка через GUI (не пробовал) или через chroot, установка происходит всего одной командой:

Вот что устанавливается в виде базовой системы:

Внимательный неврастеник может обратить внимание, дескать, если не навязывают ничего, то зачем море ненужной фирмвари и dracut, например? Ну вот я не знаю, мне это тоже не понравилось, к слову — это всё можно сразу удалить. Далее подробнее о плюсах и минусах, которые были обнаружены во время установки.

Я ранее говорил про чрут, так вот чрут происходит не как принципу генты, которую можно установить с чего угодно, а по принципу загрузки void livecd и чрута уже оттуда, так вот такие минусы были замечены начиная с livecd и первого входа в установленную систему:

  • в эмуляторе терминала livecd — dash вместо bash (при этом он установлен), цветовая схема терминала бледная, трудночитаемая
  • дикая (как по мне) схема разметки диска в wiki, предлагается целых 7 разделов, мне же всегда было достаточно 1-го для всего: /; не объясняется для чего так замусоривать и усложнять разделами диск, но мы-то знаем, что хватает 1-го раздела для всего, поэтому просто игнорируем.
  • как я выше упомянул, базовая система содержит несколько ненужных (как по мне) пакетов, например фирмваре, dracut и артворк.
  • стоковый редактор: неюзабельный nvi (минус), нет nano (плюс), нет minimal, но vim (минус).
  • в установленной системе нет: gcc, xz, patch, make, bc, ncurses-devel (make menuconfig) для компиляции собственного ядра
  • в системе нет удобного /sbin/installkernel как в генте, например (make install ядра сам копирует vmlinuz, System.map и config из /usr/src/linux/ в /boot и переименовывает их согласно версии).
  • после установки каждого шрифта, сколько бы их не устанавливалось, происходит фонткеш, возможно пофиксят в будущем, чтобы кешировал один раз после установки всех шрифтов за раз
  • максимальный gcc для x86_64 в репе — 4.9.4, хотя для arm'ов есть 5.4, я не знаю, с чем это связано.

Что касается плюсов, то самый большой плюс заключается в том, что в дистре нет массы минусов, которые присутствуют в остальных, это действительно большой плюс.

Напоследок, хотелось бы отметить сверхбыстрый пакетный менеджер (портаж вспоминается как ад, где вместо Сатаны — Куранин, школьник из Тольятти) и мегаудобную и удачную систему работы с пакетами: если хочешь создать свой пакет или модифицировать стоковый, то достаточно склонировать базу пакетов (рецептов, т.е. ебилдов-pkgbuild'ов) вносить в них изменения и уже натравливать xbps-src или еще один специально обученный инструмент xtools. Надеюсь не нужно объяснять чем удобна работа над пакетами на гитхабе.

В общем, рекомендую ребята, Void — отличный дистрибутив для дома и работы.

Void Linux немного необычен. Он предлагает необычайно интересную альтернативу многим традиционным дистрибутивам Linux, связанным с большими семействами Linux, таким как Debian, Ubuntu или Arch.

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

Фактически, Void Linux был одним из первых дистрибутивов, которые по умолчанию переключились на LibreSSL, заменив OpenSSL, когда разработчики отказались от OpenSSL в 2014 году. Их цель состояла в том, чтобы модернизировать кодовую базу, улучшить безопасность и применить лучшие практики разработки.

Последний выпуск, версия 20181111, поставляется с интересным выбором настольных сред: Base system, Enlightenment, Cinnamon, MATE, Xfce, LXDE и LXQt.


Cinnamon - это один из наиболее полных вариантов Void Linux.

Все остальное вы должны добавить из ограниченного репозитория Void Linux. Больше программного обеспечения доступно из бинарных пакетов, которые вы должны скомпилировать перед использованием.


Рабочий стол Enlightenment в Void Linux предлагает функции, которых нет в других графических окружениях.

Void Linux поддерживает архитектуры процессоров Intel x86 и x86_64, ARM и MIPS. Этот дистрибутив предлагает удивительную гибкость. Например, он работает в облаке. Разработчик предоставляет готовые к загрузке образы для Google Cloud Platform, которые совместимы с бесплатным уровнем.

Вы можете легко создавать образы для других облачных провайдеров из готовых тарболов x64. Архивы rootfs могут работать в любом месте, где вам нужен Void Linux.

Они доступны для всех архитектур, которые в настоящее время поддерживает разработчик. Все пакеты собраны с помощью xbps-src, а исходные шаблоны размещены на Github.

Образы i686 имеют следующие требования: процессор Pentium 4 (SSE2), 96 МБ ОЗУ, 350 МБ дискового пространства, Ethernet/WiFi для сетевой установки. Этим образам нужно по крайней мере 256 или 512 МБ ОЗУ для корректной работы.

Менеджер пакетов и xbps-src непривычны, но как только вы выйдете за рамки технического жаргона, файлы шаблонов станут довольно удобными для пользователя. xbps-src - это сборщик пакетов xbps, написанный с нуля под лицензией BSD.

В отличие от некоторых других лицензий с открытым исходным кодом, она не требует от разработчика распространения исходного кода. Таким образом, вы получаете уникальный собственный менеджер пакетов, который отличается от отраслевых стандартов. Он строит программное обеспечение в контейнерах с использованием пространств имен Linux.

Этот метод обеспечивает изоляцию процессов и привязок монтирования, не требуя разрешений root. Кроме того, xbps-src может делать нативную или кросс-компиляцию для целевой машины и поддерживает несколько библиотек C (в настоящее время glibc и musl).

Одной из уникальных особенностей Void Linux является его подход к выпуску релизов. В этом дистрибутиве используется собственная гибридная система управления бинарными пакетами/исходными кодами, которая позволяет устанавливать, обновлять и удалять программное обеспечение.

Она также позволяет создавать программное обеспечение непосредственно из исходного кода, используя коллекцию пакетов исходного кода XBPS. Тем не менее, этот аспект обслуживания системы является потенциальным камнем преткновения для новых пользователей с небольшим практическим опытом работы с Linux.

Компиляция из исходного кода выполняется в окне терминала. Как только вы изучите команды и поймете, что все пробелы и пометки, которые вы вводите, должны вводиться абсолютно точно, процесс будет работать нормально. Тем не менее, наличие кого-то, кто знает процесс - например, демонстрационное видео на Youtube - ослабит страх и разочарование.

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

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

Посетите веб-сайт Void Linux и перейдите на страницу загрузки. Прочитайте краткие инструкции по установке дистрибутива, чтобы получить общее представление о процессе. Если вам нужно больше информации, почитайте подробное руководство на Wiki.


Установка Void Linux выполняется простым текстовым установщиком, который запускается с помощью команд терминала.

Этот дистрибутив имеет индивидуальные ISO-образы для каждого поддерживаемого оборудования и рабочего стола. Вы не сможете получить ISO-образы со страницы загрузки. Вместо этого перейдите сюда.

Live-сеансы работали на моем оборудовании без сбоев. Я запустил несколько доступных настольных сред, каждая на своей машине. Вам необходимо использовать специальную утилиту, чтобы записать файлы ISO на DVD или USB-накопитель. Затем перезагрузите компьютер, чтобы загрузить live-сессию.


ISO-образы не всегда хорошо работают с виртуальными машинами. Они могут блокировать загрузку до тех пор, пока не будут выбраны подходящие параметры при настройке виртуальной среды.

У меня не было никаких проблем. Все они работали нормально с рекомендуемыми (по умолчанию) настройками Virtualbox.

ISO-образы live-сеансов - запускаемые либо на виртуальной машине, либо загруженные с DVD-диска - позволили легко загружать различные варианты рабочего стола и без усилий проверить внешний вид каждого предложения в изолированной среде.

На этом удобство закончилось. У ISO-образjd live-сеансов нет значка запуска установки на рабочем столе. Также у них нет опции меню для запуска процедуры установки.

Здесь пользователи с небольшим объемом знаний врезаются в каменную стену. Void Linux использует простой текстовый установщик, но вы должны запустить его из окна терминала.

ISO-образ live-сеансов для выбранного вами рабочего стола должен быть запущен на компьютере, на котором вы хотите установить Void Linux. Откройте главное меню и пролистайте категорию Accessories.

Найдите терминал и нажмите на него, чтобы открыть окно командной строки. Чтобы запустить установщик, введите эту команду в приглашении:

В приглашении будет запрошен ваш пароль, который все еще "voidlinux". Не забудьте нажать клавишу ввода еще раз.

Наиболее важный шаг - когда установщик переходит к ручному процессу настройки раздела жесткого диска. Установщик для этой задачи использует CFdisk.

Процедура очень похожа на то, что требуется для других установок Linux. Необходимо ввести точные спецификации, чтобы создать раздел на жестком диске и установить менеджер загрузки.

Достаточно много интернет-видеороликов могут показать вам этот процесс. Когда вы дойдете до последнего шага, установщик попросит вас нажать клавишу ВВОД, чтобы завершить процесс установки.

Я недоволен ручной установкой пакетов, которую использует Void Linux. Это возврат к интерфейсу командной строки, что мешает менее опытным пользователям Linux.

Я уверен, что пользователи, которые любят системы, основанные на Arch, или хорошо разбирающиеся в различных аспектах Unix и Linux, будут чувствовать себя как дома, устанавливая и удаляя команды только через ввод командной строки. В некоторых случаях CLI является неотъемлемой частью любой операционной системы.

Однако процесс достаточно прост. Откройте окно терминала.

Чтобы найти точное имя пакетов, из которых нужно выбрать новую установку, введите следующую команду:

Для полной синхронизации и обновления системы введите:

См. упомянутые выше страницы Wiki с полным списком всех команд xbps.

Имейте в виду, что все, что вы устанавливаете, будет обычными пакетами со стандартными темами. Разработчики не добавили никакой специальной интеграции или настройки для унифицированного представления Void Linux.

Опыт работы с десктопными программами очень похож на системное программное обеспечение. Вы получаете стандартную неизмененную версию интерфейса рабочего стола. Это не обязательно плохо.

Я знаком со всеми типами графических оболочек, которые предлагает Void Linux. Используя каждую из них в других дистрибутивах Linux, я видел тонкую настройку, которую некоторые разработчики встраивают в десктоп для создания согласованности внешнего вида. Некоторые настройки добавляют приятные улучшения, которые вы не получите в других дистрибутивах, использующих тот же вариант рабочего стола.

Продолжая изучать Void Linux, я ожидал, что системные настройки и настройки рабочего стола будут основаны на опыте работы с командной строкой, аналогично использованию менеджера пакетов. К счастью, это не так.

Конечно, набор параметров графического интерфейса зависит от того, какой вариант рабочего стола вы устанавливаете. Например, каждый интерфейс рабочего стола предоставляет панели настроек и параметры настройки, которые соответствуют тому, что вы найдете в других дистрибутивах Linux.

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

Однако после того, как вы установите и запустите Void Linux, среда рабочего стола обеспечивает удобную ежедневную работу.

Void Linux разрабатывается относительно небольшой группой добровольцев, которые создали систему и ее менеджер пакетов с нуля.

Помимо проблем с командной строкой, этот дистрибутив поставляется с хорошим набором сред рабочего стола. Если вы не являетесь опытным пользователем, я предлагаю ограничиться базовым установочным образом. Все графические окружения по умолчанию имеют минималистский набор программного обеспечения.

Базовая версия - это чуть больше, чем операционная система, в меню которой нет ничего, кроме того, что необходимо для начала работы с интернетом и установки всего остального с нуля.

Результатом является стабильная вычислительная платформа, которая всегда актуальна и содержит только то, что вам нужно.

Void Linux может без лишнего шума стать самой совершенной операционной системой Linux.

2 комментария:

Спасибо за статью, очень было интересно почитать.

Благодарю за информацию

Подпишитесь на RSS


Перевод. Оригинал здесь. Если вы новичек в Linux и ранее использовали iTunes для управления своим iPod/iPhone/iPad, то скорее всего буд.

uTorrent - это легкий и эффективный торрент-клиент для Linux, Windows OS и Mac OS. Установка uTorrent в Linux отличается тем, что здесь uT.

Вы можете запускать скрипты на python в Linux непосредственно из терминала. Знать, как это делается, полезно как программистам, так и пол.

Как вы наверное знаете, Safari является браузером по умолчанию в Mac OS X и iPhone OS. Вышло уже несколько релизов и для Windows, но версии .

Способ сброса пароля root в CentOS 7 кардинально отличается от такового в Centos 6. 1. В загрузочном меню нажмите "е" - реда.

Void Linux - представляет собой свободный дистрибутив Linux, который использует пакетный менеджер XBPS (X Binary Package System). Базовая установка полностью состоит из бесплатного программного обеспечения, за исключением бинарных ядер blobs. Но пользователи имеют возможность получить доступ к официальному несвободному репозиторию для установки проприетарного программного обеспечения. [Источник 1]

Содержание

Описание

Void является ярким исключением среди большей части дистрибутивов Linux, так как он использует runit как свою систему init вместо более популярной systemd. Systemd, в свою очередь, используется другими дистрибутивами, включая Arch Linux, CentOS, Debian, Fedora, Mageia и Ubuntu. Void является первым дистрибутивом, который по умолчанию включает LibreSSL в качестве системной криптографической библиотеки. Еще одной его особенностью является тот факт, что доступны отдельные установочные носители с использованием как glibc, так и musl.

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

Используя flavour, пользователи могут загружать предварительно настроенный установочный носитель, обеспечивающий типичные среды рабочего стола, такие как Cinnamon, Enlightenment, LXDE, MATE или Xfce. Корневая оболочка по умолчанию - Dash.

В 2008 году Хуан Ромеро Пардинес, бывший разработчик NetBSD, создал Void Linux, чтобы иметь возможность проверить качество работы менеджера пакетов XBPS. Существует множество различных сборок Void Linux, подходящих под разные платформы, например, для Desktop, Server или маленьких устройств (raspberry PI, Odroida U2/U3, cubie board).

Джесси Смит из DistroWatch отмечает быстрое время загрузки, которое он зачисляет на runit, но также отмечает, что документации и проверки ошибок не хватает. Официальный wiki является основным источником документации пользователя. [Источник 2]

Особенности

  • Это не ответвление или модификация существующего дистрибутива, он создан с нуля.
  • Rolling release.
  • Базовая установка предоставляет только инструменты для работы в консоли, адаптируйте её к своим потребностям!
  • Образы/модули Kernel никогда не удаляются, предоставляя всегда загружающуюся систему (только X86).
  • dracut регулирует initial ramdisk images.
  • dkms упрощает управление сторонних модулей kernel.
  • xbps — нативная система управления пакетами .
  • Собиратель пакетов (xbps-src) всегда работает под chroots, не требуя привилегий root.
  • Требуемые зависимости могут быть устранены через локальный/удалённый репозиторий.
  • Возможность собирать программное обеспечение из исходного кода, без сторонних программ.
  • Поддержка установки на BIOS и UEFI 64 bit (только X86). [Источник 3]

Технические характеристики

Управление пакетами

Void основан на модели плавающего релиза. Благодаря непрерывной системе сборки новое программное обеспечение сразу встраивается сборку пользователя, как только изменения добавляются в репазиторий исходного кода ОС на GitHub.

XBPS позволяет пользователям быстро устанавливать, обновлять и удалять программное обеспечение. В настоящее время существует более 8000 оптимизированных бинарных пакетов для архитектур x86, x86_64, ARMv6, ARMv7. Любой из пакетов в исходной коллекции XBPS также может быть построен из источника (изначально или с помощью скрещивания).

xbps-src - это построитель пакетов XBPS. Он создает программное обеспечение в контейнерах с использованием пространств имен Linux, обеспечивающих изоляцию процессов и монтирования. Не требуется root. Кроме того, xbps-src может создавать изначально или компилировать для целевой машины и поддерживает несколько библиотек C (glibc и musl).

Система Init

Void Linux использует runit как свою систему инициализации и диспетчера служб - это простой, эффективный и надежный руководитель службы с минимальными накладными расходами.

Безопасность

Void был первым дистрибутивом, который переключился на LibreSSL по умолчанию, заменив OpenSSL. Из-за бага Heartbleed, авторы дистрибутива считают, что проект OpenBSD имеет право предоставить более безопасную альтернативу, поскольку он имеет активных разработчиков. [Источник 4]

Код XBPS полностью совместим со стандартами POSIX / SUSv2 / C99 и выпущен с упрощенной лицензией BSD. Существует хорошо документированный API, предоставляемый библиотекой XBPS, который является основой для его интерфейсов для обработки двоичных пакетов и репозиториев. Некоторые основные моменты:

Коллекция исходных пакетов XBPS

Данный репозиторий содержит коллекцию исходных пакетов XBPS для создания бинарных пакетов для дистрибутива Void Linux [Источник 5]

Прилагаемый xbps-src скрипт будет получать и компилировать исходный код, а также, установить его файлы в fake destdir, генерировать XBPS бинарные пакеты , которые могут быть установлены или запрошены через xbps-install(1) и xbps-query(1).

Требования

xbps-src требуется утилита для закрепления и привязки монтирования существующих каталогов в каталог masterdir, используемый в качестве основного chroot. xbps-src поддерживает несколько утилит для выполнения этой задачи:

  • xbps-uunshare(1) - Используемая утилита XBPS user_namespaces(7) (часть xbps, по умолчанию).
  • xbps-uchroot(1)- Утилита XBPS, которая использует namespacesи должна быть setgid(часть xbps).
  • proot(1)- утилита, которая реализует монтирование chroot / bind в пространстве пользователя.


xbps-uunshare (1) Эта утилита требует следующие параметры ядра Linux:

  • CONFIG_NAMESPACES
  • CONFIG_IPC_NS
  • CONFIG_UTS_NS
  • CONFIG_USER_NS

Это метод по умолчанию, и если ваша система не поддерживает какие-либо обязательные параметры ядра, она не будет работать EINVAL (Invalid argument).

x bps-uchroot (1) Эта утилита требует следующие параметры ядра Linux:

  • CONFIG_NAMESPACES
  • CONFIG_IPC_NS
  • CONFIG_PID_NS
  • CONFIG_UTS_NS

Ваш пользователь должен быть добавлен в специальную группу, чтобы иметь возможность использовать, xbps-uchroot(1) и исполняемый файл должен быть setgid:

Чтобы включить это:

Если по какой-либо причине происходит ошибка как ERROR clone (Operation not permitted), проверьте, что ваш пользователь является участником требуемого, groupи что xbps-uchroot(1) утилита имеет соответствующие разрешения и владельца / группу, как описано выше.

Быстрая настройка в Void

Клон void-packages репозиторий, установить пакеты начальной загрузки:

чтобы увидеть все доступные цели / опции и начать сборку любого доступного пакета в srcpkgsкаталоге.

Установите пакеты начальной загрузки

В bootstrap пакетах представляют собой набор пакетов , необходимых для создания любого доступного источника пакета в контейнере. Есть два способа установки bootstrap:

Если вы не хотите тратить свое время на создание всего с нуля, возможно, лучше использовать binary-bootstrap.

Конфигурация

etc/defaults.conf Файл содержит возможные параметры , которые могут быть переопределены с помощью etc/conf файла конфигурации xbps-src утилиты; если этот файл не существует, попытается прочитать параметры конфигурации из

Если вы хотите настроить по умолчанию CFLAGS, CXXFLAGS и LDFLAGS, не отменяют тех , которые определены в etc/defaults.conf, установите их на etc/conf вместо т.е.

Родные и скрещенные флаги компилятора / линкера устанавливаются на одну архитектуру в common/build-profiles и common/cross-profiles соответственно. В идеале эти настройки достаточно хороши по умолчанию, и нет необходимости устанавливать свои собственные, если вы не знаете, что делаете.

Виртуальные пакеты

etc/defaults.virtual Файл содержит замены по умолчанию для виртуальных пакетов, используемых в качестве зависимостей в дереве исходных пакетов.

Если вы хотите , чтобы настроить эти замены, копировать etc/defaults.virtualв etc/virtual и изменить его в соответствии с вашими потребностями.

Иерархия каталогов Следующая иерархия каталогов используется с файлом конфигурации по умолчанию:

Описание этих каталогов следующее:

  • masterdir: главный каталог, который будет использоваться как rootfs для сборки / установки пакетов.
  • builddir: распаковать архивы с исходным кодом пакета и место, где он собран.
  • destdir: для установки пакетов, также известный как поддельный destdir .
  • hostdir/ccache: сохранить данные ccache, если XBPS_CCACHE опция включена.
  • hostdir/distcc-<arch>: сохранить данные distcc, если XBPS_DISTCCопция включена.
  • hostdir/repocache: для хранения бинарных пакетов из удаленных репозиториев.
  • hostdir/sources: хранить исходники пакетов.
  • hostdir/binpkgs: локальный репозиторий для хранения сгенерированных бинарных пакетов.

Сборка пакетов

Простейшая форма сборки пакета достигается путем запуска pkgцели в xbps-src:

По умолчанию xbps-src пытается разрешить зависимости пакетов в следующем порядке:

  • Если в локальном репозитории существует зависимость, используйте ее ( hostdir/binpkgs).
  • Если в удаленном репозитории существует зависимость, используйте ее.
  • Если в исходном пакете существует зависимость, используйте ее.

Можно полностью избежать использования удаленных репозиториев, используя -Nфлаг.

Варианты сборки пакета

Поддерживаемые параметры сборки для исходного пакета могут быть показаны с помощью xbps-src show-options:

Опции сборки могут быть включены с -oфлагом xbps-src:

Параметры сборки можно отключить, добавив к ним префикс

Оба способа могут использоваться вместе для включения и / или отключения нескольких параметров одновременно с помощью xbps-src:

Параметры сборки также могут быть показаны для бинарных пакетов через xbps-query(1):

Постоянные глобальные параметры сборки пакета могут быть установлены через XBPS_PKG_OPTIONS переменную в etc/conf файле конфигурации. Для каждого пакета могут быть установлены опции сборки XBPS_PKG_OPTIONS_<pkgname>.

Список поддерживаемых параметров сборки пакета и его описание определяется в common/options.description файле или в templateфайле.

Совместное использование и подписание ваших локальных репозиториев

Для удаленного совместного использования локального репозитория необходимо подписать его и сохранить бинарные пакеты. Это достигается с помощью xbps-rindex(1) утилиты.

Сначала необходимо создать ключ RSA с помощью openssl(1) или ssh-keygen(1):

В настоящее время xbps принимает только ключи RSA в формате PEM.

Когда закрытый ключ RSA готов, вы можете использовать его для инициализации метаданных репозитория:

А затем сделайте подпись для пакета:

Если --privkey не установлен, по умолчанию используется

Если ключ RSA был защищен парольной фразой, вам придется набрать его или установить его с помощью XBPS_PASSPHRASE переменной среды.

Как только бинарные пакеты были подписаны, проверьте, что хранилище содержит соответствующие hex fingerprint:

. Каждый раз, когда создается двоичный пакет, подпись пакета должна быть создана с помощью --sign-pkg.

Невозможно подписать хранилище несколькими ключами RSA.

Перестройка и перезапись существующих локальных пакетов

Если по какой-либо причине пакет был скомпонован и доступен в вашем локальном репозитории, и вам нужно перестроить его, не затрагивая его versionили revisionполя, можно легко выполнить эту задачу с помощью xbps-src:

Переустановка этого пакета в вашу цель также rootdirможет быть легко сделана:

Обратите внимание, что package expression необходимо правильно определить, чтобы явно выбрать пакет из нужного репозитория.

Включение distcc для распределенной компиляции Настройте подчиненные (машины, которые будут компилировать код):

Измените конфигурацию, чтобы разрешить вашим локальным сетевым компьютерам использовать distcc (например 192.168.2.0/24):

Включите и запустите distccd службу:

Установите distcc на хост (машина, которая выполняет xbps-src), а также. Если вы не хотите использовать хост в качестве ведомого на других машинах, нет необходимости изменять конфигурацию.

На хосте теперь вы можете включить distcc в void-packages/etc/confфайле:

Значения в примере педполагают наличие локального центрального процессора с 4 ядрами, из которых самое большее 2 используются для заданий компилятора. Количество слотов для заданий препроцессора установлено равным 24, чтобы иметь достаточно предварительно обработанных данных для компиляции другими процессорами. Ведомый 192.168.2.101 имеет ЦП с 8 ядрами, и / 9 для количества заданий является насыщающим выбором. Ведомый 192.168.2.102 настроен на выполнение максимум 2 заданий компиляции для поддержания низкой нагрузки, даже если его ЦП имеет 4 ядра. Параметр XBPS_MAKEJOBS увеличен до 16, чтобы учесть возможный параллелизм (2 + 9 + 2 + некоторый провал).

Зеркала дистрибутивов

В etc / conf вы можете опционально определить зеркало или список зеркал для поиска дистрибутивных файлов.

Если нужно искать более одного зеркала, вы можете указать несколько URL-адресов, разделенных пробелами, или добавить в переменную, как это

Обязательно ставьте пробел после первой двойной кавычки в этом случае.

Выполняется поиск зеркал, чтобы дистрибутивы могли создать пакет, пока контрольная сумма загруженного файла не совпадет с контрольной суммой, указанной в шаблоне.

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

Если вы используете prootили uchrootдля своего XBPS_CHROOT_CMD, вы также можете указать локальный путь с использованием file:// префикса или просто абсолютный путь на хосте сборки (например, / mnt / distfiles). Зеркальные расположения, указанные таким образом, монтируются с привязкой внутри среды chroot в $ XBPS_MASTERDIR и ищут дистрибутивные файлы точно так же, как удаленные расположения.

Кросс-компиляция пакетов для целевой архитектуры

В настоящее время xbps-sr cможет создавать кросс-пакеты для некоторых целевых архитектур с помощью кросс-компилятора. Поддерживаемая цель показана с ./xbps-src -h.

Если исходный пакет был адаптирован для кросс- xbps-src сборки, он автоматически соберет двоичные пакеты с помощью простой команды:

Если сборка по какой-либо причине не удалась, это может быть новой проблемой сборки или просто потому, что она не была адаптирована для кросс-компиляции .

Использование xbps-src в зарубежном дистрибутиве Linux

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

Чтобы использовать xbps-src в вашем дистрибутиве Linux, используйте следующие инструкции. Давайте начнем скачивать статические двоичные файлы xbps:

Если ваша система не поддерживает user namespaces, привилегированная группа должна иметь возможность использовать xbps-uchroot(1)с xbps-src, по умолчанию она установлена ​​на xbuilde rгруппу, измените ее на желаемую группу:

Клонировать void-packagesрепозиторий git:

и xbps-src должен быть полностью функциональным; просто запустите bootstrap процесс, то есть:

MASTERDIR по умолчанию создается в текущем рабочем каталоге, то есть void-packages/masterdir.

Переделывать masterdir

Если по какой-то причине вам необходимо обновить xbps-src, а bootstrap-update цели недостаточно, можно восстановить masterdir с помощью двух простых команд (обратите внимание, что zap оставляет каталоги нетронутыми ccache/distcc/host):

Поддержание вашего masterdir в актуальном состоянии

Иногда пакеты начальной загрузки должны быть обновлены до последней доступной версии в репозиториях, это достигается с помощью bootstrap-updateцели:

Сборка 32-битных пакетов на x86_64 Для сборки 32-битных пакетов на x86_64 доступны два способа:

  • режим кросс-компиляции
  • родной режим с 32-битным masterdir

Первый режим (кросс-компиляция) так же прост, как:

Для второго режима (родного) нужен новый x86 masterdir:

Сборка пакетов изначально для библиотеки musl C

Собственная среда сборки необходима для возможности кросс-компиляции пакетов начальной загрузки для библиотеки musl C; это достигается путем установки их через binary-bootstrap:

Теперь кросс-компиляция base-chroot-musl для вашей родной архитектуры:

Подождите, пока все пакеты не будут собраны, и когда будете готовы, подготовьте новый masterdir с пакетами musl:

Теперь ваш новый masterdir готов к сборке пакетов для библиотеки musl C. Пытаться:

Чтобы увидеть, работает ли динамический компоновщик musl C должным образом.

Создание пустотной базовой системы с нуля Чтобы перестроить все пакеты base-system для вашей родной архитектуры:

Также возможно скомпилировать все с нуля:

После завершения сборки вы можете указать путь к локальному репозиторию void-mklive, т.е.

В феврале 2021 года, я купил себе новый ноутбук. Ну и как это обычно бывает, разумеется я решил поставить на него основной ОС Linux. Почему не Windows? Потому что. Узкоспециализированным софтом по типу фотошопа не пользуюсь, минимум что мне нужно от системы - скорость и наличие в ней IDE и браузера с эксплорером, ну и чтобы от батареи долго работало. Если винда и подходит по первым пунктам, то вот с последним беда. Поэтому я приступил к поиску дистрибутива.

Выбирал долго. Искал такой дистр, чтобы его поставить, настроить и забыть. Спустя 2 дня усердного гуглинга, выбор пал на Arch, все пакеты, нужные мне там были, единственно смущала systemd, но я на тот момент из альтернатив знал только Gentoo, поэтому просто смирился, да и работа не ждет, пора ставить систему.

Вечером я просто пролистывал ленту и случайно наткнулся на neofetch Void`a. Тогда я вообще не знал об этом дистре, а неофетч понравился, картинка красивая, зеленая. Загуглил (лучше бы я этого не делал).

Почему Void

Читая описание я прям воодушевился! Просто не верил своим глазам: разработан с нуля, с супер-быстрым пакетным менеджером xbps (тоже с нуля), система инициализации runit, rolling release - одним словом супер. Прям то, что доктор прописал, все для меня подходит, подумал я перешел на вкладку Downloads. Arch уже был благополучно забыт.

Но вот незадача, что выбрать, неизвестную (мне тогда) musl libc или старую добрую glibc. Я смутился и опять полез в вики, благо там была отдельная ссылка про эту библиотеку.

musl is lightweight, fast, simple, free, and strives to be correct in the sense of standards-conformance and safety.

Прочитал я, и забыв обо всем скачал base версию дистрибутива на musl, заодно прихватив с собой lxde версию, чисто по приколу с лайв режима пощупать.

Первые "звоночки"

Запустившись с лайв режима в lxde я увидел это:

No session for pid 991

No session for pid 991

Не знаю честно говоря, что это был за баг и баг ли это был вообще, но это меня даже не насторожило. Дальше все было нормально, загрузил терминал, потыкал xbps, понял что немного неудобно для операции поиска вводить xbps-query, а для установки xbps-install. В последствии уже привыкаешь, чуть ли не на автоматизме этой утилитой пользуешься.

Накатил базовую систему, сделал памятное фото tty и начал настраивать линукс.

Красивый логотип и 128 пакетов

Красивый логотип и 128 пакетов

В качестве оконного менеджера выбрал i3wm, ведь тайлинг, да еще и на ноутбуке - удобно! Плюс, что он много есть не просит и после всех настроек, из 8 гигов оперативки, система, с запущенным firefox'ом (25 вкладок) съедает всего 2.7 гигабайта. По итогу получилось вот так:

Этот скрин сделан на момент печати статьи

Этот скрин сделан на момент печати статьи

А теперь те самые звоночки. Захотел запустить Visual Studio Code (он у меня уже был установлен, и при установке ошибок не было), до необходимости его не открывал, а расширения решил потом поставить. Но надо бы доделать проект, я открываю rofi, нахожу там code-oss, запускаю и. ничего. Думал, что надо чуть-чуть подождать..подождал минуту, две. десять минут. Посмотрел логи, а там странная ошибка: Warning: 'app' is not in the list of known options, but still passed to Electron/Chromium. Пошел гуглить, вроде ничего страшного, это даже не особо, то и ошибка, он должен загрузиться. Но я проверил, он даже на милисекунду не открывался. Тогда то я и решил воспользоваться xbps-src. Этот скрипт позволяет, как я понял, собрать пакет из исходников для моей системы. Собирал долго, в конце концов получив тонну непонятных ошибок. А время идет, пришлось поискать альтернативу вскоду, потому что, как позже выяснилось, он не может быть собран для musl. Atom к слову вообще отсутствовал в репозитории. Из 10 предложенных альтернатив, загрузился только codelite, но это уже совсем не то..

И такая история - это капля в море ошибок несовместимости, как следствие, я чувствовал себя словно в клетке. Захотел Google Chrome? Он не может быть собран для musl, пользуйся Chromium'ом, без гугл-аккаунта. Как альтернатива - firefox. Захотел Github-Desktop? Он не работает. Что делать? Бежать искать альтернативу. Раз за разом наблюдая пустой вывод команды xbps-query -Rs <название-искомого-пакета>, надеясь, что следующие поиски дадут хоть какой-нибудь результат.

В таком адском режиме я провел 5 месяцев, при неудаче успокаивая себя тем, что сама система работает быстро и безотказно (как с glibc), а значит можно жить. Не работает пакет? Переустанови и перезагрузи компьютер. Опять не работает? Ищем недостающие библиотеки в гугле или ищем инфу по ошибке на мертвом реддите воида, потому что больше негде. К слову информации по дистрибутиву в интернете очень мало, и если я и фиксил проблему быстро, то это не более чем простое везение. За это время я перекопал горы конфигов и библиотек, даже пытался собирать ПО из исходников (естественно безуспешно, потому что не хватало glibc).

В какой-то момент я поставил gcompat, но он не работал должным образом. Сайт альтернатив, постоянно занимал первую вкладку браузера. Естественно после установки-удаления пакетов скапливалось очень много хлама, хорошо, что есть xbps-query -O (показывает "осиротевшие пакеты", которые ставятся, как зависимости, а потом просто занимают место на диске). Очень редко когда установленный софт начинал работать корректно и сразу. По итогу я стал будто параноиком, первое, что приходит в голову, при какой либо ошибке: "musl!"

Заключение

Прямо сейчас я делаю загрузочную флешку с дистрибутивом Void linux на базе glibc. На виртуальной машине, все программы, в которых я столь долго себе отказывал, заработали должным образом. Борьба окончена. Все необходимые файлы, конфиги и проекты сохранены на внешнем жестком диске. Так же ждет своей очереди скрипт, который был написан с целью вернуть компьютер в "исходное" состояние, как будто я не удалял систему. Void Linux - прекрасный дистрибутив, он и правда быстр и легок, а xbps - это самый быстрый пакетный менеджер из всех, которые я когда либо встречал (и если привыкнуть к его особенностям, то и самый удобный). Но musl. Уж лучше подождать несколько наносекунд или понаблюдать за warning'aми в консоли, чем бороться с несовместимостями и отказывать себе снова и снова в любимом софте. Если надумали поставить Void Linux, не трогайте musl.

Читайте также: