XBPS в Void Linux. Linux статьи
Написать статью
Войдите, чтобы писать статьи

XBPS в Void Linux

26

Пакетный менеджер XBPS

Материал написан пользователем сайта.

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

XBPS (X Binary Package System) — менеджер пакетов, используемый в Void Linux для установки, обновления и удаления программного обеспечения. Изначально написанный для Void с нуля, он также является переносимым пакетным менеджером, который теоретически можно использовать где-то еще. Вы, вероятно, заметите, что здесь нет ни man-страницы xbps, ни отдельных бинарников XBPS, потому что XBPS - это набор программ, которые довольно сильно связаны между собой и похожи по структуре. Тем не менее, конечно, это разные команды

Несмотря на то, что диспетчер пакетов XBPS имеет множество расширенных  функций, основные операции по управлению программным обеспечением  выполняются с помощью четырех команд:

xbps-query поиск в репозиториях и по установленной системе;
xbps-install
для установки и обновления пакетов;
xbps-remove
для удаления пакетов;
xbps-src
для сборки пакетов, распространяемых третьими лицами в качестве исходных архивов.

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

Репозитории Void Linux

По умолчанию у Void есть только свободное программное обеспечение. Другими словами, существует разделение между свободными и несвободными программами. Если вы хотите установить несвободное программное обеспечение в свою систему Void, вам необходимо установить следующий дополнительный репозитории void-repo-nonfree и void-repo-multilib-nonfree

sudo xbps-install -S void-repo-nonfree void-repo-multilib-nonfree

Чтоб увидеть список подключенных репозиториев, используйте

xbps-query -L

Обновление системы

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

doas xbps-install -Su
XBPS. Обновление системы

Поиск пакетов

Для поиска пакетов в доступных репозиториях используйте команду xbps-query. Эта утилита в XBPS позволяет искать нужный пакет и информацию в репозиториях.

xbps-query -Rs package 
XBPS. Поиск пакетов по репозиториям

Уже установленные в систему пакеты помечены [*], а доступные [-]

Поиск локально, среди установленных пакетов

xbps-query -s
XBPS. Поиск пакетов в системе (установленных)

Установка и обновление пакетов

xbps-install позволяет пере- и устанавливать или обновлять пакеты

doas xbps-install -S vlc
XBPS. Установка пакета

xbps-install определит все необходимые зависимости и позаботится о них, задаст вопрос перед установкой.

Удаление пакета

Утилита xbps-remove  удаляет установленные пакеты из системы.

doas xbps-remove -R firefox-esr
Xbps. Удаление пакета

Обратите, XBPS не даёт удалить пакет, ломающий зависимости другого, их можно удалить вместе. По этой причине я не могу удалить Parole, установленный вместе с Xfce, и Ristretto, которую установил сам.

Кроме того, добавление параметра -R ( --recursive) удаляет ненужные зависимости, которые были установлены целевым пакетом.

Xbps. Удаление пакета без и с зависимостями

Удаление неиспользуемых пакетов (сирот)

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

doas xbps-remove -yo 
(y перед ключом ответит ДА на заданные вопросы)

Очистка кэша пакетов

Каждый раз, когда xbps-install загружает новый pkg, будь то новая установка или обновление, они сохраняются в папке /var/cache/xbps. Поэтому, если вы не будете периодически удалять их, они будут постепенно отъедать место накопителя. Кэш желательно периодически очищать. Сделать это можно командой

doas xbps-remove -yO
(y перед ключом ответит ДА на заданные вопросы)

У меня данная команда эту директорию не очищает.

doas rm *

Получить информацию о пакете

xbps-query -Rs даёт краткую информацию по пакету

XBPS. Краткая информация о пакете

xbps-query -R выводит расширенную информацию о пакете, включая зависимости

XBPS. Расширенная информация о пакете

Установка пакетов из исходных кодов

Ремарка
Одной из причин выбора этого дистрибутива стала возможность собирать из исходников, как в Arch & Gentoo, но у меня пакеты не хотели собираться. Пока редактировал, нашёл что не так и xbps-src заработал, — в скачанной папке есть файлик README.md, в котором указаны требования (Requirements), расписан этот процесс подробнее. Процесс сборки пошёл после установки пакета «curl».

Сам инструмент xbps-src представляет собой скрипт оболочки Bash, позволяющий собирать пакеты из репозитория Void на GitHub в бинарные файлы, которые вы можете установить с помощью XBPS. В основном вы будете использовать его для установки пакетов, недоступных в официальных репозиториях Void. Прежде всего убедитесь, что у вас есть git. Если это не так, выполните эту команду в терминале. Согласно ремарке выше, добавлю сюда ещё curl

doas xbps-install -S git curl

Затем вам нужно будет клонировать репозиторий пакетов Void с GitHub

git clone https://github.com/void-linux/void-packages.git

Это создаст директорию void-packages с деревом исходных кодов всех пакетов Void в srcpkgs.


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

cd void-packages
./xbps-src binary-bootstrap

#включите пакеты с ограниченным доступом
echo XBPS_ALLOW_RESTRICTED=yes >> etc/conf

#запустите операцию
./xbps-src pkg name-package

Описанный выше процесс помещает собранный бинарный пакет в каталог. Устанавливается собранный пакет так же через XBPS

#Тут лежат файлы бинарные
/home/user/void-packages/hostdir/binpkgs 
/home/user/void-packages/hostdir/binpkgs/nonfree

#Установка
sudo xbps-install --repository=hostdir/binpkgs package-name
sudo xbps-install --repository=hostdir/binpkgs/nonfree package-name

#Поищите этот целевой пакет через xbps-query 
xbps-query -Rs pkg_name

Заключение

Теперь вы представляете себе поведение и применение XBPS в Void. Надеюсь, кому-то это поможет установить и попробовать самому эту славную систему. Разумеется, это не все команды и ключи, список более обширен, кое-что можете почерпнуть в документации, не забывайте о команде «--help». Ниже оставлю шпаргалку, взятую и переведённую с Github.

Шпаргалка по использованию XBPS

### Примеры ###

xbps-install -Syu — обновить все пакеты в системе
xbps-remove -Oo — очистите каталог кэша и удалите ненужные пакеты
xbps-query -R — показать информацию о пакете, доступном в репозиториях
xbps-query -Rf
— оказать список файлов пакета, доступного в репозиториях
xbps-query -Ro /bin/ls
 — найдите пакеты, которым принадлежит файл /bin/ls в репозиториях
xbps-query -Rs — поиск пакетов в репозиториях, соответствующих шаблону по объектам pkgver и short_desc
xbps-pkgdb -m manual — сделать пакет сохраняемым (не будет распознаваться как сирота)
xbps-remove -R
— удалить пакет и все ненужные зависимости, которые были установлены


### Добавление репозиториев через командную строку

xbps-query --repository=<url> ...
xbps-install
--repository=<url> ...


### Поиск файлов и пакетов

xbps-query -Rs — поиск пакетов по репозиториям
xbps-query -s — поиск по установленным пакетам
xbps-query -f — файлы, предоставляемые пакетом
xbps-query -l | awk '{ print }' | xargs -n1 xbps-uhelper
getpkgname — получить список всех установленных пакетов, без указания их версии
xbps-query -l — запросить список установленных пакетов
xbps-query -L
— увидеть URL-адреса репозитория во время синхронизации
xbps-query -m
 — список установленных пакетов, которые были установлены вручную
xbps-query -H
 — список заблокированных пакетов
xbps-query -O — список пакетов-сирот
xbps-query
pkgname — информация о пакете
xbps-query -f
 — показать список файлов пакета
xbps-query -x
— показать требуемые зависимости
xbps-query -X
 — показать требуемые обратные зависимости
xbps-query -o — пакеты, соответствующие файлу с указанным шаблоном(ами) (режим ownedby)


### xbps-install - установка и обновление пакетов

xbps-install -S — синхронизировать репозиториии с зеркалом
xbps-install -Su
 — обновление системы
xbps-install -u — обновление всех пакетов
xbps-install -u package — обновление конкретного пакета
xbps-install package
 — установка пакета
xbps-install package1 package2 package3 — установка нескольких пакетов


### xbps-remove - удаление пакетов

xbps-remove — удалить пакет
xbps-remove -R
 — удалить пакет с зависимостями
xbps-remove -o — пакеты-сироты
xbps-remove -O — очистка кэша


### xbps-reconfigure — настройка пакета
xbps-reconfigure [-f] <package name> — настройка пакета
-a — настройка всех пакетов
-f — принудительная настройка


### xbps-pkgdb - проверка на наличие ошибок в пакетах и ​​pkgdb

Утилита xbps-pkgdb может использоваться для проверки на наличие ошибок в пакетах и в базе данных пакетов. Она также используется для обновления формата базы данных пакетов (если в ней произошли изменения). Она работает точно так же, как и xbps-reconfigure, и ожидает имя пакета или -a, --all для всех пакетов.

xbps-pkgdb -u — обновить формат pkgdb до последней версии
xbps-pkgdb -a — проверь наличие ошибок в установленных пакетах и ​​в pkgdb
xbps-pkgdb <package> | -a —
xbps-pkgdb -m hold <package> — заблокировать версию пакета во время обновления системы
xbps-pkgdb -m unhold <package> — снять блокировку
xbps-pkgdb -m repolock <package> —  переблокировать пакет
xbps-pkgdb -m repounlock <package> — снять повторную блокировку
xbps-pkgdb -m auto <package> — перевести пакет в авто режим (установить как зависимость)
xbps-pkgdb -m manual <package> — перевести пакет в ручной режим (не будет определен как потерянный)


Компоненты Xbps
                                                         
xbps-create - Утилита XBPS для создания двоичных пакетов
xbps-dgraph - Утилита XBPS для создания точечных графиков
xbps-install - Утилита XBPS для установки и обновления пакетов
xbps-pkgdb  - Утилита XBPS для сообщения о проблемах и устранения их в pkgdb
xbps-query - Утилита XBPS для запроса информации о пакете и репозитории
xbps-reconfigure - Утилита XBPS для настройки установленных пакетов
xbps-remove - Утилита XBPS для удаления пакетов
xbps-rindex - Утилита XBPS для обработки локальных репозиториев двоичных пакетов

Лайков: +10
войдите, чтобы ставить лайки
26
  • Опубликовано: 16.06.2025
  • Minor748

Комментарии

xKDE
Активный пользователь
Активный
16.06.2025
09:49
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
>> этой причине я не могу удалить Parole, установленный вместе с Xfce, и Ristretto
Вы же сами указываете все команды)
xbps-pkgdb -m manual xfce4
решит Вашу проблему с удалением Parole
Minor748
Активный пользователь
Активный
16.06.2025
12:40
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийxKDEРодительский комментарий
0
войдите, чтобы ставить лайки
Интересно, но не понятно ). С назначением компонента xbps-pkgdb я ничего пока понял (куда и как его применять, примеры нужны, но это я потом поищу как-нибудь).
xKDE
Активный пользователь
Активный
16.06.2025
14:10
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийMinor748Родительский комментарий
0
войдите, чтобы ставить лайки
Непонятно... Оно, собственно, везде одинаково работает. Мета пакет надо отвязать (xfce4, в данном случае - это же просто пустышка, чтобы не перечислять весь список пакетов для установки), после его можно удалить. Все пакеты, установленные как его зависимости, останутся! Если таких "кандидатов" не много, то в void'e есть финт ушами:
echo "ignorepkg=parole" | sudo tee -a /etc/xbps.d/10-ignore.conf
Что оставит в системе мета-пакет xfce4, но он не будет требовать parole и его можно спокойно удалить!
Minor748
Активный пользователь
Активный
16.06.2025
14:29
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийxKDEРодительский комментарий
0
войдите, чтобы ставить лайки
А этот файлик у меня не пуст, оказывается. Я туда добавил не нужные прошивки, чтоб удалить их. Вот )
https://bin.disroot.org/?1db0bb4969538468#qH42kdKhY7zzD4hnYyCfqKGR7Lqoq8M3qYSNFaf8tq5
xKDE
Активный пользователь
Активный
16.06.2025
14:33
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийMinor748Родительский комментарий
0
войдите, чтобы ставить лайки
Тем более)))
vantiki
Активный пользователь
Активный
16.06.2025
11:54
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
+, очень полезный материал

Удобнее чем войдовская документация точно, как минимум листать страницы не надо.
choice
Активный пользователь
Активный
16.06.2025
14:06
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+2
войдите, чтобы ставить лайки
С Void не знаком, поэтому только из вашего обзора.
Понравилась дискретность утилит управления пакетами - разработчики могут шлифовать их отдельно, главное сохранять связь между ними. Хороший подход, продуманный. Ключи команд, кеш и общий дух близок к arch.
Вряд ли Parole и Ristretto крепко привязаны к xfce, хотя подход напоминает, как будто есть коммерческая поддержка, а это чтобы клиент меньше напрягал. Желаю вам разобраться с прицельным удалением Parole и, надеюсь, позже вы расскажите здесь об этом.
Minor748
Активный пользователь
Активный
16.06.2025
14:43
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийchoiceРодительский комментарий
+1
войдите, чтобы ставить лайки
Всё удалил https://postimg.cc/YGsKRg80
Добавил пакет в игнорируемые, как это сделал для не нужных прошивок, xKDE выше подсказал.
https://pingvinus.ru/note/xbps-in-void-linux#c115141
Cogar
Активный пользователь
Активный
16.06.2025
17:59
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийMinor748Родительский комментарий
0
войдите, чтобы ставить лайки
Здравствуйте! В debian xfce тоже можно удалить? Если да, то можно подробнее как?
Minor748
Активный пользователь
Активный
16.06.2025
18:06
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийCogarРодительский комментарий
0
войдите, чтобы ставить лайки
https://pingvinus.ru/note/apt
Cogar
Активный пользователь
Активный
16.06.2025
18:24
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийMinor748Родительский комментарий
0
войдите, чтобы ставить лайки
Там нет ни слова о том как отвязать от метапакета его зависимые пакеты. Ткните если не прав?
Minor748
Активный пользователь
Активный
16.06.2025
18:46
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийCogarРодительский комментарий
0
войдите, чтобы ставить лайки
В Debian есть метапакеты? Не силён в той системе, но не сталкивался с проблемой удаления там, что нужно какие-то финты устраивать
scorpii
Активный пользователь
Активный
16.06.2025
19:26
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийMinor748Родительский комментарий
0
войдите, чтобы ставить лайки
Метапакеты есть везде, вам дается право либо самому собирать свою сборку, либо установить все сразу
Minor748
Активный пользователь
Активный
16.06.2025
19:47
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийscorpiiРодительский комментарий
0
войдите, чтобы ставить лайки
Встречал их только в Gentoo, когда для установки de команды вида
'emerge -av xfce-base/xfce4-meta' или 'emerge -av kde-plasma/plasma-meta', и то для сборки своей. Подобного как в void не встречал пока.
scorpii
Активный пользователь
Активный
16.06.2025
19:51
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийMinor748Родительский комментарий
0
войдите, чтобы ставить лайки
Не всегда мета-пакет имеет приписку -meta
В сусе они помечены по-своему, например
vantiki
Активный пользователь
Активный
16.06.2025
19:45
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийCogarРодительский комментарий
+1
войдите, чтобы ставить лайки
В Debian отвязать через apt-mark можно. "# apt-mark manual <имя-пакета>". Потом через apt remove уже удаляем пакет. Однако не знаю, насколько актуальный метод на текущий момент. Пару лет назад на 11-м релизе работало.

P.S. Если пакет как зависимость указан, то apt-mark вряд ли поможет. С рекомендуемыми (а-ля фотокамера для гнома) работает. В ином случае только переупаковка метапакета, но там уж проще вручную всё прописать :)
Cogar
Активный пользователь
Активный
17.06.2025
07:35
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийvantikiРодительский комментарий
0
войдите, чтобы ставить лайки
Спасибо. Хоть кто-то по существу вопроса ответил.
xKDE
Активный пользователь
Активный
16.06.2025
14:10
Комментарий удален.
scorpii
Активный пользователь
Активный
16.06.2025
19:29
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
Вижу Минорчика зацепило. Разобрал все по полочкам, чувствуется детальный подход. Красавчик, а я рад что в нашем полку прибыло.
gordiash
16.06.2025
20:12
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
Автор, жги еще! По теме Void в интернете очень мало информации. Хочется услышать о сборке кастомного ISO образа Void Linux собранного через утилиту void-mklive.

Горячо жду больше статей про Void. Поскольку оригинальный Handbook очень немногословен и аскетичен.
Minor748
Активный пользователь
Активный
16.06.2025
20:23
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийgordiashРодительский комментарий
0
войдите, чтобы ставить лайки
Принято. Есть ещё одна задумка. Сообщество руязычное и правда небольшое, встречал пока только ТГ канал, из которого я вышел, там мне не понравились атмосфера и коллектив.
igorborisov
Активный пользователь
Активный
17.06.2025
10:04
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийMinor748Родительский комментарий
0
войдите, чтобы ставить лайки
Чем короче документация, тем больше боль в нижней части спины
scorpii
Активный пользователь
Активный
16.06.2025
20:41
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
> xbps-remove -Oo

нужно быть аккуратным при выполнении данной команды. могут быть удалены нужные вам пакеты, посему советую внимательно читать вывод, а не просто жмякать 'yes', а также дополнить набор маленькой утилитой с записью истории и последующим ее просмотром при необходимости
https://github.com/zakariaGatter/xbps-hist
если что-то пошло не так, потом с помощью данной тулзы легко вычислить, какие действия над какими пакетами производились и переустановить пакет, попавший в список orphans и вычищенный командой
xbps-remove -o
Minor748
Активный пользователь
Активный
16.06.2025
21:52
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийscorpiiРодительский комментарий
0
войдите, чтобы ставить лайки
С удалением (чисткой) всегда надо быть бдительным и смотреть на вывод, иначе могут быть удалены важные пакеты, что система потом не загрузится.
В истории что-то искал 1 раз, но делал это в браузере, потому что fish устанавливаю. Можно в терминале, но там удобнее искать.
Сегодня устанавливал пакет CPU-X, fuzzypkg его не видит почему-то, через OctoXBPS установил. 'xbps-query -Rs' тоже вполне себе находит. Вот бы ещё кнопку истории добавили в OctoXBPS, а то как-то не порядок.
https://postimg.cc/F7Kqtssj
scorpii
Активный пользователь
Активный
16.06.2025
22:25
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийMinor748Родительский комментарий
0
войдите, чтобы ставить лайки
Поверю на слово, ибо мне сейчас негде проверить. Я ж уехал с Infinix Inbook, что сын мне отдал, а на нем суся (моя суся)). Ноут мне и для работы в том числе, потому и суся. В приоритете были надежность, наличие практически любого ПО. На основе Openbox считай сделал полноценное ДЕ, очень быстрое и непривередливое к ресурсам. Пока было немного времени освоил конфигурацию polybar, в качестве альтернативы tint2 (которая официально сусей не поддерживается и не развивается как проект).
...
Многие удивляются, как это я решился на такой шаг, в свои то 55, на что я им отвечаю словами: "Но странный стук зовет: «В дорогу!»
Может сердца, а может стук в дверь.
И когда я обернусь на пороге,
Я скажу одно лишь слово: «Верь!»"
x230
Активный пользователь
Активный
17.06.2025
00:11
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийscorpiiРодительский комментарий
0
войдите, чтобы ставить лайки
>> освоил конфигурацию polybar

А можно подробнее, - "я записую"!.. (©)
Что-то типа статейки/скрина?..

Написать комментарий

Ник:
Текст комментария:
  • Уважать других.
  • Не ругаться.
  • Без оскорблений.
  • Без грубости.
  • Не переходить на личности.
  • Писать на русском языке.
  • Без политики.
  • Без флуда.
Правила