SlideShare une entreprise Scribd logo
1  sur  34
aptly:	
  система	
  
управления	
  
репозиториями	
  пакетов	
  
Андрей	
  Смирнов	
  
Содержание	
  
•  Проблема	
  повторяемости	
  
•  aptly:	
  основные	
  идеи	
  
•  Примеры	
  использования	
  
•  Немного	
  о	
  внутренностях	
  
•  Планы	
  
Повторяемость!	
  
Повторяемость	
  
окружения	
  
Повторяемость	
  
изменений	
  окружения	
  
Окружение	
  -­‐	
  	
  
набор	
  пакетов	
  
Версии	
  пакетов	
  разные	
  
Потребность	
  
Official	
  repo	
  
Backports	
  
3rd	
  party	
  
repo	
  
PPA	
  
Homebrew	
  
Управление	
  окружением	
  
Backports	
  
3rd	
  party	
  
repo	
  
apt-­‐get	
  
apt-­‐sources	
  
apt-­‐
preferences	
  
Official	
  repo	
  
Homebrew	
  
Не	
  та	
  версия…	
  
apt	
  pinning	
  поможет!	
  
No…	
  
Невоспроизводимость	
  
•  Поставить	
  пакет	
  A	
  
•  Добавить	
  в	
  apt-­‐sources	
  
•  Изменить	
  pinning	
  
•  Поставить	
  пакет	
  A	
  -­‐	
  ?	
  
Версии	
  окружения	
  
tes]ng	
  
development	
  
staging	
  
produc]on	
  
Цель	
  
Зафиксированный	
  репозиторий	
  пакетов	
  
(повторяемость)	
  
Контролируемые	
  изменения	
  версий	
  
(изменения)	
  
aptly	
  
*	
  не	
  является	
  заменой	
  apt,	
  dpkg!	
  
Сущности	
  
–	
  зеркало	
  удаленного	
  репозитория	
  
–	
  неизменяемый	
  срез	
  набора	
  пакетов	
  
–	
  опубликованный	
  репозиторий	
  пакетов	
  
mirror	
  
local	
  repo	
  
snapshot	
  
published	
  
repo	
  
–	
  локальный	
  репозиторий	
  пакетов	
  
mirror	
  
local	
  repo	
  
snapshot	
  
published	
  
repo	
  
snapshot	
  
published	
  
repo	
  
snapshot	
  
snapshot	
  
published	
  
repo	
  
update	
  
take	
  snapshot	
  
take	
  snapshot	
  
publish	
  
publish	
  
publish	
  
verify	
  
pull	
  
merge	
  
diff	
  
add	
  
mirror	
  
$ aptly mirror create wheezy-main http://mirror.yandex.ru/
debian/ wheezy main	
…	
$ aptly mirror update wheezy-main	
…	
$ aptly snapshot create wheezy-7.4 from mirror wheezy-main	
…	
$ aptly publish snapshot wheezy-7.4 debian	
…
mirror	
  
snapshot	
  
published	
  
repo	
  
update	
  
take	
  snapshot	
  
publish	
  
local	
  repo	
  
$ aptly repo create –distribution=wheezy mysoftware	
…	
$ aptly repo add –remove-files mysoftware incoming/*.deb	
…	
$ aptly snapshot create my-20140414 from repo mysoftware	
…	
$ aptly publish snapshot my-20140414 local	
…
local	
  repo	
   published	
  
repo	
  
snapshot	
  
published	
  
repo	
  
take	
  snapshot	
  
publish	
  
publish	
  add	
  
aptly	
  snapshot	
  pull	
  
$ aptly snapshot pull wheezy-7.4 percona-20140414 wheezy-w-
percona 'percona-server-server (>=5.5)’	
…	
[+] percona-server-server-5.5.35-rel33.0-611.wheezy_amd64 added	
[+] percona-server-server-5.5-5.5.35-rel33.0-611.wheezy_amd64 added	
[+] percona-server-client-5.5-5.5.35-rel33.0-611.wheezy_amd64 added	
[+] percona-server-common-5.5-5.5.35-rel33.0-611.wheezy_amd64 added	
[-] libmysqlclient18-5.5.31+dfsg-0+wheezy1_amd64 removed	
[+] libmysqlclient18-5.5.35-rel33.0-611.wheezy_amd64 added	
[+] percona-server-server-5.5.35-rel33.0-611.wheezy_i386 added	
[+] percona-server-server-5.5-5.5.35-rel33.0-611.wheezy_i386 added	
[+] percona-server-client-5.5-5.5.35-rel33.0-611.wheezy_i386 added	
[+] percona-server-common-5.5-5.5.35-rel33.0-611.wheezy_i386 added	
[-] libmysqlclient18-5.5.31+dfsg-0+wheezy1_i386 removed	
[+] libmysqlclient18-5.5.35-rel33.0-611.wheezy_i386 added
aptly	
  snapshot	
  pull	
  
$ aptly snapshot pull wheezy-7.4 backports-20140414 wheezy-
w-rsyslog rsyslog	
…	
[-] rsyslog-5.8.11-3_amd64 removed	
[+] rsyslog-7.4.4-1~bpo70+1_amd64 added	
[-] libestr0-0.1.1-2_amd64 removed	
[+] libestr0-0.1.9-1~bpo70+1_amd64 added	
[+] init-system-helpers-1.11~bpo70.1_all added	
[-] rsyslog-5.8.11-3_i386 removed	
[+] rsyslog-7.4.4-1~bpo70+1_i386 added	
[-] libestr0-0.1.1-2_i386 removed	
[+] libestr0-0.1.9-1~bpo70+1_i386 added
mirror	
  
snapshot	
  
snapshot	
  
published	
  
repo	
  
snapshot	
  
take	
  snapshot	
  
publish	
  
pull	
  
mirror	
  
take	
  snapshot	
  
aptly	
  snapshot	
  verify	
  
$ aptly snapshot verify wheezy-w-percona	
Missing dependencies (13):	
fenix [amd64]	
fenix-plugins-system [amd64]	
ia32-libs-i386 [amd64]	
ia32-libs-gtk-i386 [amd64]	
vidcontrol [amd64]	
kbdcontrol [amd64]	
libmysqlclient18 (= 5.5.31+dfsg-0+wheezy1) [amd64]	
scsh-0.6 (>= 0.6.6) [amd64]	
scsh-0.6 [amd64]	
mozart (>= 1.4.0) [amd64]	
libmysqlclient18 (= 5.5.31+dfsg-0+wheezy1) [i386]	
vidcontrol [i386]	
kbdcontrol [i386]
mirror	
  
local	
  repo	
  
snapshot	
  
published	
  
repo	
  
snapshot	
  
published	
  
repo	
  
snapshot	
  
snapshot	
  
published	
  
repo	
  
update	
  
take	
  snapshot	
  
take	
  snapshot	
  
publish	
  
publish	
  
publish	
  
verify	
  
pull	
  
merge	
  
diff	
  
add	
  
aptly	
  graph	
  
aptly	
  serve	
  
$ aptly serve	
Serving published repositories, recommended apt sources list:	
	
# aptly/squeeze (main) [amd64, i386] publishes [aptly-0.4.1]:
Snapshot from local repo [aptly]	
deb http://wheezy-aptly:8080/aptly/ squeeze main	
# upstream/wheezy (main) [amd64, i386] publishes [wheezy-all-7.4]:
Merged from sources: 'wheezy-main-7.4', 'wheezy-contrib-7.4',
'wheezy-non-free-7.4'	
deb http://wheezy-aptly:8080/upstream/ wheezy main	
	
Starting web server at: :8080 (press Ctrl+C to quit)...
Что	
  планируется	
  
•  Поиск	
  
•  Фильтры	
  при	
  выполнении	
  
операций	
  
•  Mirror	
  “as-­‐is”	
  with	
  snapshots	
  
•  0.5:	
  публикация	
  локальных	
  
репозиториев,	
  атомарное	
  
обновление	
  
Конкуренты	
  
•  mirror:	
  rpsync,	
  reprepro,	
  
debmirror,	
  apt-­‐mirror,	
  apt-­‐
cache…	
  
•  archive	
  genera]on:	
  dak,	
  mini-­‐
dak,	
  reprepro,	
  …	
  
Внутренности	
  
•  Написано	
  на	
  Go	
  
•  База	
  данных	
  -­‐	
  LevelDB	
  
•  Файлы	
  пакетов	
  хранятся	
  один	
  
раз	
  
•  Метаданные	
  пакетов	
  
Внутренности	
  
•  Пакеты	
  «держат	
  ссылки»	
  на	
  
свои	
  файлы	
  
•  mirror,	
  local	
  repo,	
  snapshot	
  –	
  
список	
  пакетов	
  
•  Публикация	
  –	
  генерация	
  мета-­‐
данных	
  +	
  создание	
  симлинков	
  
Ссылки	
  
h}p://www.aptly.info/	
  
h}ps://github.com/smira/aptly/	
  
@smira	
  
me@smira.ru	
  
Skype:	
  smirnov.andrey	
  

Contenu connexe

Tendances

Yandex Tank - Арсений Фомченко
Yandex Tank - Арсений ФомченкоYandex Tank - Арсений Фомченко
Yandex Tank - Арсений ФомченкоAvitoTech
 
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статикиЗагрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статикиKirill Mokevnin
 
Retro vs Volley
Retro vs VolleyRetro vs Volley
Retro vs VolleyArtjoker
 
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человекаNETFest
 
CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14
CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14
CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14Serguei Gitinsky
 
Декларативные даги в Apache Airflow
Декларативные даги в Apache AirflowДекларативные даги в Apache Airflow
Декларативные даги в Apache AirflowRamblerML
 
Бессигнатурное обнаружение PHP-бэкдоров
Бессигнатурное обнаружение PHP-бэкдоровБессигнатурное обнаружение PHP-бэкдоров
Бессигнатурное обнаружение PHP-бэкдоровPositive Hack Days
 
"Web Audio Api", Анатолий Найда, MoscowJS 27
"Web Audio Api", Анатолий Найда, MoscowJS 27"Web Audio Api", Анатолий Найда, MoscowJS 27
"Web Audio Api", Анатолий Найда, MoscowJS 27MoscowJS
 
Управление большим количеством физических серверов, Александр Берсенев, Инст...
 Управление большим количеством физических серверов, Александр Берсенев, Инст... Управление большим количеством физических серверов, Александр Берсенев, Инст...
Управление большим количеством физических серверов, Александр Берсенев, Инст...it-people
 
06 php instalation_ru
06 php instalation_ru06 php instalation_ru
06 php instalation_rumcroitor
 
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
 
Cache GitHub Continous Integration
Cache GitHub  Continous IntegrationCache GitHub  Continous Integration
Cache GitHub Continous IntegrationEduard Lebedyuk
 
"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)AvitoTech
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...rit2011
 
Web осень 2013 лекция 2
Web осень 2013 лекция 2Web осень 2013 лекция 2
Web осень 2013 лекция 2Technopark
 
Fabric для управления серверами
Fabric для управления серверамиFabric для управления серверами
Fabric для управления серверамиMaxim Kulsha
 
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшна
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшнаCI/CD-приложений на Tarantool: от пустого репозитория — до продакшна
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшнаMail.ru Group
 
Как приручить проектное окружение. PHP UG Minsk, июнь'2014
Как приручить проектное окружение. PHP UG Minsk, июнь'2014Как приручить проектное окружение. PHP UG Minsk, июнь'2014
Как приручить проектное окружение. PHP UG Minsk, июнь'2014kamazee
 

Tendances (20)

Yandex Tank - Арсений Фомченко
Yandex Tank - Арсений ФомченкоYandex Tank - Арсений Фомченко
Yandex Tank - Арсений Фомченко
 
Installcd Kyivbsd09
Installcd Kyivbsd09Installcd Kyivbsd09
Installcd Kyivbsd09
 
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статикиЗагрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
 
Retro vs Volley
Retro vs VolleyRetro vs Volley
Retro vs Volley
 
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
 
10 - Hadoop. Hive
10 - Hadoop. Hive10 - Hadoop. Hive
10 - Hadoop. Hive
 
CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14
CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14
CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14
 
Декларативные даги в Apache Airflow
Декларативные даги в Apache AirflowДекларативные даги в Apache Airflow
Декларативные даги в Apache Airflow
 
Бессигнатурное обнаружение PHP-бэкдоров
Бессигнатурное обнаружение PHP-бэкдоровБессигнатурное обнаружение PHP-бэкдоров
Бессигнатурное обнаружение PHP-бэкдоров
 
"Web Audio Api", Анатолий Найда, MoscowJS 27
"Web Audio Api", Анатолий Найда, MoscowJS 27"Web Audio Api", Анатолий Найда, MoscowJS 27
"Web Audio Api", Анатолий Найда, MoscowJS 27
 
Управление большим количеством физических серверов, Александр Берсенев, Инст...
 Управление большим количеством физических серверов, Александр Берсенев, Инст... Управление большим количеством физических серверов, Александр Берсенев, Инст...
Управление большим количеством физических серверов, Александр Берсенев, Инст...
 
06 php instalation_ru
06 php instalation_ru06 php instalation_ru
06 php instalation_ru
 
Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
 Practical Python Packaging / Стас Рудаков / Web Developer Wargaming Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
 
Cache GitHub Continous Integration
Cache GitHub  Continous IntegrationCache GitHub  Continous Integration
Cache GitHub Continous Integration
 
"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
 
Web осень 2013 лекция 2
Web осень 2013 лекция 2Web осень 2013 лекция 2
Web осень 2013 лекция 2
 
Fabric для управления серверами
Fabric для управления серверамиFabric для управления серверами
Fabric для управления серверами
 
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшна
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшнаCI/CD-приложений на Tarantool: от пустого репозитория — до продакшна
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшна
 
Как приручить проектное окружение. PHP UG Minsk, июнь'2014
Как приручить проектное окружение. PHP UG Minsk, июнь'2014Как приручить проектное окружение. PHP UG Minsk, июнь'2014
Как приручить проектное окружение. PHP UG Minsk, июнь'2014
 

En vedette

Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Andrey Smirnov
 
Курс высокие нагрузки и надежность: отрывок
Курс высокие нагрузки и надежность: отрывокКурс высокие нагрузки и надежность: отрывок
Курс высокие нагрузки и надежность: отрывокAndrey Smirnov
 
Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Andrey Smirnov
 
Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Andrey Smirnov
 
Консольные приложения на Go
Консольные приложения на GoКонсольные приложения на Go
Консольные приложения на GoAndrey Smirnov
 
Курс высокие нагрузки: сеть (отрывок)
Курс высокие нагрузки: сеть (отрывок)Курс высокие нагрузки: сеть (отрывок)
Курс высокие нагрузки: сеть (отрывок)Andrey Smirnov
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonAndrey Smirnov
 
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...Ontico
 

En vedette (8)

Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)
 
Курс высокие нагрузки и надежность: отрывок
Курс высокие нагрузки и надежность: отрывокКурс высокие нагрузки и надежность: отрывок
Курс высокие нагрузки и надежность: отрывок
 
Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)
 
Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)
 
Консольные приложения на Go
Консольные приложения на GoКонсольные приложения на Go
Консольные приложения на Go
 
Курс высокие нагрузки: сеть (отрывок)
Курс высокие нагрузки: сеть (отрывок)Курс высокие нагрузки: сеть (отрывок)
Курс высокие нагрузки: сеть (отрывок)
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
 
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
 

Similaire à aptly: система управления репозиториями пакетов (РИТ-2014)

Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорьdrupalconf
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов ИгорьPVasili
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Nikita Borzykh
 
presentation_r00t_conf
presentation_r00t_confpresentation_r00t_conf
presentation_r00t_confMax Glekov
 
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/LinuxSECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/LinuxSECON
 
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Ontico
 
Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва
 Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва  Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва
Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва it-people
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктуройdddpaul
 
Git для продолжающих
Git для продолжающихGit для продолжающих
Git для продолжающихIvan Evtukhovich
 
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Ontico
 
«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр КолесеньIT Share
 
Как собрать самому хакерский планшет
Как собрать самому хакерский планшетКак собрать самому хакерский планшет
Как собрать самому хакерский планшетPositive Hack Days
 
Компиляция скриптов PHP (Алексей Романенко)
Компиляция скриптов PHP (Алексей Романенко)Компиляция скриптов PHP (Алексей Романенко)
Компиляция скриптов PHP (Алексей Романенко)Ontico
 
Git для начинающих
Git для начинающихGit для начинающих
Git для начинающихVadim Drobinin
 

Similaire à aptly: система управления репозиториями пакетов (РИТ-2014) (20)

Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.
 
presentation_r00t_conf
presentation_r00t_confpresentation_r00t_conf
presentation_r00t_conf
 
Git presentation
Git presentationGit presentation
Git presentation
 
PowerShell
PowerShellPowerShell
PowerShell
 
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/LinuxSECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
 
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
 
Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва
 Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва  Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва
Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктурой
 
Heroku. Zen cloud
Heroku. Zen cloudHeroku. Zen cloud
Heroku. Zen cloud
 
Git intro
Git introGit intro
Git intro
 
Git для продолжающих
Git для продолжающихGit для продолжающих
Git для продолжающих
 
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)
 
«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень
 
Масштабируемый DevOps
Масштабируемый DevOpsМасштабируемый DevOps
Масштабируемый DevOps
 
Приручаем Git
Приручаем GitПриручаем Git
Приручаем Git
 
Как собрать самому хакерский планшет
Как собрать самому хакерский планшетКак собрать самому хакерский планшет
Как собрать самому хакерский планшет
 
Компиляция скриптов PHP (Алексей Романенко)
Компиляция скриптов PHP (Алексей Романенко)Компиляция скриптов PHP (Алексей Романенко)
Компиляция скриптов PHP (Алексей Романенко)
 
Git для начинающих
Git для начинающихGit для начинающих
Git для начинающих
 

Plus de Andrey Smirnov

Вебинар "Разработка высоконагруженных и надежных систем": Введение
Вебинар "Разработка высоконагруженных и надежных систем": ВведениеВебинар "Разработка высоконагруженных и надежных систем": Введение
Вебинар "Разработка высоконагруженных и надежных систем": ВведениеAndrey Smirnov
 
Курс высокие нагрузки: очереди (отрывок)
Курс высокие нагрузки:  очереди (отрывок)Курс высокие нагрузки:  очереди (отрывок)
Курс высокие нагрузки: очереди (отрывок)Andrey Smirnov
 
aptly: Debian repository management tool
aptly: Debian repository management toolaptly: Debian repository management tool
aptly: Debian repository management toolAndrey Smirnov
 
aptly - система управления Debian-репозиториями пакетов
aptly - система управления Debian-репозиториями пакетовaptly - система управления Debian-репозиториями пакетов
aptly - система управления Debian-репозиториями пакетовAndrey Smirnov
 
Smirnov twisted-python
Smirnov twisted-pythonSmirnov twisted-python
Smirnov twisted-pythonAndrey Smirnov
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonAndrey Smirnov
 
Доклад на РИТ: Высокие нагрузки (2008)
Доклад на РИТ: Высокие нагрузки (2008)Доклад на РИТ: Высокие нагрузки (2008)
Доклад на РИТ: Высокие нагрузки (2008)Andrey Smirnov
 

Plus de Andrey Smirnov (11)

Remote Highload
Remote HighloadRemote Highload
Remote Highload
 
Вебинар "Разработка высоконагруженных и надежных систем": Введение
Вебинар "Разработка высоконагруженных и надежных систем": ВведениеВебинар "Разработка высоконагруженных и надежных систем": Введение
Вебинар "Разработка высоконагруженных и надежных систем": Введение
 
Курс высокие нагрузки: очереди (отрывок)
Курс высокие нагрузки:  очереди (отрывок)Курс высокие нагрузки:  очереди (отрывок)
Курс высокие нагрузки: очереди (отрывок)
 
aptly: Debian repository management tool
aptly: Debian repository management toolaptly: Debian repository management tool
aptly: Debian repository management tool
 
aptly - система управления Debian-репозиториями пакетов
aptly - система управления Debian-репозиториями пакетовaptly - система управления Debian-репозиториями пакетов
aptly - система управления Debian-репозиториями пакетов
 
Smirnov twisted-python
Smirnov twisted-pythonSmirnov twisted-python
Smirnov twisted-python
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
 
Доклад на РИТ: Высокие нагрузки (2008)
Доклад на РИТ: Высокие нагрузки (2008)Доклад на РИТ: Высокие нагрузки (2008)
Доклад на РИТ: Высокие нагрузки (2008)
 
pyFMS
pyFMSpyFMS
pyFMS
 
pyFMS
pyFMSpyFMS
pyFMS
 
PGDBObject
PGDBObjectPGDBObject
PGDBObject
 

aptly: система управления репозиториями пакетов (РИТ-2014)

  • 1. aptly:  система   управления   репозиториями  пакетов   Андрей  Смирнов  
  • 2. Содержание   •  Проблема  повторяемости   •  aptly:  основные  идеи   •  Примеры  использования   •  Немного  о  внутренностях   •  Планы  
  • 6. Окружение  -­‐     набор  пакетов  
  • 8. Потребность   Official  repo   Backports   3rd  party   repo   PPA   Homebrew  
  • 9. Управление  окружением   Backports   3rd  party   repo   apt-­‐get   apt-­‐sources   apt-­‐ preferences   Official  repo   Homebrew  
  • 13. Невоспроизводимость   •  Поставить  пакет  A   •  Добавить  в  apt-­‐sources   •  Изменить  pinning   •  Поставить  пакет  A  -­‐  ?  
  • 14. Версии  окружения   tes]ng   development   staging   produc]on  
  • 15. Цель   Зафиксированный  репозиторий  пакетов   (повторяемость)   Контролируемые  изменения  версий   (изменения)  
  • 16. aptly   *  не  является  заменой  apt,  dpkg!  
  • 17. Сущности   –  зеркало  удаленного  репозитория   –  неизменяемый  срез  набора  пакетов   –  опубликованный  репозиторий  пакетов   mirror   local  repo   snapshot   published   repo   –  локальный  репозиторий  пакетов  
  • 18. mirror   local  repo   snapshot   published   repo   snapshot   published   repo   snapshot   snapshot   published   repo   update   take  snapshot   take  snapshot   publish   publish   publish   verify   pull   merge   diff   add  
  • 19. mirror   $ aptly mirror create wheezy-main http://mirror.yandex.ru/ debian/ wheezy main … $ aptly mirror update wheezy-main … $ aptly snapshot create wheezy-7.4 from mirror wheezy-main … $ aptly publish snapshot wheezy-7.4 debian …
  • 20. mirror   snapshot   published   repo   update   take  snapshot   publish  
  • 21. local  repo   $ aptly repo create –distribution=wheezy mysoftware … $ aptly repo add –remove-files mysoftware incoming/*.deb … $ aptly snapshot create my-20140414 from repo mysoftware … $ aptly publish snapshot my-20140414 local …
  • 22. local  repo   published   repo   snapshot   published   repo   take  snapshot   publish   publish  add  
  • 23. aptly  snapshot  pull   $ aptly snapshot pull wheezy-7.4 percona-20140414 wheezy-w- percona 'percona-server-server (>=5.5)’ … [+] percona-server-server-5.5.35-rel33.0-611.wheezy_amd64 added [+] percona-server-server-5.5-5.5.35-rel33.0-611.wheezy_amd64 added [+] percona-server-client-5.5-5.5.35-rel33.0-611.wheezy_amd64 added [+] percona-server-common-5.5-5.5.35-rel33.0-611.wheezy_amd64 added [-] libmysqlclient18-5.5.31+dfsg-0+wheezy1_amd64 removed [+] libmysqlclient18-5.5.35-rel33.0-611.wheezy_amd64 added [+] percona-server-server-5.5.35-rel33.0-611.wheezy_i386 added [+] percona-server-server-5.5-5.5.35-rel33.0-611.wheezy_i386 added [+] percona-server-client-5.5-5.5.35-rel33.0-611.wheezy_i386 added [+] percona-server-common-5.5-5.5.35-rel33.0-611.wheezy_i386 added [-] libmysqlclient18-5.5.31+dfsg-0+wheezy1_i386 removed [+] libmysqlclient18-5.5.35-rel33.0-611.wheezy_i386 added
  • 24. aptly  snapshot  pull   $ aptly snapshot pull wheezy-7.4 backports-20140414 wheezy- w-rsyslog rsyslog … [-] rsyslog-5.8.11-3_amd64 removed [+] rsyslog-7.4.4-1~bpo70+1_amd64 added [-] libestr0-0.1.1-2_amd64 removed [+] libestr0-0.1.9-1~bpo70+1_amd64 added [+] init-system-helpers-1.11~bpo70.1_all added [-] rsyslog-5.8.11-3_i386 removed [+] rsyslog-7.4.4-1~bpo70+1_i386 added [-] libestr0-0.1.1-2_i386 removed [+] libestr0-0.1.9-1~bpo70+1_i386 added
  • 25. mirror   snapshot   snapshot   published   repo   snapshot   take  snapshot   publish   pull   mirror   take  snapshot  
  • 26. aptly  snapshot  verify   $ aptly snapshot verify wheezy-w-percona Missing dependencies (13): fenix [amd64] fenix-plugins-system [amd64] ia32-libs-i386 [amd64] ia32-libs-gtk-i386 [amd64] vidcontrol [amd64] kbdcontrol [amd64] libmysqlclient18 (= 5.5.31+dfsg-0+wheezy1) [amd64] scsh-0.6 (>= 0.6.6) [amd64] scsh-0.6 [amd64] mozart (>= 1.4.0) [amd64] libmysqlclient18 (= 5.5.31+dfsg-0+wheezy1) [i386] vidcontrol [i386] kbdcontrol [i386]
  • 27. mirror   local  repo   snapshot   published   repo   snapshot   published   repo   snapshot   snapshot   published   repo   update   take  snapshot   take  snapshot   publish   publish   publish   verify   pull   merge   diff   add  
  • 29. aptly  serve   $ aptly serve Serving published repositories, recommended apt sources list: # aptly/squeeze (main) [amd64, i386] publishes [aptly-0.4.1]: Snapshot from local repo [aptly] deb http://wheezy-aptly:8080/aptly/ squeeze main # upstream/wheezy (main) [amd64, i386] publishes [wheezy-all-7.4]: Merged from sources: 'wheezy-main-7.4', 'wheezy-contrib-7.4', 'wheezy-non-free-7.4' deb http://wheezy-aptly:8080/upstream/ wheezy main Starting web server at: :8080 (press Ctrl+C to quit)...
  • 30. Что  планируется   •  Поиск   •  Фильтры  при  выполнении   операций   •  Mirror  “as-­‐is”  with  snapshots   •  0.5:  публикация  локальных   репозиториев,  атомарное   обновление  
  • 31. Конкуренты   •  mirror:  rpsync,  reprepro,   debmirror,  apt-­‐mirror,  apt-­‐ cache…   •  archive  genera]on:  dak,  mini-­‐ dak,  reprepro,  …  
  • 32. Внутренности   •  Написано  на  Go   •  База  данных  -­‐  LevelDB   •  Файлы  пакетов  хранятся  один   раз   •  Метаданные  пакетов  
  • 33. Внутренности   •  Пакеты  «держат  ссылки»  на   свои  файлы   •  mirror,  local  repo,  snapshot  –   список  пакетов   •  Публикация  –  генерация  мета-­‐ данных  +  создание  симлинков  
  • 34. Ссылки   h}p://www.aptly.info/   h}ps://github.com/smira/aptly/   @smira   me@smira.ru   Skype:  smirnov.andrey