6. Корекции за пакети¶

Понякога поддържащите пакети на Ubuntu трябва да променят изходния код нагоре, за да работят правилно в Ubuntu. Примерите включват корекции за upstreams, които все още не са достигнали до версията на изданието, или промени в системите за изграждане на upstream, които са необходими само за изграждането им в Ubuntu. Ще модифицираме изходния код на upstream директно, но този метод прави по-трудно премахването на корекции по-късно, когато upstream вече ги е приложил, както и затруднява извличането на промените, за да ги изпрати към проекта нагоре. Вместо това ние ще съхраняваме тези промени като отделни кръпки под формата на разл. файлове.

Има различни начини за работа с пачове за пакети на Debian. За щастие ще се съсредоточим върху една система, Quilt, която в момента се използва от повечето пакети.

Да вземем за пример пакета kamoso в Trusty:

Пачовете се съхраняват в debian/patches. Има една корекция за този пакет kubuntu_01_fix_qmax_on_armel.diff за коригиране на грешка при компилиране на ARM платформа. На тази корекция е дадено име, описващо какво прави, номер на корекцията (за да се избегне объркване, ако две корекции имат едно и също име) и в този случай екипът на Kubuntu е добавил свой собствен префикс, за да покаже, че корекцията идва от тях, а не от Debian.

Редът, в който се прилагат корекциите, се съхранява в debian/patches/series.

6.1. Кръпка с Quilt¶

Преди да работите с Quilt, трябва да кажете на тази система къде да търси пачове. Добави към

И източникът на файл за прилагане на новото експортиране:

По подразбиране всички корекции вече са приложени с UDD екстракти или пакети за изтегляне. Можете да го проверите с:

Ако искате да премахнете кръпка, трябва да изскочите:

И за да приложите корекция, използвайте push:

6.2. Добавяне на нова корекция¶

За да добавите нова корекция, трябва да кажете на Quilt да създаде нова корекция, да му кажете кои файлове трябва да промени тази корекция, да редактирате файловете и след това да актуализирате корекцията:

Стъпката за добавяне на quilt е важна: ако забравите да я направите, файловете няма да бъдат включени в корекцията.

Сега промените ще бъдат в debian/patches/kubuntu_02_program_description.diff и информацията за новата корекция ще бъде добавена към файла на серията. Трябва да добавите нов файл към изходните файлове за пакета:

Quilt съдържа своите метаданни в директорията .pc/, така че сега трябва да го добавите и към пакета. Това трябва да се подобри в бъдеще.

6.3. Заглавки на корекции¶

Описание на това, което прави корекцията. Има същия формат като полето Описание в debian/control: първият ред съдържа кратко описание, започващо с малка буква, останалите редове съдържат по-дълго описание с отстъп с интервал.

Откъде идва тази корекция (напр. „нагоре по веригата“), ако заглавката на автора липсва.

Връзка към информация за грешката в Launchpad, за предпочитане в кратка форма (като https://bugs.launchpad.net/bugs/XXXXXXX). Ако има също доклади за грешки в инструментите за проследяване на грешки нагоре или в Debian, добавете заглавките Bug или Bug-Debian.

Дали пластирът е бил избутан нагоре по течението. Стойности: "да", "не" или "не е необходимо".

Последна актуализация:

Датата на последната редакция (във формата „ГГГГ-ММ-ДД“).

6.4. Надграждане до нови версии от Upstream¶

За да надстроите до най-новата версия, можете да използвате командата bzr merge-upstream:

Изпълнението на тази команда ще върне всички корекции, тъй като те може да станат остарели. Може да се наложи те да бъдат актуализирани, за да съответстват на новия източник нагоре по веригата, или може да се наложи да бъдат премахнати всички заедно. За улесняване на проверкатапроблеми, прилагайте кръпки един по един.

Ако дадена корекция казва, че може да бъде приложена обратно, тогава корекцията вече е била приложена от upstream, така че можем да премахнем тази корекция:

Добра идея е да направите опресняване, това ще актуализира корекцията с промени в изходния код нагоре:

След това ангажирайте както обикновено:

6.5. Създаване на пакет с помощта на Quilt¶

Съвременните пакети използват Quilt по подразбиране, това е вградено във формата на изходните файлове на пакета. Проверете дали debian/source/format е 3.0 (quilt).

По-старите пакети, използващи формат 1.0, трябва изрично да използват Quilt, обикновено чрез включване на makefile в debian/rules.

6.6. Конфигуриране на Quilt¶

Можете да използвате файла

/.quiltrc за конфигуриране на quilt. Ето няколко опции, които могат да бъдат полезни при използване на quilt с пакети на Debian:

6.7. Други системи за управление на корекции¶

Други системи за корекции, използвани в пакетите, включват dpatch и cdbs simple-patchsys, които работят подобно на Quilt - корекциите се съхраняват в debian/patches, но изискват различни команди за прилагането, отмяната или създаването им. Можете да разберете коя система за корекции използва даден пакет с командата what-patch`` (в пакета ``ubuntu-dev-tools). Можете да използвате корекцията за редактиране, показана в предишните глави, като надежден начин за работа с всички системи.

В по-старите пакети промените ще бъдат включени директно в изходния код и ще се съхраняват в изходния файл diff.gz. Това прави по-трудно надграждането до по-нови версии нагоре или най-добре е да се избягват разликите между корекциите.

Не променяйте системата за корекции, без да я обсъдите с поддържащия Debian или съответния екип на Ubuntu.Ако няма съществуваща система за корекции, можете да добавите Quilt.