Содержание
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
».
You must test your package for whether it installs without problems. The debi(1) command helps you to test installing all the generated binary packages.
$ sudo debi gentoo_0.9.12-1_i386.changes
To prevent installation problems on different systems, you must make sure
that there are no filenames conflicting with other existing packages, using
the Contents-
file
downloaded from the Debian archive. The apt-file command
may be handy for this task. If there are collisions, please take action to
avoid this real problem, whether by renaming the file, moving a common file
to a separate package that multiple packages can depend on, using the
alternatives mechanism (see
update-alternatives(1)) in coordination with the
maintainers of other affected packages, or declaring a
i386
Conflicts
relationship in the
debian/control
file.
Все сценарии сопровождающего (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 с помощью команды 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.25, «Файлы patches/*
»). Вы можете отследить изменения каждого файла
debian/patches/*
также с помощью
interdiff.
Большинство этих файловых проверок могут быть сделаны интуитивно понятным
образом с помощью файлового менеджера типа mc(1),
который позволяет просматривать содержимое не только файлов пакетов
*.deb
, но и таких файлов как
*.udeb
, *.debian.tar.gz
,
*.diff.gz
и *.orig.tar.gz
.
Внимательно следите за лишними ненужными файлами или файлами нулевой длины
как в двоичном пакете, так и в пакете с исходным кодом. Зачастую, мусор не
вычищается должным образом; подправьте ваш файл rules
,
чтобы исправить это.
[75] Вам не потребуется указывать параметр lintian -i
-I --show-overrides
, если вы настроили файл настройки
/etc/devscripts.conf
или
~/.devscripts
, как это было описано в Раздел 6.3, «Команда debuild».