воскресенье, 22 декабря 2019 г.

Использование quilt для подготовки заплат

В прошлом я уже описывал несколько заплаток, которые накладываю на Zabbix для решения различных проблем:
Кроме этих описанных заплаток имеется ещё несколько специфичных заплаток, которые следаны для интеграции Zabbix со сторонними системами и нигде не описаны, т.к. вряд-ли кого-то заинтересуют.

Кроме того, накладывать заплатки приходится не только на сам Zabbix, но и на связанные с ним библиотеки:
Правки приходится делать в разных пакетах, не только связанных непосредственно с Zabbix, из-за чего я даже завёл репозиторий для доработанных пакетов. В заметке Создание своего репозитория Debian при помощи aptly можно найти ещё несколько примеров доработанных пакетов, доработке некоторых из которых были посвящены отдельные заметки.

Количество специфичных заплаток для Zabbix, с которыми приходится работать, со временем только увеличивается. Если aptly помогает упорядочить работу с большим количеством нестандартных пакетов, то quilt помогает упорядочить работу с большим количеством заплаток одного и того же пакета.

quilt формирует из заплаток стек, позволяя легко вносить обновления в любую из заплаток стека. Для обновления заплатки, погребённой под более поздними, можно отменить изменения, вносимые в исходный код заплатками, лежащими сверху, внести изменения в исходный код, обновить текущую заплатку, а потом снова наложить на код все вышестоящие заплатки.

Ниже кратко описаны основные команды quilt, которые могут пригодиться для управления заплатками.

Создаём новую заплатку:
$ quilt new permit-edit-maintenances
Добавляем в заплатку файлу, которые собираемся менять:
$ quilt add frontends/php/maintenance.php
$ quilt add frontends/php/include/classes/api/services/CMaintenance.php
Посмотреть список файлов, содержимое которых будет отслеживаться в заплате, можно при помощи команды:
$ quilt files
Чтобы изменения в файлах не отслеживались в заплате, можно воспользоваться такой командой:
$ quilt remove config.guess config.sub database/mysql/create.sql database/postgresql/create.sql database/sqlite3/create.sql
Редактируем файлы:
$ vim frontends/php/maintenance.php
$ vim frontends/php/include/classes/api/services/CMaintenance.php
Посмотреть получившуюся заплатку можно при помощи следующей команды:
$ quilt diff
Сохранить получившуюся заплатку в каталог debian/patches можно при помощи следующей команды:
$ quilt refresh
Список всех заплаток можно посмотреть при помощи команды:
$ quilt series
Текущая редактируемая заплата в выведенном списке будет подсвечена.

При необходимости редактировать не последнюю заплатку, можно перемещаться по списку заплат. Для перемещения по списку на предыдущую заплату можно воспользоваться командой:
$ quilt pop
Для применения текущей заплаты и для перехода к следующей по списку можно воспользоваться командой:
$ quilt push
Импорт заплатки из внешнего источинка осуществяется следующим образом:
$ quilt import zabbix3_4_12_permit_edit_maintenances.patch
Сразу после импорта заплатку нужно применить:
$ quilt push
Не стоит продолжать импорт заплаток без применения, т.к. применяться они будут в обратном порядке - послденяя импортированная будет первой применённой. Это сбивает с толку и может вызывать проблемы, если заплатки зависят друг от друга.

Комментариев нет: