21
poudriere или как я перестал волноваться и полюбил pkg Андрей Фесенко [email protected] SPbLUG Санкт-Петербург July 29, 2015

poudriere или как я перестал волноваться и полюбил pkg

Embed Size (px)

Citation preview

poudriere или как я перестал волноваться иполюбил pkg

Андрей Фесенко[email protected]

SPbLUGСанкт-ПетербургJuly 29, 2015

Вводная ports pkg poudriere Заключение

Как всё начиналось

I 1993: pkg_install/ 1994: ports (jhk@ Jordan K. Hubbard)I 1995: около 200 портовI 1999: около 2000 портовI 2013-2014: порядка 20 тысячI Сейчас: 25085 (даже, после довольно массовых чисток)

poudriere или как я перестал волноваться и полюбил pkg

Вводная ports pkg poudriere Заключение

Чем собирать

I пакеты, собираются из портовI 2003: portbuild - набор скриптов, пока не начал составлять

доклад и не зналI 2005: Tinderbox - серьёзный инструмент, куча

зависимостей (NFS, BD, Perl, PHP, www)I 2001/2011: portupgrade/portmaster - скорее для личного

пользования, на десктопеI 2012: poudriere - нынешний мейнстрим

poudriere или как я перестал волноваться и полюбил pkg

Вводная ports pkg poudriere Заключение

Хронология и утилиты

I 1994: первые коммиты, как портов так и пакетовI 2001: portupgrade (pkgtools) - более ориентирован на

пакеты, в том числе расширяет возможности (требует rubyдля работы)

I 2011: portmaster - скрипт отслеживания зависимостей иуправления портами/пакетами(настройка/установка/удаление), последнее время почтине поддерживается, хотя поддержка основногофункционала сохраняется и актуализируется (оченьразросся, простой sh)

I 2012: portsnap - утилита, для скачивания и обновленияпортов, из сжатых образов/снапшотов

poudriere или как я перестал волноваться и полюбил pkg

Вводная ports pkg poudriere Заключение

Развитие ports

I 2013: OPTIONSngI простое вкл/выклI единичный или множественный выборI опции могут задаваться как для единичного порта, так и

глобально

I USES - для пользователей незаметно, но весьма важныйфункционал для портмантейнеров

poudriere или как я перестал волноваться и полюбил pkg

Вводная ports pkg poudriere Заключение

Развитие ports

I StageDir - порты теперь не устанавливаются в корневуюсистему, а устанавливаются в “DESTDIR”, позволяетсобирать пакеты без root привилегий и улучшаетотслеживание файлов. При внедрении многие порты былиисключены из дерева.

I внедрение CPE (Common Platform Enumeration), длясистематизации и облегчения отслеживания обновленийбезопасности.

poudriere или как я перестал волноваться и полюбил pkg

Вводная ports pkg poudriere Заключение

Этапы внедрения pkg

Всякие цитаты“src/usr.sbin/pkgne ladd/perform.c

/** This is seriously ugly code following. Written very* fast![And subsequently made even worse.. Sigh!* This code was just born to be hacked, I guess.. :) ]*/

–jhk@Jordan K. Hubbard18 July 1993“

“Здесь. Должна быть цитата, о том что, то ли пакеты, то липорты, ужасны и их надо срочно править“

poudriere или как я перестал волноваться и полюбил pkg

Вводная ports pkg poudriere Заключение

Этапы внедрения pkg

I Sept. 2010: Первый коммитI January 2012: 1.0 beta1 pkg добавлено в дерево портов

ports-mgmt/pkgI August 2012: 1.0I October 2012: по умолчанию в CURRENTI June 2013: 1.1I January 2014: 10.0 на основе pkgI July 2014: 1.3I September 2014: pkg_install EOLI December 2014: 1.4I April 2015: 1.5

pkg в отличии от pkg_install не поставляется в составесистемы, там находится только заглушка, длясаморазвёртывания

poudriere или как я перестал волноваться и полюбил pkg

Вводная ports pkg poudriere Заключение

Этапы внедрения pkg

Не только FreeBSD

I PC-BSD начиная с 2014, PBI стал всего лишь фронтендомк pkg

I DragonflyBSDI начиная с 2012 внедрение DPorts (форк pkg)I в конце 2013 полный переход на DPorts, отказ от pkgsrc

I 2014 - начальная поддержка в OS X и LinuxI 2015 - начальная поддержка в NetBSD/EdgeBSD

poudriere или как я перестал волноваться и полюбил pkg

Вводная ports pkg poudriere Заключение

Что имеем

I FreeBSD.org pkg mirror использует DNS SRV,распределённый кластер US/UK/RU (для 8.4 EoL август,оставлена возможность обновления ftp)

I бранчи - например для 10-киI latestI quarterlyI releaseI release_0I release_1

I pkg -o DEBUG_LEVEL=2 (4) если что то пошло не такI pkg upgrade ‘pkg query -e ’%n = perl5.20’ %ro | cut -d “/” -f

2-‘I portmaster –list-origins > /home/user/my-port-listI nginx имеет более 80 опций,

77,371,252,455,336,267,181,195,264 комбинацийI /usr/local/etc/pkg/repos/ - для включения выключения

каждого репо свой .conf

poudriere или как я перестал волноваться и полюбил pkg

Вводная ports pkg poudriere Заключение

Зачем?

I BSD LicenseI Сборка пакетов (.txz) для всех версий начиная с 8.3I ТестированиеI КроссборкаI Построение репозитория, локального, с изменёнными

опциями, собственными патчамиI Очень прост в настройке и использовании

poudriere или как я перестал волноваться и полюбил pkg

Вводная ports pkg poudriere Заключение

Как

I Каждый пакет собирается в “чистом окружении” (jail copy)I Дерево портов, возможны вариантыI Set - “окружения” возможны различные конфигурации (-z)I DUD - обработка, запрещённых/сломанных портовI опциональный AJAX веб интерфейс

poudriere или как я перестал волноваться и полюбил pkg

Вводная ports pkg poudriere Заключение

Как

ТребованияI FreeBSD>= 8.3I Желательно ZFS pool >= v15 (возможна работа и на UFS)

и не менее 8Gb места на дискеI Версия системы на которой производится сборка, должна

быть больше или равна, той пакеты которой собираетесьсобирать

I общее правило чем больше тем лучше/быстрееI CPU,I RAM (1-2Гб, если собирать в памяти),I Disk 1.5Гб на каждый jail,I 4Гб дерево портов, плюс место под исходные коды и

готовые пакеты (МНОГО)I Сеть, для загрузки исходных кодов и обновления

I веб-сервер, если нужен удалённый доступ к репозиторию ихочется смотреть красивые логи/статусы

poudriere или как я перестал волноваться и полюбил pkg

Вводная ports pkg poudriere Заключение

Как

I POUDRIERE(8) - наш лучший друг (и немного/usr/local/etc/poudriere.conf.sample)

I настройки для окружений хранятся в/usr/local/etc/poudriere.d/

I <jailname>-<setname(tree)>-make.conf(src.conf,options/)для конкретного setname(tree)

I <setname(tree)>-make.conf(src.conf,options/) для всеходноимённых setname(tree)

I make.conf(src.conf,options/) - общиеI по такой же схеме возможно задание poudriere.conf,

blacklist

I Если собрались собирать пакеты, такие же как ужеустановленные порты, просто скопируйте /var/db/ports/ в/usr/local/etc/poudriere.d/*-options/ формат одинаковый

poudriere или как я перестал волноваться и полюбил pkg

Вводная ports pkg poudriere Заключение

Как

Заглянем под копотI Заготовленный ранее, образцовый jail, монтируется ro (так

что не изменяется)I Для каждого билдера создаётся отдельный джейл (по

умолчанию =nCPU) (zfs clone/cp)I перед сборкой каждого пакета, билдер откатывается до

образцового состояния (чистится)I kill -9, после сборкиI Сетевой доступ, только на этапе скачивания пакета (если

он не закеширован)I Зависимости устанавливаются из пакетов, собранных

ранее (начинается с pkg)I После завершения возможна, отладка в интерактивном

режиме, так же сохранение отладки

poudriere или как я перестал волноваться и полюбил pkg

Вводная ports pkg poudriere Заключение

Как

I Установка возможна из пакетов, портов, github (самоесвежее и интересное)

I poudriere ports -cI poudriere jail -c -j 10amd64 -v 10.1-RELEASE -a amd64I poudriere ports -uI poudriere bulk -j 10amd64 -f origins.list % сборка нескольких

портов (категория/имя по одному на строку)I poudriere bulk -j 10amd64 -o ports-mgmt/pkgI poudriere options -j 10amd64 -c ports-mgmt/portmasterI Это конечно самый простейший вариант, настроить, как

при создании, так и при запуске, можно довольно многоI poudriere bulk -v -j 110amd64 -z x220 -f x220-port-listI возможен запуск в режиме демона

poudriere или как я перестал волноваться и полюбил pkg

Вводная ports pkg poudriere Заключение

Как

Кроссборка

I Довольно легко и непринуждённоI Устанавливаем emulators/qemu-user-static (или просто

отмечаем опцию/отключена)I kldload imgact_binmisc

Страшное колдунство, что бы “появился” процессор нужнойархитектуры“binmiscctl add armv6 –interpreter"/usr/local/bin/qemu-arm"–magic"x7fx45x4cx46x01x01x01x00x00x00x00x00x00x00x00x00x02x00x28x00"–mask "xffxffxffxffxffxffxffx00xffxffxffxffxffxffxffxffxfexffxffxff"–size 20 –set-enabled“

poudriere или как я перестал волноваться и полюбил pkg

Вводная ports pkg poudriere Заключение

Как

Не ШмаглаI не реализована чистка логов, если собирать что то часто,

то всё же копятся (rm -Rf)I по утверждению одного из разработчиков, не очень

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

порты в этом месте пока оставляют желать лучшего,приходится поломать голову

I не может “населить” репозиторий пакетами с опциями поумолчанию, для уменьшения бесполезной работы

I Если используете не актуальные версии, аккуратнее сименами jail

poudriere или как я перестал волноваться и полюбил pkg

Вводная ports pkg poudriere Заключение

Подборка ссылок

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

I Handbook Chapter 5. Installing Applications: Packages andPorts

I Handbook 5.6. Building Packages with PoudriereI FreeBSD: 5 years of pkg A end less journeyI Third-party software management under BSD (EuroBSDCon

2006)I Video ports tree 20th anniversaryI The Ports Management Team (блог не обновляется)I FreeBSD Ports and Packages – Getting Back Being the Best

(2011)I Embedded FreeBSD Development and Package Building via

QEMUI PKG note bapt (2011)

poudriere или как я перестал волноваться и полюбил pkg

Вводная ports pkg poudriere Заключение

Подборка ссылок

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

I Tinderbox and Poudriere - Automatic Ports Testing andPackage Building on FreeBSD

I Poudriere: The future of Package Building (2013)I How to build and use QEMU User Mode on FreeBSDI FreshPorts (очень удобный “вебинтерфейс” к портам)

poudriere или как я перестал волноваться и полюбил pkg

Вводная ports pkg poudriere Заключение

Вопросы?

Спасибо за внимание!Вопросы? :-)

poudriere или как я перестал волноваться и полюбил pkg