Watch: различия между версиями

Материал из ALT Linux Wiki
Строка 6: Строка 6:
Для работы с watch файлами в Debian используется инструмент uscan из пакете devscripts.
Для работы с watch файлами в Debian используется инструмент uscan из пакете devscripts.


В ALT Linux ткже можно использовать отдельные watch файлы для проверки наличия обновлений.
В ALT Linux также можно использовать отдельные watch файлы для проверки наличия обновлений.
Дополнительно, с помощью watch файлов, размешенных в gear репозитории и/ли упакованных в src.rpm,
Дополнительно, с помощью watch файлов, размешенных в gear репозитории и/ли упакованных в src.rpm,
можно автоматически скачивать обновления, проверять их цифровую подпись,
можно автоматически скачивать обновления, проверять их цифровую подпись,
автоматически обновлять src.rpm или gear репозиторий.
автоматически обновлять src.rpm или gear репозиторий.
watch файлы, упакованные в src.rpm пакет, используются сервисом [http://watch.altlinux.org watch.altlinux.org]
как один из источников данных для проверки выхода обновлений к пакетам.


В ALT Linux для работы с watch файлами рекомендуется использовать адаптированные к rpm, gear и платформе ALT Linux
В ALT Linux для работы с watch файлами рекомендуется использовать адаптированные к rpm, gear и платформе ALT Linux
утилиты rpm-uscan, uscan-query, srpmnmu/srpmtool.
утилиты rpm-uscan, uscan-query, srpmnmu/srpmtool.
watch файлы, упакованные в src.rpm пакет, используются сервисом [http://watch.altlinux.org watch.altlinux.org]
как один из источников данных для проверки выхода обновлений к пакетам.


=== Создание watch файлов ===
=== Создание watch файлов ===

Версия от 10:55, 15 июня 2014

Использование watch файлов в ALT Linux

Назначение watch файлов

Файлы debian/watch были введены в Debian для автоматического отслеживания появления новых версий пакета в upstream'е. Для работы с watch файлами в Debian используется инструмент uscan из пакете devscripts.

В ALT Linux также можно использовать отдельные watch файлы для проверки наличия обновлений. Дополнительно, с помощью watch файлов, размешенных в gear репозитории и/ли упакованных в src.rpm, можно автоматически скачивать обновления, проверять их цифровую подпись, автоматически обновлять src.rpm или gear репозиторий.

watch файлы, упакованные в src.rpm пакет, используются сервисом watch.altlinux.org как один из источников данных для проверки выхода обновлений к пакетам.

В ALT Linux для работы с watch файлами рекомендуется использовать адаптированные к rpm, gear и платформе ALT Linux утилиты rpm-uscan, uscan-query, srpmnmu/srpmtool.

Создание watch файлов

Готовый watch файл часто можно позаимствовать из соответствующего исходного пакета в debian. Олнако watch файл может быть легко создан самостоятельно.

При создании watch-файлов следует руководствоваться документацией Debian. man rpm-uscan.

watch-файл

Первая линия watch-файла должна быть версией формата (3, на текущий момент), а следующие линии содержат любые URL для парсинга. Например:
   version=3
   http://ftp.gnu.org/gnu/hello/hello-(.*).tar.gz

Для проектов, размещенных на SourceForge, можно воспользоваться особым форматом записи (применяет редиректор на qa.debian.org с целью предоставления неизменного интерфейса к порой изменяющейся схеме SF):

version=3
http://sf.net/<project>/<tar-name>-(.+)\.tar\.gz

При публикации архивов с путями вида name/1.2/name-1.2.3.tar.gz и отсутствии симлинка current могут пригодиться обратные ссылки (backreferences) в регулярном выражении, например:

version=3
http://xapian.org/download http://oligarchy.co.uk/xapian/([\d.]+)/xapian-core-\1\.tar\.gz



Использование watch файлов совместно с src.rpm

Чтобы watch файлы использовались сервисом watch.altlinux.org, они должны быть упакованы в src.rpm пакет.

Упаковка watch файлов в src.rpm

watch файл должен быть указан в спеке с помощью тега Source:

...
SourceXX: %name.watch
...

По умолчанию подразумевается, что .watch файл указывает на Source(0):.

Если это не так, например, .watch файл указывает на Source3:, то надо паковать .watch файл как

SourceXX: %name.source3.watch

Для подписанных пакетов поддерживается автоматическая проверка подписи у скачанного архива. Для этого в пакет должен быть упакован публичный ключ апстрима как файл upstream-signing-key.asc:

SourceYY: upstream-signing-key.asc

Если исходные тексты пакета разбиты на несколько архивов с общей версией, то для автоматизации обновления для каждого архива нужен свой watch файл:

Name: somegame
Source0: %name-%version-src.tar
Source1: %name-%version-data.tar
Source2: %name.source0.watch
Source3: %name.source1.watch
Source4: upstream-signing-key.asc


проверка и обновление src.rpm

В утилитах srpmnmu, srpmtool, идущих с perl-RPM-Source-Editor >= 0.71, доступно автообновление src.rpm пакетов с помощью опции --uupdate. (uu, два u, поскольку так называется соответствующая утилита в Debian).

Пример вызова:

$ srpmnmu --uupdate /path/to/name-version-rel.src.rpm
$ srpmtool --uupdate /path/to/name-version-rel.src.rpm


Пример работы:

$ srpmtool --uupdate flashrom.spec
uupdate: new version 0.9.4
Записан: flashrom-0.9.4-alt1.src.rpm
$ srpmnmu --uupdate flashrom-0.9.4-alt1.src.rpm
uupdate: version 0.9.4 is up to date.

Утилиты можно применять не только к src.rpm, но и к .spec файлам:

$ srpmnmu -i --uupdate name.spec

Пример работы со спек-файлом:

$ rpm -i /path/to/name-version-rel.src.rpm
$ srpmnmu -i --uupdate name.spec
$ diff -u name.spec~ name.spec   ### (смотрим, чего там робот наменял)
$ rpmbuild -bs --nodeps name.spec (or hashertarbuild -bs name.spec)

Watch для gear-репозитория

gear репозиторий

утилита rpm-uscan из одноименного пакета представляет собой форк Debian'овской утилиты uscan, адаптированный к работе в rpm окружении и с поддержкой gear-репозиториев.

rpm-uscan --report --any-archive

Ее можно использовать для проверки наличия новых версий, и их загрузки (с опцией --download).

Изменено поведение опции --repack (переупаковывает архив в несжатый tar), добавлена опция --any-archive (ищет всевозможные форматы архивов; полезна, если в watch файле был прописан tar.gz, а апстрим в новом релизе переехал на tar.xz.

В git/gear-репозитории rpm-uscan можно запускать совсем без опций -- она самостоятельно найдет watch файл и узнает текущую версию.

Обновление gear-репозитория

Поддерживается обновление gear-репозитария по watch файлу для большинства употребительных типов gear-репозитариев. Перед первым употреблением имеет смысл установить утилиту gear-rules-verify из пакета perl-Gear-Rules >= 0.04

gear-rules-verify

сообщит, поддерживается ли обновление для вашего gear репозитория.

Для и проверки, и обновления gear-репозитария по watch файлу используйте команду

rpm-uscan --force-action gear-uupdate

при этом rpm-uscan скачает архив с исходниками и вызовет утилиту

gear-uupdate --upstream-version *new version* *архив*

которая и обновит gear репозиторий.

Эта же возможность интегрирована и в cronbuild. При наличии watch файла утилиты из пакета gear-cronbuild (см. Gear/cronbuild)

gear-cronbuild-apply-hooks
gear-cronbuild-apply-hooks-in-chroot

вызывают внутри rpm-uscan --force-action gear-uupdate.

Утилиту gear-uupdate можно использовать и независимо от rpm-uscan, как более интеллектуальный вариант gear-update.

Таким образом, владельцам обновляемых из тарбола gear репозиториев имеет смысл класть в gear репозиторий рядом со спек файлом и watch файл. Готовый watch файл можно поискать в Debian либо написать самому согласно документации.

I: перспективы автоматизации с помощью .watch файлов.

В текущем виде uupdate-like автоматизация не совсем полная, так как хоть она и снимает с майнтайнера часть рутинной работы, никуда не девается необходимость сличать исходники, не появились ли у пакета новые сборочные зависимости.

Поэтому в перспективе я еще хочу как опцию прикрутить к обновлению анализаторы кода, которые будут читать configure.ac и т.д. и добавлять в BuildRequires: все то, чего там, по их мнению, не хватает для новой версии.

С этими анализаторами я в перспективе хочу развернуть на watch.altlinux.org автосборщик, который будет следить за пакетами с watch файлами, и при выходе новой версии отправлять на test-only новый пакет.

Ссылки