aptly: система управления репозиториями пакетов, Андрей...

34
aptly: система управления репозиториями пакетов Андрей Смирнов

Upload: ontico

Post on 15-May-2015

1.150 views

Category:

Internet


4 download

TRANSCRIPT

aptly: система

управления

репозиториями пакетов

Андрей Смирнов

Содержание

• Проблема повторяемости

• aptly: основные идеи

• Примеры использования

• Немного о внутренностях

• Планы

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

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

окружения

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

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

Окружение -

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

Версии пакетов разные

Потребность

Official repoOfficial repo

BackportsBackports

3rd party

repo

3rd party

repo

PPAPPA

HomebrewHomebrew

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

BackportsBackports

3rd party

repo

3rd party

repo

apt-getapt-get

apt-sourcesapt-sources

apt-

preferences

apt-

preferences

Official repoOfficial repo

HomebrewHomebrew

Не та версия…

apt pinning поможет!

No…

Невоспроизводимость

• Поставить пакет A

• Добавить в apt-sources

• Изменить pinning

• Поставить пакет A - ?

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

testing

development

staging

production

ЦельЗафиксированный репозиторий пакетов

(повторяемость)

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

(изменения)

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

Сущности

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

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

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

mirrormirror

local repolocal repo

snapshotsnapshot

published

repo

published

repo

– локальный репозиторий пакетов

mirrormirror

local repolocal repo

snapshotsnapshot

published

repo

published

repo

snapshotsnapshot

published

repo

published

repo

snapshotsnapshot

snapshotsnapshot

published

repo

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…

mirrormirror

snapshotsnapshot

published

repo

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 repolocal repo published

repo

published

repo

snapshotsnapshot

published

repo

published

repo

take snapshot

publish

publishadd

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

mirrormirror

snapshotsnapshot

snapshotsnapshot

published

repo

published

repo

snapshotsnapshot

take snapshot

publishpull

mirrormirror

take snapshot

aptly snapshot verify$ aptly snapshot verify wheezy-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]

mirrormirror

local repolocal repo

snapshotsnapshot

published

repo

published

repo

snapshotsnapshot

published

repo

published

repo

snapshotsnapshot

snapshotsnapshot

published

repo

published

repo

update

take snapshot

take snapshot

publish

publish

publish

verify

pull

merge

diff

add

aptly graph

aptly serve

$ aptly serveServing 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: ftpsync, reprepro,

debmirror, apt-mirror, apt-cache…

• archive generation: dak, mini-dak,

reprepro, …

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

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

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

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

раз

• Метаданные пакетов

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

• Пакеты «держат ссылки» на

свои файлы

• mirror, local repo, snapshot –

список пакетов

• Публикация – генерация мета-

данных + создание симлинков

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

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

@smira

[email protected]

Skype: smirnov.andrey