aptly: система управления репозиториями пакетов, Андрей...
TRANSCRIPT
Содержание
• Проблема повторяемости
• 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
Невоспроизводимость
• Поставить пакет A
• Добавить в apt-sources
• Изменить pinning
• Поставить пакет A - ?
Сущности
– зеркало удаленного репозитория
– неизменяемый срез набора пакетов
– опубликованный репозиторий пакетов
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…
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 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
Skype: smirnov.andrey