2020-10 upd: we reached the first fundraising goal and rented a server in Hetzner for development! Thank you for donating !
Внимание! Данные страницы описывают CBSD версии 13.0.x. Если вы используете более раннюю версию, рекомендуется сначала обновиться.
Обратите внимание! Данные команды поддерживают маску (wildcard) в качестве jname, например: jname='*', jname='ja*l*'
Работа с ПО и pkg(7) в jail через CBSD
Команда pkg
% cbsd pkg
Описание:
cbsd pkg - это обертка вокруг стандартного FreeBSD pkg(7) для использования аргумента jname для более комфортной работы с ПО клетки из мастер-хоста.
Через аргумент mode= указывается необходимое действие. Значения могут быть:
- add, install - установить ПО
- remove - удалить ПО
- bootstrap - проинициализировать pkg (обычно делается при создании клетки 1 раз)
- info, query - выполнить соответствующие запросы info или query с аналогичным pkg синтаксисом
- update - выполнить pkg update
- upgrade - выполнить upgrade
- clean - выполнить clean для очистки кеша pkg
Для некоторых команд (clean, update, upgrade) позволительно jname= указывать маской для выполнения операции одновременно в нескольких клетках
Имейте ввиду, что вначале должны указываться параметры mode и jname. Все что идет после - не анализируется и относиться к pkg(7) как есть.
Кроме этого, учтите, что все операции выполняются с установленными переменными окружения ASSUME_ALWAYS_YES=yes и IGNORE_OSVERSION=yes для подавления интерактивности, что в основном, необходимо для работы в автоматизированных сценариях. Если по каким-то причинам вам это не подходит, используйте cbsd rexe для работы с pkg напрямую.
Пример1: Обновить индексные файлы внутри ВСЕХ контейнеров:
% cbsd pkg mode=update jname='*'
Пример2: Обновить ВСЕ пакеты внутри контейнеров, название которых начинаются с redis*:
% cbsd pkg mode=upgrade jname='redis*'
Пример3: Очистить кеш pkg все ВСЕХ контейнерах:
% cbsd pkg mode=clean jname='*'
Пример4: Получить список установленного ПО в клетке jail1:
% cbsd pkg mode=query jname=jail1 %o
Пример5: Установить bash, mc, wget в клетку mytest1:
% cbsd pkg mode=install jname=mytest1 bash mc wget
или, что гораздо лучше (во избежание одинаковых имен в разных категориях), указывать origin пакета, а не имя:
% cbsd pkg mode=install jname=mytest1 shells/bash ftp/wget misc/mc
Пример6: Обновить пакет mc в клетке jail1:
% cbsd pkg mode=upgrade jname=jail1 mc
Пример7: Удалить пакеты wget и lsof:
% cbsd pkg mode=remove jname=jail1 wget lsof