SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
poudriere или как я перестал волноваться и
полюбил pkg
Андрей Фесенко
f0andrey@gmail.com
SPbLUG
Санкт-Петербург
July 29, 2015
Вводная ports pkg poudriere Заключение
Как всё начиналось
1993: pkg_install/ 1994: ports (jhk@ Jordan K. Hubbard)
1995: около 200 портов
1999: около 2000 портов
2013-2014: порядка 20 тысяч
Сейчас: 25085 (даже, после довольно массовых чисток)
poudriere или как я перестал волноваться и полюбил pkg
Вводная ports pkg poudriere Заключение
Чем собирать
пакеты, собираются из портов
2003: portbuild - набор скриптов, пока не начал составлять
доклад и не знал
2005: Tinderbox - серьёзный инструмент, куча
зависимостей (NFS, BD, Perl, PHP, www)
2001/2011: portupgrade/portmaster - скорее для личного
пользования, на десктопе
2012: poudriere - нынешний мейнстрим
poudriere или как я перестал волноваться и полюбил pkg
Вводная ports pkg poudriere Заключение
Хронология и утилиты
1994: первые коммиты, как портов так и пакетов
2001: portupgrade (pkgtools) - более ориентирован на
пакеты, в том числе расширяет возможности (требует ruby
для работы)
2011: portmaster - скрипт отслеживания зависимостей и
управления портами/пакетами
(настройка/установка/удаление), последнее время почти
не поддерживается, хотя поддержка основного
функционала сохраняется и актуализируется (очень
разросся, простой sh)
2012: portsnap - утилита, для скачивания и обновления
портов, из сжатых образов/снапшотов
poudriere или как я перестал волноваться и полюбил pkg
Вводная ports pkg poudriere Заключение
Развитие ports
2013: OPTIONSng
простое вкл/выкл
единичный или множественный выбор
опции могут задаваться как для единичного порта, так и
глобально
USES - для пользователей незаметно, но весьма важный
функционал для портмантейнеров
poudriere или как я перестал волноваться и полюбил pkg
Вводная ports pkg poudriere Заключение
Развитие ports
StageDir - порты теперь не устанавливаются в корневую
систему, а устанавливаются в “DESTDIR”, позволяет
собирать пакеты без root привилегий и улучшает
отслеживание файлов. При внедрении многие порты были
исключены из дерева.
внедрение 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. Hubbard
18 July 1993“
“Здесь. Должна быть цитата, о том что, то ли пакеты, то ли
порты, ужасны и их надо срочно править“
poudriere или как я перестал волноваться и полюбил pkg
Вводная ports pkg poudriere Заключение
Этапы внедрения pkg
Sept. 2010: Первый коммит
January 2012: 1.0 beta1 pkg добавлено в дерево портов
ports-mgmt/pkg
August 2012: 1.0
October 2012: по умолчанию в CURRENT
June 2013: 1.1
January 2014: 10.0 на основе pkg
July 2014: 1.3
September 2014: pkg_install EOL
December 2014: 1.4
April 2015: 1.5
pkg в отличии от pkg_install не поставляется в составе
системы, там находится только заглушка, для
саморазвёртывания
poudriere или как я перестал волноваться и полюбил pkg
Вводная ports pkg poudriere Заключение
Этапы внедрения pkg
Не только FreeBSD
PC-BSD начиная с 2014, PBI стал всего лишь фронтендом
к pkg
DragonflyBSD
начиная с 2012 внедрение DPorts (форк pkg)
в конце 2013 полный переход на DPorts, отказ от pkgsrc
2014 - начальная поддержка в OS X и Linux
2015 - начальная поддержка в NetBSD/EdgeBSD
poudriere или как я перестал волноваться и полюбил pkg
Вводная ports pkg poudriere Заключение
Что имеем
FreeBSD.org pkg mirror использует DNS SRV,
распределённый кластер US/UK/RU (для 8.4 EoL август,
оставлена возможность обновления ftp)
бранчи - например для 10-ки
latest
quarterly
release
release_0
release_1
pkg -o DEBUG_LEVEL=2 (4) если что то пошло не так
pkg upgrade ‘pkg query -e ’%n = perl5.20’ %ro | cut -d “/” -f
2-‘
portmaster –list-origins > /home/user/my-port-list
nginx имеет более 80 опций,
77,371,252,455,336,267,181,195,264 комбинаций
/usr/local/etc/pkg/repos/ - для включения выключения
каждого репо свой .conf
poudriere или как я перестал волноваться и полюбил pkg
Вводная ports pkg poudriere Заключение
Зачем?
BSD License
Сборка пакетов (.txz) для всех версий начиная с 8.3
Тестирование
Кроссборка
Построение репозитория, локального, с изменёнными
опциями, собственными патчами
Очень прост в настройке и использовании
poudriere или как я перестал волноваться и полюбил pkg
Вводная ports pkg poudriere Заключение
Как
Каждый пакет собирается в “чистом окружении” (jail copy)
Дерево портов, возможны варианты
Set - “окружения” возможны различные конфигурации (-z)
DUD - обработка, запрещённых/сломанных портов
опциональный AJAX веб интерфейс
poudriere или как я перестал волноваться и полюбил pkg
Вводная ports pkg poudriere Заключение
Как
Требования
FreeBSD>= 8.3
Желательно ZFS pool >= v15 (возможна работа и на UFS)
и не менее 8Gb места на диске
Версия системы на которой производится сборка, должна
быть больше или равна, той пакеты которой собираетесь
собирать
общее правило чем больше тем лучше/быстрее
CPU,
RAM (1-2Гб, если собирать в памяти),
Disk 1.5Гб на каждый jail,
4Гб дерево портов, плюс место под исходные коды и
готовые пакеты (МНОГО)
Сеть, для загрузки исходных кодов и обновления
веб-сервер, если нужен удалённый доступ к репозиторию и
хочется смотреть красивые логи/статусы
poudriere или как я перестал волноваться и полюбил pkg
Вводная ports pkg poudriere Заключение
Как
POUDRIERE(8) - наш лучший друг (и немного
/usr/local/etc/poudriere.conf.sample)
настройки для окружений хранятся в
/usr/local/etc/poudriere.d/
<jailname>-<setname(tree)>-make.conf(src.conf,options/)
для конкретного setname(tree)
<setname(tree)>-make.conf(src.conf,options/) для всех
одноимённых setname(tree)
make.conf(src.conf,options/) - общие
по такой же схеме возможно задание poudriere.conf,
blacklist
Если собрались собирать пакеты, такие же как уже
установленные порты, просто скопируйте /var/db/ports/ в
/usr/local/etc/poudriere.d/*-options/ формат одинаковый
poudriere или как я перестал волноваться и полюбил pkg
Вводная ports pkg poudriere Заключение
Как
Заглянем под копот
Заготовленный ранее, образцовый jail, монтируется ro (так
что не изменяется)
Для каждого билдера создаётся отдельный джейл (по
умолчанию =nCPU) (zfs clone/cp)
перед сборкой каждого пакета, билдер откатывается до
образцового состояния (чистится)
kill -9, после сборки
Сетевой доступ, только на этапе скачивания пакета (если
он не закеширован)
Зависимости устанавливаются из пакетов, собранных
ранее (начинается с pkg)
После завершения возможна, отладка в интерактивном
режиме, так же сохранение отладки
poudriere или как я перестал волноваться и полюбил pkg
Вводная ports pkg poudriere Заключение
Как
Установка возможна из пакетов, портов, github (самое
свежее и интересное)
poudriere ports -c
poudriere jail -c -j 10amd64 -v 10.1-RELEASE -a amd64
poudriere ports -u
poudriere bulk -j 10amd64 -f origins.list % сборка нескольких
портов (категория/имя по одному на строку)
poudriere bulk -j 10amd64 -o ports-mgmt/pkg
poudriere options -j 10amd64 -c ports-mgmt/portmaster
Это конечно самый простейший вариант, настроить, как
при создании, так и при запуске, можно довольно много
poudriere bulk -v -j 110amd64 -z x220 -f x220-port-list
возможен запуск в режиме демона
poudriere или как я перестал волноваться и полюбил pkg
Вводная ports pkg poudriere Заключение
Как
Кроссборка
Довольно легко и непринуждённо
Устанавливаем emulators/qemu-user-static (или просто
отмечаем опцию/отключена)
kldload imgact_binmisc
Страшное колдунство, что бы “появился” процессор нужной
архитектуры
“binmiscctl add armv6 –interpreter
"/usr/local/bin/qemu-arm"–magic
"x7fx45x4cx46x01x01x01x00x00x00x00x00x00x00x00x00x02
x00x28x00"–mask "xffxffxffxffxffxffxffx00xffxffxffxff
xffxffxffxffxfexffxffxff"–size 20 –set-enabled“
poudriere или как я перестал волноваться и полюбил pkg
Вводная ports pkg poudriere Заключение
Как
Не Шмагла
не реализована чистка логов, если собирать что то часто,
то всё же копятся (rm -Rf)
по утверждению одного из разработчиков, не очень
хороший код для работы в jail
иногда какие либо стопорения, лечимые перезапуском
не очень доходчивое разрешение зависимостей, так как
порты в этом месте пока оставляют желать лучшего,
приходится поломать голову
не может “населить” репозиторий пакетами с опциями по
умолчанию, для уменьшения бесполезной работы
Если используете не актуальные версии, аккуратнее с
именами jail
poudriere или как я перестал волноваться и полюбил pkg
Вводная ports pkg poudriere Заключение
Подборка ссылок
При подготовке слайдов, вероятно, использовались материалы
доступные по следующим ссылкам.
Handbook Chapter 5. Installing Applications: Packages and
Ports
Handbook 5.6. Building Packages with Poudriere
FreeBSD: 5 years of pkg A end less journey
Third-party software management under BSD (EuroBSDCon
2006)
Video ports tree 20th anniversary
The Ports Management Team (блог не обновляется)
FreeBSD Ports and Packages – Getting Back Being the Best
(2011)
Embedded FreeBSD Development and Package Building via
QEMU
PKG note bapt (2011)
poudriere или как я перестал волноваться и полюбил pkg
Вводная ports pkg poudriere Заключение
Подборка ссылок
При подготовке слайдов, вероятно, использовались материалы
доступные по следующим ссылкам.
Tinderbox and Poudriere - Automatic Ports Testing and
Package Building on FreeBSD
Poudriere: The future of Package Building (2013)
How to build and use QEMU User Mode on FreeBSD
FreshPorts (очень удобный “вебинтерфейс” к портам)
poudriere или как я перестал волноваться и полюбил pkg
Вводная ports pkg poudriere Заключение
Вопросы?
Спасибо за внимание!
Вопросы? :-)
poudriere или как я перестал волноваться и полюбил pkg

Más contenido relacionado

La actualidad más candente

Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
 Practical Python Packaging / Стас Рудаков / Web Developer Wargaming Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
Practical Python Packaging / Стас Рудаков / Web Developer WargamingPython Meetup
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ciАлександр Сигачев
 
С чем едят JS-дебаггур?!
С чем едят JS-дебаггур?!С чем едят JS-дебаггур?!
С чем едят JS-дебаггур?!volegg
 
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)Ontico
 
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Ontico
 
Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...Ontico
 
Anton Bolshakov - Joint anti-crime. Open source security
Anton Bolshakov - Joint anti-crime. Open source securityAnton Bolshakov - Joint anti-crime. Open source security
Anton Bolshakov - Joint anti-crime. Open source securityDefconRussia
 
Docker integration into Badoo
Docker integration into BadooDocker integration into Badoo
Docker integration into BadooAnton Turetsky
 
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)Ontico
 
Вячеслав Бахмутов
Вячеслав БахмутовВячеслав Бахмутов
Вячеслав БахмутовCodeFest
 
Software engineering seminars: gradle
 Software engineering seminars: gradle Software engineering seminars: gradle
Software engineering seminars: gradleSemen Martynov
 
Flask как хорошее решение для веб проекта
Flask как хорошее решение для веб проектаFlask как хорошее решение для веб проекта
Flask как хорошее решение для веб проектаPython Meetup
 
Олег Бартунов и Иван Панченко
Олег Бартунов и Иван ПанченкоОлег Бартунов и Иван Панченко
Олег Бартунов и Иван ПанченкоCodeFest
 
TrueConf Server 4.2. Учебный курс.
 TrueConf Server 4.2. Учебный курс. TrueConf Server 4.2. Учебный курс.
TrueConf Server 4.2. Учебный курс.TrueConf
 
Алексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersАлексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersAleksey Fomkin
 
Root Conf2009 Fin
Root Conf2009 FinRoot Conf2009 Fin
Root Conf2009 FinLiudmila Li
 

La actualidad más candente (19)

Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
 Practical Python Packaging / Стас Рудаков / Web Developer Wargaming Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ci
 
С чем едят JS-дебаггур?!
С чем едят JS-дебаггур?!С чем едят JS-дебаггур?!
С чем едят JS-дебаггур?!
 
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
 
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
 
Docker 1.9
Docker 1.9Docker 1.9
Docker 1.9
 
Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...
 
Anton Bolshakov - Joint anti-crime. Open source security
Anton Bolshakov - Joint anti-crime. Open source securityAnton Bolshakov - Joint anti-crime. Open source security
Anton Bolshakov - Joint anti-crime. Open source security
 
Docker integration into Badoo
Docker integration into BadooDocker integration into Badoo
Docker integration into Badoo
 
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
 
Вячеслав Бахмутов
Вячеслав БахмутовВячеслав Бахмутов
Вячеслав Бахмутов
 
Software engineering seminars: gradle
 Software engineering seminars: gradle Software engineering seminars: gradle
Software engineering seminars: gradle
 
Flask как хорошее решение для веб проекта
Flask как хорошее решение для веб проектаFlask как хорошее решение для веб проекта
Flask как хорошее решение для веб проекта
 
Олег Бартунов и Иван Панченко
Олег Бартунов и Иван ПанченкоОлег Бартунов и Иван Панченко
Олег Бартунов и Иван Панченко
 
Кратко о Linux
Кратко о LinuxКратко о Linux
Кратко о Linux
 
TrueConf Server 4.2. Учебный курс.
 TrueConf Server 4.2. Учебный курс. TrueConf Server 4.2. Учебный курс.
TrueConf Server 4.2. Учебный курс.
 
Алексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersАлексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web Workers
 
Root Conf2009 Fin
Root Conf2009 FinRoot Conf2009 Fin
Root Conf2009 Fin
 
Отладка в Python: 2016 edition
Отладка в Python: 2016 editionОтладка в Python: 2016 edition
Отладка в Python: 2016 edition
 

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

Видеохостинг своими руками
Видеохостинг своими рукамиВидеохостинг своими руками
Видеохостинг своими рукамиStanislavMalkin
 
мои модули и патчи для Nginx. максим дунин. зал 1
мои модули и патчи для Nginx. максим дунин. зал 1мои модули и патчи для Nginx. максим дунин. зал 1
мои модули и патчи для Nginx. максим дунин. зал 1rit2011
 
20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...
20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...
20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...Rais Charipov
 
Sama5d3: how to run linux on it
Sama5d3: how to run linux on itSama5d3: how to run linux on it
Sama5d3: how to run linux on itPavel Kurochkin
 
Разработка декстопных приложений для linux (Владимир Яковлев)
Разработка декстопных приложений для linux (Владимир Яковлев)Разработка декстопных приложений для linux (Владимир Яковлев)
Разработка декстопных приложений для linux (Владимир Яковлев)IT-Доминанта
 
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practiceAlexey Lesovsky
 
Web осень 2012 лекция 3
Web осень 2012 лекция 3Web осень 2012 лекция 3
Web осень 2012 лекция 3Technopark
 
Web весна 2013 лекция 3
Web весна 2013 лекция 3Web весна 2013 лекция 3
Web весна 2013 лекция 3Technopark
 
Linux basics. Занятие 3.
Linux basics. Занятие 3. Linux basics. Занятие 3.
Linux basics. Занятие 3. Vikentsi Lapa
 
Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков
Опенсорс-инструменты на страже безопасности бэкенда — Петр ВолковОпенсорс-инструменты на страже безопасности бэкенда — Петр Волков
Опенсорс-инструменты на страже безопасности бэкенда — Петр ВолковYandex
 
Rust - GDG DevFest Siberia 2016
Rust - GDG DevFest Siberia 2016Rust - GDG DevFest Siberia 2016
Rust - GDG DevFest Siberia 2016Nikita Baksalyar
 
Пакетирование для Debian/Ubuntu
Пакетирование для Debian/UbuntuПакетирование для Debian/Ubuntu
Пакетирование для Debian/Ubuntusamsolutionsby
 
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшна
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшнаCI/CD-приложений на Tarantool: от пустого репозитория — до продакшна
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшнаMail.ru Group
 
My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015Alex Chistyakov
 
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013Moscow.pm
 
Hunting for a C++ package manager
Hunting for a C++ package managerHunting for a C++ package manager
Hunting for a C++ package managercorehard_by
 
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3Technopark
 

Similar a poudriere или как я перестал волноваться и полюбил pkg (20)

Видеохостинг своими руками
Видеохостинг своими рукамиВидеохостинг своими руками
Видеохостинг своими руками
 
мои модули и патчи для Nginx. максим дунин. зал 1
мои модули и патчи для Nginx. максим дунин. зал 1мои модули и патчи для Nginx. максим дунин. зал 1
мои модули и патчи для Nginx. максим дунин. зал 1
 
20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...
20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...
20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...
 
Sama5d3: how to run linux on it
Sama5d3: how to run linux on itSama5d3: how to run linux on it
Sama5d3: how to run linux on it
 
Docker penetration
Docker penetrationDocker penetration
Docker penetration
 
Разработка декстопных приложений для linux (Владимир Яковлев)
Разработка декстопных приложений для linux (Владимир Яковлев)Разработка декстопных приложений для linux (Владимир Яковлев)
Разработка декстопных приложений для linux (Владимир Яковлев)
 
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practice
 
Web осень 2012 лекция 3
Web осень 2012 лекция 3Web осень 2012 лекция 3
Web осень 2012 лекция 3
 
Rpm5
Rpm5Rpm5
Rpm5
 
Web весна 2013 лекция 3
Web весна 2013 лекция 3Web весна 2013 лекция 3
Web весна 2013 лекция 3
 
Linux basics. Занятие 3.
Linux basics. Занятие 3. Linux basics. Занятие 3.
Linux basics. Занятие 3.
 
Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков
Опенсорс-инструменты на страже безопасности бэкенда — Петр ВолковОпенсорс-инструменты на страже безопасности бэкенда — Петр Волков
Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков
 
Rust - GDG DevFest Siberia 2016
Rust - GDG DevFest Siberia 2016Rust - GDG DevFest Siberia 2016
Rust - GDG DevFest Siberia 2016
 
Installcd Kyivbsd09
Installcd Kyivbsd09Installcd Kyivbsd09
Installcd Kyivbsd09
 
Пакетирование для Debian/Ubuntu
Пакетирование для Debian/UbuntuПакетирование для Debian/Ubuntu
Пакетирование для Debian/Ubuntu
 
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшна
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшнаCI/CD-приложений на Tarantool: от пустого репозитория — до продакшна
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшна
 
My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015
 
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
 
Hunting for a C++ package manager
Hunting for a C++ package managerHunting for a C++ package manager
Hunting for a C++ package manager
 
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3
 

Más de Andrey Fesenko

Готовим начинку для облака (cloudinit/cloudbase иное...)
Готовим начинку для облака (cloudinit/cloudbase иное...)Готовим начинку для облака (cloudinit/cloudbase иное...)
Готовим начинку для облака (cloudinit/cloudbase иное...)Andrey Fesenko
 
FreeBSD 12, что нас ждёт?
FreeBSD 12, что нас ждёт?FreeBSD 12, что нас ждёт?
FreeBSD 12, что нас ждёт?Andrey Fesenko
 
TLS и все, все, все
TLS и все, все, всеTLS и все, все, все
TLS и все, все, всеAndrey Fesenko
 
BSD подобные лицензии
BSD подобные лицензииBSD подобные лицензии
BSD подобные лицензииAndrey Fesenko
 
BSD и всякая там virtualization
BSD и всякая там virtualizationBSD и всякая там virtualization
BSD и всякая там virtualizationAndrey Fesenko
 
BSD не боги горшки обжигают
BSD не боги горшки обжигаютBSD не боги горшки обжигают
BSD не боги горшки обжигаютAndrey Fesenko
 
IPV6 + FreeBSD = Future is here?
IPV6 + FreeBSD = Future is here?IPV6 + FreeBSD = Future is here?
IPV6 + FreeBSD = Future is here?Andrey Fesenko
 

Más de Andrey Fesenko (9)

Готовим начинку для облака (cloudinit/cloudbase иное...)
Готовим начинку для облака (cloudinit/cloudbase иное...)Готовим начинку для облака (cloudinit/cloudbase иное...)
Готовим начинку для облака (cloudinit/cloudbase иное...)
 
FreeBSD 12, что нас ждёт?
FreeBSD 12, что нас ждёт?FreeBSD 12, что нас ждёт?
FreeBSD 12, что нас ждёт?
 
Freebsd11
Freebsd11Freebsd11
Freebsd11
 
Freebsd11
Freebsd11Freebsd11
Freebsd11
 
TLS и все, все, все
TLS и все, все, всеTLS и все, все, все
TLS и все, все, все
 
BSD подобные лицензии
BSD подобные лицензииBSD подобные лицензии
BSD подобные лицензии
 
BSD и всякая там virtualization
BSD и всякая там virtualizationBSD и всякая там virtualization
BSD и всякая там virtualization
 
BSD не боги горшки обжигают
BSD не боги горшки обжигаютBSD не боги горшки обжигают
BSD не боги горшки обжигают
 
IPV6 + FreeBSD = Future is here?
IPV6 + FreeBSD = Future is here?IPV6 + FreeBSD = Future is here?
IPV6 + FreeBSD = Future is here?
 

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

  • 1. poudriere или как я перестал волноваться и полюбил pkg Андрей Фесенко f0andrey@gmail.com SPbLUG Санкт-Петербург July 29, 2015
  • 2. Вводная ports pkg poudriere Заключение Как всё начиналось 1993: pkg_install/ 1994: ports (jhk@ Jordan K. Hubbard) 1995: около 200 портов 1999: около 2000 портов 2013-2014: порядка 20 тысяч Сейчас: 25085 (даже, после довольно массовых чисток) poudriere или как я перестал волноваться и полюбил pkg
  • 3. Вводная ports pkg poudriere Заключение Чем собирать пакеты, собираются из портов 2003: portbuild - набор скриптов, пока не начал составлять доклад и не знал 2005: Tinderbox - серьёзный инструмент, куча зависимостей (NFS, BD, Perl, PHP, www) 2001/2011: portupgrade/portmaster - скорее для личного пользования, на десктопе 2012: poudriere - нынешний мейнстрим poudriere или как я перестал волноваться и полюбил pkg
  • 4. Вводная ports pkg poudriere Заключение Хронология и утилиты 1994: первые коммиты, как портов так и пакетов 2001: portupgrade (pkgtools) - более ориентирован на пакеты, в том числе расширяет возможности (требует ruby для работы) 2011: portmaster - скрипт отслеживания зависимостей и управления портами/пакетами (настройка/установка/удаление), последнее время почти не поддерживается, хотя поддержка основного функционала сохраняется и актуализируется (очень разросся, простой sh) 2012: portsnap - утилита, для скачивания и обновления портов, из сжатых образов/снапшотов poudriere или как я перестал волноваться и полюбил pkg
  • 5. Вводная ports pkg poudriere Заключение Развитие ports 2013: OPTIONSng простое вкл/выкл единичный или множественный выбор опции могут задаваться как для единичного порта, так и глобально USES - для пользователей незаметно, но весьма важный функционал для портмантейнеров poudriere или как я перестал волноваться и полюбил pkg
  • 6. Вводная ports pkg poudriere Заключение Развитие ports StageDir - порты теперь не устанавливаются в корневую систему, а устанавливаются в “DESTDIR”, позволяет собирать пакеты без root привилегий и улучшает отслеживание файлов. При внедрении многие порты были исключены из дерева. внедрение CPE (Common Platform Enumeration), для систематизации и облегчения отслеживания обновлений безопасности. poudriere или как я перестал волноваться и полюбил pkg
  • 7. Вводная 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. Hubbard 18 July 1993“ “Здесь. Должна быть цитата, о том что, то ли пакеты, то ли порты, ужасны и их надо срочно править“ poudriere или как я перестал волноваться и полюбил pkg
  • 8. Вводная ports pkg poudriere Заключение Этапы внедрения pkg Sept. 2010: Первый коммит January 2012: 1.0 beta1 pkg добавлено в дерево портов ports-mgmt/pkg August 2012: 1.0 October 2012: по умолчанию в CURRENT June 2013: 1.1 January 2014: 10.0 на основе pkg July 2014: 1.3 September 2014: pkg_install EOL December 2014: 1.4 April 2015: 1.5 pkg в отличии от pkg_install не поставляется в составе системы, там находится только заглушка, для саморазвёртывания poudriere или как я перестал волноваться и полюбил pkg
  • 9. Вводная ports pkg poudriere Заключение Этапы внедрения pkg Не только FreeBSD PC-BSD начиная с 2014, PBI стал всего лишь фронтендом к pkg DragonflyBSD начиная с 2012 внедрение DPorts (форк pkg) в конце 2013 полный переход на DPorts, отказ от pkgsrc 2014 - начальная поддержка в OS X и Linux 2015 - начальная поддержка в NetBSD/EdgeBSD poudriere или как я перестал волноваться и полюбил pkg
  • 10. Вводная ports pkg poudriere Заключение Что имеем FreeBSD.org pkg mirror использует DNS SRV, распределённый кластер US/UK/RU (для 8.4 EoL август, оставлена возможность обновления ftp) бранчи - например для 10-ки latest quarterly release release_0 release_1 pkg -o DEBUG_LEVEL=2 (4) если что то пошло не так pkg upgrade ‘pkg query -e ’%n = perl5.20’ %ro | cut -d “/” -f 2-‘ portmaster –list-origins > /home/user/my-port-list nginx имеет более 80 опций, 77,371,252,455,336,267,181,195,264 комбинаций /usr/local/etc/pkg/repos/ - для включения выключения каждого репо свой .conf poudriere или как я перестал волноваться и полюбил pkg
  • 11. Вводная ports pkg poudriere Заключение Зачем? BSD License Сборка пакетов (.txz) для всех версий начиная с 8.3 Тестирование Кроссборка Построение репозитория, локального, с изменёнными опциями, собственными патчами Очень прост в настройке и использовании poudriere или как я перестал волноваться и полюбил pkg
  • 12. Вводная ports pkg poudriere Заключение Как Каждый пакет собирается в “чистом окружении” (jail copy) Дерево портов, возможны варианты Set - “окружения” возможны различные конфигурации (-z) DUD - обработка, запрещённых/сломанных портов опциональный AJAX веб интерфейс poudriere или как я перестал волноваться и полюбил pkg
  • 13. Вводная ports pkg poudriere Заключение Как Требования FreeBSD>= 8.3 Желательно ZFS pool >= v15 (возможна работа и на UFS) и не менее 8Gb места на диске Версия системы на которой производится сборка, должна быть больше или равна, той пакеты которой собираетесь собирать общее правило чем больше тем лучше/быстрее CPU, RAM (1-2Гб, если собирать в памяти), Disk 1.5Гб на каждый jail, 4Гб дерево портов, плюс место под исходные коды и готовые пакеты (МНОГО) Сеть, для загрузки исходных кодов и обновления веб-сервер, если нужен удалённый доступ к репозиторию и хочется смотреть красивые логи/статусы poudriere или как я перестал волноваться и полюбил pkg
  • 14. Вводная ports pkg poudriere Заключение Как POUDRIERE(8) - наш лучший друг (и немного /usr/local/etc/poudriere.conf.sample) настройки для окружений хранятся в /usr/local/etc/poudriere.d/ <jailname>-<setname(tree)>-make.conf(src.conf,options/) для конкретного setname(tree) <setname(tree)>-make.conf(src.conf,options/) для всех одноимённых setname(tree) make.conf(src.conf,options/) - общие по такой же схеме возможно задание poudriere.conf, blacklist Если собрались собирать пакеты, такие же как уже установленные порты, просто скопируйте /var/db/ports/ в /usr/local/etc/poudriere.d/*-options/ формат одинаковый poudriere или как я перестал волноваться и полюбил pkg
  • 15. Вводная ports pkg poudriere Заключение Как Заглянем под копот Заготовленный ранее, образцовый jail, монтируется ro (так что не изменяется) Для каждого билдера создаётся отдельный джейл (по умолчанию =nCPU) (zfs clone/cp) перед сборкой каждого пакета, билдер откатывается до образцового состояния (чистится) kill -9, после сборки Сетевой доступ, только на этапе скачивания пакета (если он не закеширован) Зависимости устанавливаются из пакетов, собранных ранее (начинается с pkg) После завершения возможна, отладка в интерактивном режиме, так же сохранение отладки poudriere или как я перестал волноваться и полюбил pkg
  • 16. Вводная ports pkg poudriere Заключение Как Установка возможна из пакетов, портов, github (самое свежее и интересное) poudriere ports -c poudriere jail -c -j 10amd64 -v 10.1-RELEASE -a amd64 poudriere ports -u poudriere bulk -j 10amd64 -f origins.list % сборка нескольких портов (категория/имя по одному на строку) poudriere bulk -j 10amd64 -o ports-mgmt/pkg poudriere options -j 10amd64 -c ports-mgmt/portmaster Это конечно самый простейший вариант, настроить, как при создании, так и при запуске, можно довольно много poudriere bulk -v -j 110amd64 -z x220 -f x220-port-list возможен запуск в режиме демона poudriere или как я перестал волноваться и полюбил pkg
  • 17. Вводная ports pkg poudriere Заключение Как Кроссборка Довольно легко и непринуждённо Устанавливаем emulators/qemu-user-static (или просто отмечаем опцию/отключена) kldload imgact_binmisc Страшное колдунство, что бы “появился” процессор нужной архитектуры “binmiscctl add armv6 –interpreter "/usr/local/bin/qemu-arm"–magic "x7fx45x4cx46x01x01x01x00x00x00x00x00x00x00x00x00x02 x00x28x00"–mask "xffxffxffxffxffxffxffx00xffxffxffxff xffxffxffxffxfexffxffxff"–size 20 –set-enabled“ poudriere или как я перестал волноваться и полюбил pkg
  • 18. Вводная ports pkg poudriere Заключение Как Не Шмагла не реализована чистка логов, если собирать что то часто, то всё же копятся (rm -Rf) по утверждению одного из разработчиков, не очень хороший код для работы в jail иногда какие либо стопорения, лечимые перезапуском не очень доходчивое разрешение зависимостей, так как порты в этом месте пока оставляют желать лучшего, приходится поломать голову не может “населить” репозиторий пакетами с опциями по умолчанию, для уменьшения бесполезной работы Если используете не актуальные версии, аккуратнее с именами jail poudriere или как я перестал волноваться и полюбил pkg
  • 19. Вводная ports pkg poudriere Заключение Подборка ссылок При подготовке слайдов, вероятно, использовались материалы доступные по следующим ссылкам. Handbook Chapter 5. Installing Applications: Packages and Ports Handbook 5.6. Building Packages with Poudriere FreeBSD: 5 years of pkg A end less journey Third-party software management under BSD (EuroBSDCon 2006) Video ports tree 20th anniversary The Ports Management Team (блог не обновляется) FreeBSD Ports and Packages – Getting Back Being the Best (2011) Embedded FreeBSD Development and Package Building via QEMU PKG note bapt (2011) poudriere или как я перестал волноваться и полюбил pkg
  • 20. Вводная ports pkg poudriere Заключение Подборка ссылок При подготовке слайдов, вероятно, использовались материалы доступные по следующим ссылкам. Tinderbox and Poudriere - Automatic Ports Testing and Package Building on FreeBSD Poudriere: The future of Package Building (2013) How to build and use QEMU User Mode on FreeBSD FreshPorts (очень удобный “вебинтерфейс” к портам) poudriere или как я перестал волноваться и полюбил pkg
  • 21. Вводная ports pkg poudriere Заключение Вопросы? Спасибо за внимание! Вопросы? :-) poudriere или как я перестал волноваться и полюбил pkg