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

3,044 views

Published on

Published in: Engineering
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,044
On SlideShare
0
From Embeds
0
Number of Embeds
2,395
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. aptly:  система   управления   репозиториями  пакетов   Андрей  Смирнов  
  2. 2. Содержание   •  Проблема  повторяемости   •  aptly:  основные  идеи   •  Примеры  использования   •  Немного  о  внутренностях   •  Планы  
  3. 3. Повторяемость!  
  4. 4. Повторяемость   окружения  
  5. 5. Повторяемость   изменений  окружения  
  6. 6. Окружение  -­‐     набор  пакетов  
  7. 7. Версии  пакетов  разные  
  8. 8. Потребность   Official  repo   Backports   3rd  party   repo   PPA   Homebrew  
  9. 9. Управление  окружением   Backports   3rd  party   repo   apt-­‐get   apt-­‐sources   apt-­‐ preferences   Official  repo   Homebrew  
  10. 10. Не  та  версия…  
  11. 11. apt  pinning  поможет!  
  12. 12. No…  
  13. 13. Невоспроизводимость   •  Поставить  пакет  A   •  Добавить  в  apt-­‐sources   •  Изменить  pinning   •  Поставить  пакет  A  -­‐  ?  
  14. 14. Версии  окружения   tes]ng   development   staging   produc]on  
  15. 15. Цель   Зафиксированный  репозиторий  пакетов   (повторяемость)   Контролируемые  изменения  версий   (изменения)  
  16. 16. aptly   *  не  является  заменой  apt,  dpkg!  
  17. 17. Сущности   –  зеркало  удаленного  репозитория   –  неизменяемый  срез  набора  пакетов   –  опубликованный  репозиторий  пакетов   mirror   local  repo   snapshot   published   repo   –  локальный  репозиторий  пакетов  
  18. 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. 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. 20. mirror   snapshot   published   repo   update   take  snapshot   publish  
  21. 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. 22. local  repo   published   repo   snapshot   published   repo   take  snapshot   publish   publish  add  
  23. 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. 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. 25. mirror   snapshot   snapshot   published   repo   snapshot   take  snapshot   publish   pull   mirror   take  snapshot  
  26. 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. 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  
  28. 28. aptly  graph  
  29. 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. 30. Что  планируется   •  Поиск   •  Фильтры  при  выполнении   операций   •  Mirror  “as-­‐is”  with  snapshots   •  0.5:  публикация  локальных   репозиториев,  атомарное   обновление  
  31. 31. Конкуренты   •  mirror:  rpsync,  reprepro,   debmirror,  apt-­‐mirror,  apt-­‐ cache…   •  archive  genera]on:  dak,  mini-­‐ dak,  reprepro,  …  
  32. 32. Внутренности   •  Написано  на  Go   •  База  данных  -­‐  LevelDB   •  Файлы  пакетов  хранятся  один   раз   •  Метаданные  пакетов  
  33. 33. Внутренности   •  Пакеты  «держат  ссылки»  на   свои  файлы   •  mirror,  local  repo,  snapshot  –   список  пакетов   •  Публикация  –  генерация  мета-­‐ данных  +  создание  симлинков  
  34. 34. Ссылки   h}p://www.aptly.info/   h}ps://github.com/smira/aptly/   @smira   me@smira.ru   Skype:  smirnov.andrey  

×