Top Banner
aptly - система управления Debian- репозиториями пакетов Андрей Смирнов, DevOps Meetup Moscow Jan’14
39

aptly - система управления Debian-репозиториями пакетов

Jun 22, 2015

Download

Technology

Andrey Smirnov

aptly is a swiss army knife for Debian repository management: it allows to mirror remote repositories, take snapshots, pull new versions of packages along with dependencies, publish snapshots.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: aptly - система управления Debian-репозиториями пакетов

aptly - система управления Debian-

репозиториями пакетовАндрей Смирнов,

DevOps Meetup Moscow Jan’14

Page 2: aptly - система управления Debian-репозиториями пакетов

Повторяемость!

Page 3: aptly - система управления Debian-репозиториями пакетов

Изменения

Page 4: aptly - система управления Debian-репозиториями пакетов

Окружение

Page 5: aptly - система управления Debian-репозиториями пакетов

Повторяемость окружения

Page 6: aptly - система управления Debian-репозиториями пакетов

Изменение окружения

Page 7: aptly - система управления Debian-репозиториями пакетов

Повторяемость изменений окружения

Page 8: aptly - система управления Debian-репозиториями пакетов

Окружение - набор пакетов

Page 9: aptly - система управления Debian-репозиториями пакетов

Версии окружения

testing

development

staging

production

Page 10: aptly - система управления Debian-репозиториями пакетов

Управление окружением

apt-get

apt-sources

apt-preferences

Debianrepo

backports

3rd-partyrepo

Page 11: aptly - система управления Debian-репозиториями пакетов

Не та версия…

Page 12: aptly - система управления Debian-репозиториями пакетов

apt pinning поможет!

Page 13: aptly - система управления Debian-репозиториями пакетов

No…

Page 14: aptly - система управления Debian-репозиториями пакетов

Цель

• Зафиксированный репозиторий пакетов (повторяемость)

• Контролируемые изменения версий (изменений)

Page 15: aptly - система управления Debian-репозиториями пакетов

aptly* не является заменой apt, dpkg!

Page 16: aptly - система управления Debian-репозиториями пакетов

Сущностиmirror – зеркало удаленного репозитория

snapshot – неизменяемый срез набора пакетов

publishedrepo – опубликованный репозиторий пакетов

Page 17: aptly - система управления Debian-репозиториями пакетов

snapshot

mirror

publishedrepo

take snapshot

localrepo

update

take snapshot snapshot

snapshot

merge

snapshotpull

publish

diff

verify

Page 18: aptly - система управления Debian-репозиториями пакетов

aptly mirror

$ aptly mirror create wheezy-main http://mirror.yandex.ru/debian/ wheezy mainDownloading http://mirror.yandex.ru/debian/dists/wheezy/Release...!Mirror [mirror1]: http://mirror.yandex.ru/debian/ wheezy successfully added.You can run 'aptly mirror update mirror1' to download repository contents.

Page 19: aptly - система управления Debian-репозиториями пакетов

aptly mirror$ aptly mirror update wheezy-mainDownloading http://mirror.yandex.ru/debian/dists/wheezy/Release...Downloading & parsing package files...Downloading http://mirror.yandex.ru/debian/dists/wheezy/main/binary-i386/Packages.bz2...Downloading http://mirror.yandex.ru/debian/dists/wheezy/main/binary-amd64/Packages.bz2...Saving packages to database...Building download queue...Download queue: 0 items, 0.00 GiB size!Mirror `wheezy-main` has been successfully updated.

Page 20: aptly - система управления Debian-репозиториями пакетов

mirror

update

Page 21: aptly - система управления Debian-репозиториями пакетов

aptly snapshot

$ aptly snapshot create deb-main-250114 from mirror wheezy-main!Snapshot deb-main-250114 successfully created.You can run 'aptly publish snapshot deb-main-250114' to publish snapshot as Debian repository.

Page 22: aptly - система управления Debian-репозиториями пакетов

snapshot

mirror take snapshot

update

Page 23: aptly - система управления Debian-репозиториями пакетов

aptly snapshot pull$ aptly snapshot pull deb-main-250114 percona-250114 deb-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

Page 24: aptly - система управления Debian-репозиториями пакетов

aptly snapshot pull$ aptly snapshot pull aptly snapshot pull deb-main-250114 back-250114 deb-w-xorg 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

Page 25: aptly - система управления Debian-репозиториями пакетов

snapshot

mirror take snapshot

update

snapshot

snapshotpull

Page 26: aptly - система управления Debian-репозиториями пакетов

aptly snapshot diff

$ aptly snapshot diff deb-main-250114 deb-w-percona Arch | Package | Version in A | Version in B! amd64 | libmysqlclient18 | 5.5.31+dfsg-0+wheezy1 | 5.5.35-rel33.0-611.wheezy+ amd64 | percona-server-client-5.5 | - | 5.5.35-rel33.0-611.wheezy+ amd64 | percona-server-common-5.5 | - | 5.5.35-rel33.0-611.wheezy+ amd64 | percona-server-server | - | 5.5.35-rel33.0-611.wheezy+ amd64 | percona-server-server-5.5 | - | 5.5.35-rel33.0-611.wheezy! i386 | libmysqlclient18 | 5.5.31+dfsg-0+wheezy1 | 5.5.35-rel33.0-611.wheezy+ i386 | percona-server-client-5.5 | - | 5.5.35-rel33.0-611.wheezy+ i386 | percona-server-common-5.5 | - | 5.5.35-rel33.0-611.wheezy+ i386 | percona-server-server | - | 5.5.35-rel33.0-611.wheezy+ i386 | percona-server-server-5.5 | - | 5.5.35-rel33.0-611.wheezy

Page 27: aptly - система управления Debian-репозиториями пакетов

snapshot

mirror take snapshot

update

snapshot

snapshotpull

diff

Page 28: aptly - система управления Debian-репозиториями пакетов

aptly snapshot verify$ aptly snapshot verify deb-w-perconaMissing 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]

Page 29: aptly - система управления Debian-репозиториями пакетов

snapshot

mirror take snapshot

update

snapshot

snapshotpull

diff

verify

Page 30: aptly - система управления Debian-репозиториями пакетов

aptly snapshot merge

$ aptly snapshot merge deb-w-percona-250114 deb-main-250114 percona-250114!Snapshot deb-w-percona-250114 successfully created.You can run 'aptly publish snapshot deb-w-percona-250114' to publish snapshot as Debian repository.

Page 31: aptly - система управления Debian-репозиториями пакетов

snapshot

mirror take snapshot

update

snapshot

snapshot

merge

snapshotpull

diff

verify

Page 32: aptly - система управления Debian-репозиториями пакетов

aptly publish snapshot$ aptly publish snapshot -distribution=wheezy percona-250114Signing file '/Users/smira/.aptly/public/dists/wheezy/Release' with gpg, please enter your passphrase when prompted:!…!Snapshot percona-250114 has been successfully published.Please setup your webserver to serve directory '/Users/smira/.aptly/public' with autoindexing.Now you can add following line to apt sources: deb http://your-server/ wheezy mainDon't forget to add your GPG key to apt with apt-key.

Page 33: aptly - система управления Debian-репозиториями пакетов

snapshot

mirror

publishedrepo

take snapshot

update

snapshot

snapshot

merge

snapshotpull

publish

diff

verify

Page 34: aptly - система управления Debian-репозиториями пакетов

Что планируется• Поиск

• Фильтры при выполнении операций

• Управление локальными репозиториями (добавление “своих” пакетов)

• Поддержка source-пакетов и translations

• Верифицирование удаленных репозиторев

Page 35: aptly - система управления Debian-репозиториями пакетов

Что не работает пока

• удаление

• bash-completion

• flat-репозитории

• прогресс скачивания

Page 36: aptly - система управления Debian-репозиториями пакетов

Конкуренты

• mirror: ftpsync, reprepro, debmirror, apt-mirror, apt-cache…

• archive generation: dak, mini-dak, reprepro, …

Page 37: aptly - система управления Debian-репозиториями пакетов

Внутренности

• Написано на Go

• База данных - LevelDB

• Файлы пакетов хранятся один раз

Page 38: aptly - система управления Debian-репозиториями пакетов

Внутренности• ~/.aptly.conf - конфигурация

• ~/.aptly/ - рабочий каталог по умолчанию

• db/ - база данных (мета-информация)

• pool/ - хранилище файлов

• public/ - опубликованные репозитории

Page 39: aptly - система управления Debian-репозиториями пакетов

Ссылки• http://www.aptly.info/

• https://github.com/smira/aptly/

• @smira

[email protected]

• Skype: smirnov.andrey