Categories Программы

Poudriere

Некоторые замечания перед началом

Так как сборка портов требовательна к ресурсам, то рекомендую выбрать компьютер с миниальными следующими характеристиками:
8-ми ядреный процессор (poudriere может работь в несколько потоков)
32 Гб ОЗУ (сборка будет в TMPFS)
HDD минимум 500 Гб (не SSD) для непосредственно сборки портов. Очень хорошо показала себя конфигурация где на SSD установлена вся система, а на HDD идёт сборка. Можно и на SSD собирать, но эту увеличит его износ и уменьшит время жизни.

Я сделал проще: раздел / — на SSD, а разделы swap и /var — на HDD. То есть, всё что требует скорости — на SSD, всё объёмное — на HDD

Сборка портов занимает время. Лучше всего ставить этот процесс на ночь, а утром неприятно удивиться, что он ещё незакончен.


Предварительная настройка системы

В файл /etc/fstab добавляем строку для подключения файловой системы работающей в оперативной памяти (TMPFS):

obj /usr/obj tmpfs rw 0 0

Монтируем её

mount -a

Проверяем. должно получиться что-то типа:

Где в последней строке видно, что TMPFS подмонтировалась.

Затем создаём файл make.conf и в него добавляем строки:

WRKDIRPREFIX=/usr/obj
DISTDIR = /var/ports/distfiles

Затем в файл ядра добавляем строки:

options TMPFS
options NULLFS # For poudriere
options PROCFS # For poudriere
options PSEUDOFS # For poudriere
options FDESCFS # For poudriere
options COMPAT_FREEBSD11 # For Rust

Пересобираем ядро, ставим его и перезагружаемся.


Получение портов

Свежую версию портов можно скачать по адресу https://download.freebsd.org/ports/ports/ports.tar.xz

Непосредственно в консоли:
root@pkgs: cd /var
root@pkgs: fetch https://download.freebsd.org/ports/ports/ports.tar.xz
root@pkgs: tar -xvf ports.tar.xz

В результате в каталоге /var появиться папка ports

Установка Poudriere

Ставится из портов и находится в /var/ports/ports-mgmt/poudriere

Ставится стандратно: make install clean

Вместе с нужной системой будет поставлен программный пакет git. Минимальная конфигурация для его нормальной работы такова:

После завершения установки удаляете каталог ports и скачиваете свежую версию командой:

git clone https://git.FreeBSD.org/ports.git /var/ports (процесс довольно долгий)

Затем ставите portmaster, которая находится в каталоге /var/ports/ports-mgmt/portmaster/

Запускаете обновление пакетов из свежеполученных портов командой:

portmaster -ad

В дальнейшем вы можете в файл /etc/crontab добавить строку:

0 4 * * * root git -C /var/ports pull

И каждый день в 4 утра порты будут обновляться. Ну или можете делать это сами командой git -C /var/ports pull

Все порты свежие, можно начинать.


Настройка poudriere

Файл настроек находится в каталоге /usr/local/etc и называется poudriere.conf и выглядит примерно так:

cat poudriere.conf

NO_ZFS=yes
FREEBSD_HOST=http://ftp.freebsd.org
RESOLV_CONF=/etc/resolv.conf
BASEFS=/var/poudriere
USE_PORTLINT=no
USE_TMPFS=all
TMPFS_BLACKLIST="rust, grafana, llvm17"
TMPFS_BLACKLIST_TMPDIR=${BASEFS}/data/cache/tmp
DISTFILES_CACHE=/var/ports/distfiles
URL_BASE=http://pkgs.fbsd.site/poudriere
HTML_TRACK_REMAINING=yes
CHECK_CHANGED_OPTIONS=verbose
CHECK_CHANGED_DEPS=yes
NOLINUX=yes
KEEP_OLD_PACKAGES=no
BUILDER_HOSTNAME=pkgs.fbsd.site
PRESERVE_TIMESTAMP=yes

Из интересного здесь:

USE_TMPFS=all— собирать пакеты в TMPFS
TMPFS_BLACKLIST="rust, grafana, llvm17" — чтобы собрать эти пакеты нужно больше 32 гб оперативки, так что они собираются как обычно.

Теперь переходим в каталог /usr/local/etc/poudriere.d и создаём там файл make.conf в который добавляем строки:

cat poudriere.d/make.conf

DEFAULT_VERSIONS+= mysql=9.1 php=8.4 gcc=15 postgresql=17
OPTIONS_SET+=NCURSES OPTIMIZED_CFLAGS THREADS
OPTIONS_UNSET+=BASH BRACKETEDPASTE BROTLI DEBUG DICT DOCS DOXYGEN DTRACE EXAMPLES FONTCONFIG GUI HELP INFO \
IPV6 JIT LMDB MAN MAN3 MANPAGES NLS NTLM PERL_64BITINT PORTS_READLINE PROXY SFTP SMB SUBSHELL TEST TIFF X11 ZSH

Где:
DEFAULT_VERSIONS+= версии зависимых пакетов которые используются при сборке нужных нам пакетов. Например, если при сборке порта zabbix7-server вы укажете базу mysql, он соберет mysql8.4. А если указано mysql=9.1 то именно эта версия и будет собрана.
OPTIONS_SET+= опции портов, которые будут отмечены при выполнеии команды make configure. И неважно, отмечена по умолчанию эта опция или нет.
OPTIONS_UNSET+= противоположна опции OPTIONS_SET+=


Создание окружения для сборки нужных нам портов

Для начала нужно создать jail (виртуалку с FreeBSD, в которой и будут собираться порты). Это делается командой:

poudriere jail -c -j default -v 14.3-RELEASE -a amd64

где: ключ -c — создать; -j — имя клетки; -v — версия FreeBSD устанавливаемой в клетку, -a — архитектура. Скачивание, распаковка и установка занимают какое-то время.

В последующем вы периодически будуте запускать команду poudriere jail -u -j default для обновления клетки.

Затем нужно создать дерево портов командой poudriere ports -c -p default. Порты также скачаются и распакаются за какое-то время и будут находиться в каталоге /var/poudriere/ports и называться этот каталог default-default. Его можно удалить и сделать ссылку на основной каталог с портами. Делается это командой ln -s /var/ports /var/poudriere/ports/default-default

Этим вы съэкономите место и время (вы ведь помните, что порты мы настроили на обновление в 4 утра).

Затем в каталоге /usr/local/etc/poudriere.d/ вы создаёте файл default.pkglist и в него записываете все порты, что вам нужно собрать. Синтаксис вот такой:

misc/mc # этот пакет потянет python3.11 ...
net-mgmt/zabbix7-frontend # этот пакет потянет за собой зависимости php84 ...
www/nginx
...
И другие нужные вам программы

Пример файла со списком пакетов для сборки

cat poudriere.d/default.pkglist

#Databases
databases/mysql81-server

# Emulators. Здесь мы собираем пакет qemu-guest-agent для связи виртуальной машины с Proxmox
emulators/qemu@guestagent

# Finance
finance/nextcloud-cospend

Командой poudriere options -p default -f /usr/local/etc/poudriere.d/default.pkglist вы задаёте параметры сборки на каждый порт (аналог make config).

Командой poudriere options -c -p default security/samhain вы задаёте параметры сборки на порт samhain и порты от которых он зависит.

Командой poudriere bulk -f /usr/local/etc/poudriere.d/default.pkglist -p default -j default вы запускаете процесс сборки пакетов.

 


Настройка Nginx

В файл nginx.conf добавьте

Показать спойлер
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
keepalive_timeout 30;

server {
listen 80 default_server;
server_name pkgs.fbsd.site;
autoindex on;
location / {
location /packages {
root /var/poudriere/data/packages;
}
root /usr/local/share/poudriere/html;
}
location /data {
alias /var/poudriere/data/logs/bulk;
}
}


Настройка клиентского хоста

Для загрузки пакетов с вашего сервера в файле /etc/pkg/FreeBSD.conf закомментируйте все строки и добавьте:

myrepo: {
url: "http://pkgs.fbsd.site/",
mirror_type: "none",
enabled: yes

}

затем введите команду:
pkg update

Если в ответ увидите

pkg: Repository FreeBSD has a wrong packagesite, need to re-create database
Unable to update repository FreeBSD
Error updating repositories!

то введите:

pkg-static bootstrap -f

Система предложит скачать и установить пакет для управления пакетами заново. Соглашайтесь. Затем снова:

pkg update
pkg upgrade

Система обновит имеющиеся пакеты до последних версий.

И несколько команд для использования:

pkg search vim
pkg install editors/vim
— собрать пакет vim.


 

Prev
Next Установка и настройка phpLDAPadmin