aptly 0.5

Новая версия aptly 0.5 была выпущена сегодня. aptly можно скачать в виде исполняемых файлов или подключив Debian-репозиторий:

deb http://repo.aptly.info/ squeeze main

При установке из репозитория в первый раз, не забудьте проимпортировать ключ, которым подписан релиз:

$ gpg --keyserver keys.gnupg.net --recv-keys 2A194991
$ gpg -a --export 2A194991 | sudo apt-key add -

Вот самые важные новые возможности в этой версии:

Публикация локальных репозиториев

Есть два основных случая использования локальных репозиториев:

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

Во втором случае лучше всего создать snapshot локального репозитория и опубликовать его. Однако когда активно тестируются новые версии, создание snapshot при каждом изменении выглядит не очень разумным. aptly начиная с версии 0.5 поддерживает публикацию локальных репозиториев напрямую. Более того, когда репозиторий обновляет, его опубликованное представление можно обновить в один шаг.

При создании локального репозитория можно указать параметры, которые будут использоваться по умолчанию при публикации (distribution and component):

aptly repo create -distribution=wheezy testing-wheezy
aptly repo add -remove-files testing-wheezy incoming/*.deb
aptly publish repo testing-wheezy
...
aptly repo add -remove-files testing-wheezy incoming/*.deb
aptly publish update wheezy

Переключение опубликованных snapshot

Snapshot - это способ обеспечить повторяемость в наборе установленных пакетов, но время от времени возникает необходимость обновить версии ПО или добавить новые пакеты. Для публикации нового snapshot aptly до версии 0.5 требовала удалить старый опубликованный snapshot, а затем опубликовать новый. Между этими действиями опубликованный репозиторий не был работоспособен.

Теперь aptly поддерживает переключение опубликованных snapshotов. aptly выполняет следующую последовательность действий, чтобы минимизировать время недоступности репозитория:

  • в первую очередь создаются ссылки на новые файлы пакетов;
  • затем создаются файлы с метаданными (Packages, Release, ...) с временными именами
  • новые версии файлов метаданных замещают старые версии
  • старые файлы пакетов вычищаются.

Например:

aptly snapshot create wheezy-7.3 from mirror wheezy-main
aptly publish snapshot wheezy-7.3
....
aptly mirror update wheezy-main
aptly snapshot create wheezy-7.4 from mirror wheezy-main
aptly publish switch wheezy wheezy-7.4

Стратегия слияния

При слиянии snapshotов aptly заменяет совпадающие по имени и архитектуре пакеты в порядке следования их в командной строке. Это хорошо работает при слиянии обычного репозитория и backportов. Но иногда такого недостаточно: например, при слиянии обычного репозитория, updates и security. Теперь aptly поддерживает флаг -latest, который включает стратегию "выигрывает самая поздняя версия":

aptly snapshot merge -latest wheezy-latest wheezy-backports wheezy-main wheezy-security

Спасибо Ryan Uber и Keith Chambers за идею и pull request.

Автоматизация

Иногда вам нужно сделать действия с целым набором зеркал, snapshotов и репозиториев. aptly с версии 0.5 поддерживает формат списка "raw", который легко распарсить. Например, обновим все зеркала Debian:

aptly mirror list -raw | grep -E '^debian-.*' | xargs -n 1 aptly mirror update

Спасибо Eric Keller за идею.

Полный список изменений

Вот полный список изменений в версии 0.5:

Комментарии

Comments powered by Disqus
Contents © 2015 Andrey - Powered by Nikola