The rewrite of this tutorial document with updated contents and more practical examples is available as Guide for Debian Maintainers. Please use this new tutorial as the primary tutorial document.
Есть несколько стандартных процедур для самостоятельной проверки пакета на наличие ошибок перед его загрузкой в публичный архив, которые вам следует знать.
Лучше проверять пакет на другой машине (не на той, на которой он собирался). Обращайте пристальное внимание на предупреждения и сообщения об ошибках, получаемые в результате описываемых тестов.
Если вы обнаружите новые автоматически сгенерированные файлы заплат
debian-changes-*
в каталоге
debian/patches
после сборки своего неродного пакета
Debian в формате 3.0 (quilt)
, то, вероятнее всего, вы
неумышленно изменили какие-то файлы или это сделал авторский сценарий
сборки. Если это ваша ошибка, исправьте её. Если это сценарий, то исправьте
источник ошибки с помощью dh-autoreconf, как это описано
в Раздел 4.4.3, «Доработка файла rules
», или обойдите её с помощью
source/options
, который описан в Раздел 5.24, «Файл source/options
».
Все сценарии сопровождающего (preinst
,
prerm
, postinst
и
postrm
) сложны в написании, если только для их
автоматической генерации не применялись программы из пакета debhelper
. Поэтому не пользуйтесь этими
сценариями, если вы начинающий сопровождающий (смотрите Раздел 5.18, «Файлы {pre|post}{inst|rm}
»).
Если ваш пакет использует эти нетривиальные сценарии сопровождающего, убедитесь, что не только установка, но и удаление, вычистка и обновление пакета также проходят успешно. Многие ошибки в таких сценариях проявляются при удалении или вычистке. Для проверки используйте команду dpkg:
$ sudo dpkg -r gentoo $ sudo dpkg -P gentoo $ sudo dpkg -i gentoo_версия
-редакция
_i386
.deb
Следует выполнить следующие шаги:
установите предыдущую версию (если необходимо)
обновите пакет с предыдущей версии
откатитесь на предыдущую версию (по желанию)
вычистите пакет
установите новый пакет
удалите его
установите опять
вычистите пакет
Если это ваш первый пакет, то для тестирования вам понадобятся ещё пакеты-пустышки различных версий.
Не забудьте проверить наличие в Debian предыдущей версии программы, которую вы пакетируете. В этом случае пользователи, у которых установлена предыдущая версия, могут захотеть обновить пакет и вам следует убедиться в отсутствии проблем при таком обновлении. Также протестируйте обновления и с этой версии.
Хотя откат к предыдущей версии официально не поддерживается, будет здорово обеспечить такую возможность.
Запустите lintian(1), передав ей параметром файл
.changes
. Команда lintian выполняет
множество тестовых сценариев, проверяющих наличие типичных ошибок
пакетирования [75].
$ lintian -i -I --show-overrides gentoo_0.9.12-1_i386.changes
Разумеется, следует заменить имя файла .changes
на то,
которое было сгенерировано для вашего пакета. В результатах команды
lintian используются следующие метки:
E:
— ошибка; нарушение политики или ошибка пакетирования.
W:
— предупреждение; возможное нарушение политики или
ошибка пакетирования.
I:
— для информации; сведения о некоторых аспектах
пакетирования.
N:
— замечание; уточнение, помогающее при отладке.
O:
— скрытые сообщения; информация, скрываемая на основе
файла lintian-overrides
, но показываемая при указании
параметра --show-overrides
.
Если вы видите предупреждения — исправьте пакет, чтобы их не было или
убедитесь, что это нормально. Если предупреждения излишни — настройте файл
lintian-overrides
, как описано в Раздел 5.14, «Файлы
{
».
пакет
.,source/}lintian-overrides
Заметим, что команда debuild(1) или pdebuild(1) позволяет собрать пакет с помощью dpkg-buildpackage и сразу проверить его lintian.
Вы можете сравнить содержимое файлов двух пакетов исходного кода Debian с помощью команды debdiff(1).
$ debdiffстарый-пакет
.dscновый-пакет
.dsc
Также с помощью команды debdiff(1) вы можете сравнить списки файлов двух двоичных пакетов Debian.
$ debdiffстарый-пакет
.changesновый-пакет
.changes
Это полезно для определения того, что изменилось в пакетах исходного кода, и что не произошло никаких непреднамеренных изменений при обновлении двоичных пакетов, например неправильного перемещения или удаления файлов.
Команда interdiff(1) позволяет сравнить два файла
diff.gz
. Это полезно для проверки отсутствия сделанных
сопровождающим нечаянных правок исходного кода при обновлении пакетов в
старом формате 1.0
.
$ interdiff -zстарый-пакет
.diff.gzновый-пакет
.diff.gz
В новой версии формата пакетов с исходным кодом 3.0
изменения хранятся в нескольких файлах заплат (описано в Раздел 5.25, «Файлы patches/*
»). Вы можете отследить изменения каждого файла
debian/patches/*
также с помощью
interdiff.
[75] Вам не потребуется указывать параметр lintian -i
-I --show-overrides
, если вы настроили файл настройки
/etc/devscripts.conf
или
~/.devscripts
, как это было описано в Раздел 6.3, «Команда debuild».