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

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

Embed Size (px)

DESCRIPTION

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.

Citation preview

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