Содержание
Есть несколько стандартных процедур для самостоятельной проверки пакета на наличие ошибок перед его загрузкой в публичный архив, которые вам следует знать.
Лучше проверять пакет на другой машине (не на той, на которой он собирался). Обращайте пристальное внимание на предупреждения и сообщения об ошибках, получаемые в результате описываемых тестов.
Если вы обнаружите новые автоматически сгенерированные файлы заплат
debian-changes-*
в каталоге
debian/patches
после сборки своего неродного пакета
Debian в формате 3.0 (quilt)
, то, вероятнее всего, вы
неумышленно изменили какие-то файлы или это сделал авторский сценарий
сборки. Если это ваша ошибка, исправьте её. Если это сценарий, то исправьте
источник ошибки с помощью dh-autoreconf, как это описано
в Раздел 4.4.3, «Доработка файла rules
», или обойдите её с помощью
source/options
, который описан в Раздел 5.25, «Файл source/options
».
Вы должны убедиться, что пакет устанавливается. Команда debi(1) поможет протестировать установку всех сгенерированных двоичных пакетов.
$ sudo debi gentoo_0.9.12-1_i386.changes
Используя взятый из архива Debian файл
Contents-
, убедитесь,
что в собранном пакете нет файлов, которые существуют в других пакетах, что
может приводить к проблемам установки. Для этой задачи может пригодиться
команда apt-file. Если совпадения есть, то решите эту
проблему либо переименовав файл в своём пакете, либо выделив общий файл в
отдельный пакет, от которого будут зависеть конфликтующие пакеты, или
воспользуйтесь механизмом альтернатив (смотрите
update-alternatives(1)) совместно с другими сопровождающими
других пакетов, либо объявите параметр i386
Conflicts
с нужным
значением в файле debian/control
.
Все сценарии сопровождающего (preinst
,
prerm
, postinst
и
postrm
) сложны в написании, если только для их
автоматической генерации не применялись программы из пакета debhelper
. Поэтому не пользуйтесь этими
сценариями, если вы начинающий сопровождающий (смотрите Раздел 5.19, «Файлы {pre|post}{inst|rm}
»).
Если ваш пакет использует эти нетривиальные сценарии сопровождающего, убедитесь, что не только установка, но и удаление, вычистка и обновление пакета также проходят успешно. Многие ошибки в таких сценариях проявляются при удалении или вычистке. Для проверки используйте команду dpkg:
$ sudo dpkg -r gentoo $ sudo dpkg -P gentoo $ sudo dpkg -i gentoo_версия
-редакция
_i386
.deb
Следует выполнить следующие шаги:
установите предыдущую версию (если необходимо)
обновите пакет с предыдущей версии
откатитесь на предыдущую версию (по желанию)
вычистите пакет
установите новый пакет
удалите его
установите опять
вычистите пакет
Если это ваш первый пакет, то для тестирования вам понадобятся ещё пакеты-пустышки различных версий.
Не забудьте проверить наличие в Debian предыдущей версии программы, которую вы пакетируете. В этом случае пользователи, у которых установлена предыдущая версия, могут захотеть обновить пакет и вам следует убедиться в отсутствии проблем при таком обновлении. Также протестируйте обновления и с этой версии.
Хотя откат к предыдущей версии официально не поддерживается, будет здорово обеспечить такую возможность.
Запустите lintian(1), передав ей параметром файл
.changes
. Команда lintian выполняет
множество тестовых сценариев, проверяющих наличие типичных ошибок
пакетирования [77].
$ 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 с помощью команды debc(1).
$ debc пакет
.changes
Вы можете сравнить содержимое файлов двух пакетов исходного кода 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.26, «Файлы patches/*
»). Вы можете отследить изменения каждого файла
debian/patches/*
также с помощью
interdiff.
Большинство этих файловых проверок могут быть сделаны интуитивно понятным
образом с помощью файлового менеджера типа mc(1),
который позволяет просматривать содержимое не только файлов пакетов
*.deb
, но и таких файлов как
*.udeb
, *.debian.tar.gz
,
*.diff.gz
и *.orig.tar.gz
.
Внимательно следите за лишними ненужными файлами или файлами нулевой длины
как в двоичном пакете, так и в пакете с исходным кодом. Зачастую, мусор не
вычищается должным образом; подправьте ваш файл rules
,
чтобы исправить это.
[77] Вам не потребуется указывать параметр lintian -i
-I --show-overrides
, если вы настроили файл настройки
/etc/devscripts.conf
или
~/.devscripts
, как это было описано в Раздел 6.3, «Команда debuild».