/usr/share/doc/maint-guide-ru/html/checkit.ru.html is in maint-guide-ru 1.2.40.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Глава 7. Проверка пакета на наличие ошибок</title>
<link rel="stylesheet" type="text/css" href="debian.css"/>
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<link rel="home" href="index.ru.html" title="Руководство начинающего разработчика Debian"/>
<link rel="up" href="index.ru.html" title="Руководство начинающего разработчика Debian"/>
<link rel="prev" href="build.ru.html" title="Глава 6. Сборка пакета"/>
<link rel="next" href="update.ru.html" title="Глава 8. Обновление пакета"/>
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Глава 7. Проверка пакета на наличие ошибок</th>
</tr>
<tr>
<td align="left"><a accesskey="p" href="build.ru.html"><img src="images/prev.png" alt="Пред."/></a> </td>
<th width="60%" align="center"> </th>
<td align="right"> <a accesskey="n" href="update.ru.html"><img src="images/next.png" alt="След."/></a></td>
</tr>
</table>
<hr/>
</div>
<div class="chapter">
<div class="titlepage">
<div>
<div>
<h1 class="title"><a id="checkit"/>Глава 7. Проверка пакета на наличие ошибок</h1>
</div>
</div>
</div>
<div class="toc">
<p>
<strong>Содержание</strong>
</p>
<dl class="toc">
<dt>
<span class="section">
<a href="checkit.ru.html#inadvent">7.1. Подозрительные изменения</a>
</span>
</dt>
<dt>
<span class="section">
<a href="checkit.ru.html#pinstall">7.2. Проверка установки пакета</a>
</span>
</dt>
<dt>
<span class="section">
<a href="checkit.ru.html#pmaintscripts">7.3. Проверка сценариев сопровождающего пакета</a>
</span>
</dt>
<dt>
<span class="section">
<a href="checkit.ru.html#lintians">7.4. Использование <code class="systemitem">lintian</code></a>
</span>
</dt>
<dt>
<span class="section">
<a href="checkit.ru.html#debc">7.5. Команда <span class="command"><strong>debc</strong></span></a>
</span>
</dt>
<dt>
<span class="section">
<a href="checkit.ru.html#debdiff">7.6. Команда <span class="command"><strong>debdiff</strong></span></a>
</span>
</dt>
<dt>
<span class="section">
<a href="checkit.ru.html#interdiff">7.7. Команда <span class="command"><strong>interdiff</strong></span></a>
</span>
</dt>
<dt>
<span class="section">
<a href="checkit.ru.html#mc">7.8. Команда <span class="command"><strong>mc</strong></span></a>
</span>
</dt>
</dl>
</div>
<p>
Есть несколько стандартных процедур для самостоятельной проверки пакета на
наличие ошибок перед его загрузкой в публичный архив, которые вам следует
знать.
</p>
<p>
Лучше проверять пакет на другой машине (не на той, на которой он
собирался). Обращайте пристальное внимание на предупреждения и сообщения об
ошибках, получаемые в результате описываемых тестов.
</p>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="inadvent"/>7.1. Подозрительные изменения</h2>
</div>
</div>
</div>
<p>
Если вы обнаружите новые автоматически сгенерированные файлы заплат
<code class="filename">debian-changes-*</code> в каталоге
<code class="filename">debian/patches</code> после сборки своего неродного пакета
Debian в формате <code class="literal">3.0 (quilt)</code>, то, вероятнее всего, вы
неумышленно изменили какие-то файлы или это сделал авторский сценарий
сборки. Если это ваша ошибка, исправьте её. Если это сценарий, то исправьте
источник ошибки с помощью <span class="command"><strong>dh-autoreconf</strong></span>, как это описано
в <a class="xref" href="dreq.ru.html#customrules" title="4.4.3. Доработка файла rules">Раздел 4.4.3, «Доработка файла <code class="filename">rules</code>»</a>, или обойдите её с помощью
<code class="filename">source/options</code>, который описан в <a class="xref" href="dother.ru.html#sourceopt" title="5.24. Файл source/options">Раздел 5.24, «Файл <code class="filename">source/options</code>»</a>.
</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="pinstall"/>7.2. Проверка установки пакета</h2>
</div>
</div>
</div>
<p>
You must test your package for whether it installs without problems. The
<span class="citerefentry"><span class="refentrytitle">debi</span>(1)</span> command helps you to test installing all the generated
binary packages.
</p>
<pre class="screen">
$ sudo debi gentoo_0.9.12-1_i386.changes
</pre>
<p>
To prevent installation problems on different systems, you must make sure
that there are no filenames conflicting with other existing packages, using
the <code class="filename">Contents-<em class="replaceable"><code>i386</code></em></code> file
downloaded from the Debian archive. The <span class="command"><strong>apt-file</strong></span> 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
<span class="citerefentry"><span class="refentrytitle">update-alternatives</span>(1)</span>) in coordination with the
maintainers of other affected packages, or declaring a
<code class="literal">Conflicts</code> relationship in the
<code class="filename">debian/control</code> file.
</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="pmaintscripts"/>7.3. Проверка сценариев сопровождающего пакета</h2>
</div>
</div>
</div>
<p>
Все сценарии сопровождающего (<code class="filename">preinst</code>,
<code class="filename">prerm</code>, <code class="filename">postinst</code> и
<code class="filename">postrm</code>) сложны в написании, если только для их
автоматической генерации не применялись программы из пакета <code class="systemitem">debhelper</code>. Поэтому не пользуйтесь этими
сценариями, если вы начинающий сопровождающий (смотрите <a class="xref" href="dother.ru.html#maintscripts" title="5.18. Файлы {pre|post}{inst|rm}">Раздел 5.18, «Файлы <code class="filename">{pre|post}{inst|rm}</code>»</a>).
</p>
<p>
Если ваш пакет использует эти нетривиальные сценарии сопровождающего,
убедитесь, что не только установка, но и удаление, вычистка и обновление
пакета также проходят успешно. Многие ошибки в таких сценариях проявляются
при удалении или вычистке. Для проверки используйте команду
<span class="command"><strong>dpkg</strong></span>:
</p>
<pre class="screen">
$ sudo dpkg -r gentoo
$ sudo dpkg -P gentoo
$ sudo dpkg -i gentoo_<em class="replaceable"><code>версия</code></em>-<em class="replaceable"><code>редакция</code></em>_<em class="replaceable"><code>i386</code></em>.deb
</pre>
<p>
Следует выполнить следующие шаги:
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
установите предыдущую версию (если необходимо)
</p>
</li>
<li class="listitem">
<p>
обновите пакет с предыдущей версии
</p>
</li>
<li class="listitem">
<p>
откатитесь на предыдущую версию (по желанию)
</p>
</li>
<li class="listitem">
<p>
вычистите пакет
</p>
</li>
<li class="listitem">
<p>
установите новый пакет
</p>
</li>
<li class="listitem">
<p>
удалите его
</p>
</li>
<li class="listitem">
<p>
установите опять
</p>
</li>
<li class="listitem">
<p>
вычистите пакет
</p>
</li>
</ul>
</div>
<p>
Если это ваш первый пакет, то для тестирования вам понадобятся ещё
пакеты-пустышки различных версий.
</p>
<p>
Не забудьте проверить наличие в Debian предыдущей версии программы, которую
вы пакетируете. В этом случае пользователи, у которых установлена предыдущая
версия, могут захотеть обновить пакет и вам следует убедиться в отсутствии
проблем при таком обновлении. Также протестируйте обновления и с этой
версии.
</p>
<p>
Хотя откат к предыдущей версии официально не поддерживается, будет здорово
обеспечить такую возможность.
</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="lintians"/>7.4. Использование <code class="systemitem">lintian</code></h2>
</div>
</div>
</div>
<p>
Запустите <span class="citerefentry"><span class="refentrytitle">lintian</span>(1)</span>, передав ей параметром файл
<code class="filename">.changes</code>. Команда <span class="command"><strong>lintian</strong></span> выполняет
множество тестовых сценариев, проверяющих наличие типичных ошибок
пакетирования <a href="#ftn.idm3201" class="footnote" id="idm3201"><sup class="footnote">[76]</sup></a>.
</p>
<pre class="screen">
$ lintian -i -I --show-overrides gentoo_0.9.12-1_i386.changes
</pre>
<p>
Разумеется, следует заменить имя файла <code class="filename">.changes</code> на то,
которое было сгенерировано для вашего пакета. В результатах команды
<span class="command"><strong>lintian</strong></span> используются следующие метки:
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
<code class="literal">E:</code> — ошибка; нарушение политики или ошибка пакетирования.
</p>
</li>
<li class="listitem">
<p>
<code class="literal">W:</code> — предупреждение; возможное нарушение политики или
ошибка пакетирования.
</p>
</li>
<li class="listitem">
<p>
<code class="literal">I:</code> — для информации; сведения о некоторых аспектах
пакетирования.
</p>
</li>
<li class="listitem">
<p>
<code class="literal">N:</code> — замечание; уточнение, помогающее при отладке.
</p>
</li>
<li class="listitem">
<p>
<code class="literal">O:</code> — скрытые сообщения; информация, скрываемая на основе
файла <code class="filename">lintian-overrides</code>, но показываемая при указании
параметра <code class="literal">--show-overrides</code>.
</p>
</li>
</ul>
</div>
<p>
Если вы видите предупреждения — исправьте пакет, чтобы их не было или
убедитесь, что это нормально. Если предупреждения излишни — настройте файл
<code class="filename">lintian-overrides</code>, как описано в <a class="xref" href="dother.ru.html#lintian" title="5.14. Файлы {пакет.,source/}lintian-overrides">Раздел 5.14, «Файлы
<code class="filename">{<em class="replaceable"><code>пакет</code></em>.,source/}lintian-overrides</code>»</a>.
</p>
<p>
Заметим, что команда <span class="citerefentry"><span class="refentrytitle">debuild</span>(1)</span> или <span class="citerefentry"><span class="refentrytitle">pdebuild</span>(1)</span> позволяет собрать пакет с помощью
<span class="command"><strong>dpkg-buildpackage</strong></span> и сразу проверить его
<span class="command"><strong>lintian</strong></span>.
</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="debc"/>7.5. Команда <span class="command"><strong>debc</strong></span></h2>
</div>
</div>
</div>
<p>
Вы можете просмотреть список файлов в двоичном пакете Debian с помощью
команды <span class="citerefentry"><span class="refentrytitle">debc</span>(1)</span>.
</p>
<pre class="screen">
$ debc <em class="replaceable"><code>пакет</code></em>.changes
</pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="debdiff"/>7.6. Команда <span class="command"><strong>debdiff</strong></span></h2>
</div>
</div>
</div>
<p>
Вы можете сравнить содержимое файлов двух пакетов исходного кода Debian с
помощью команды <span class="citerefentry"><span class="refentrytitle">debdiff</span>(1)</span>.
</p>
<pre class="screen">
$ debdiff <em class="replaceable"><code>старый-пакет</code></em>.dsc <em class="replaceable"><code>новый-пакет</code></em>.dsc
</pre>
<p>
Также с помощью команды <span class="citerefentry"><span class="refentrytitle">debdiff</span>(1)</span> вы можете сравнить списки файлов двух двоичных пакетов
Debian.
</p>
<pre class="screen">
$ debdiff <em class="replaceable"><code>старый-пакет</code></em>.changes <em class="replaceable"><code>новый-пакет</code></em>.changes
</pre>
<p>
Это полезно для определения того, что изменилось в пакетах исходного кода, и
что не произошло никаких непреднамеренных изменений при обновлении двоичных
пакетов, например неправильного перемещения или удаления файлов.
</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="interdiff"/>7.7. Команда <span class="command"><strong>interdiff</strong></span></h2>
</div>
</div>
</div>
<p>
Команда <span class="citerefentry"><span class="refentrytitle">interdiff</span>(1)</span> позволяет сравнить два файла
<code class="filename">diff.gz</code>. Это полезно для проверки отсутствия сделанных
сопровождающим нечаянных правок исходного кода при обновлении пакетов в
старом формате <code class="literal">1.0</code>.
</p>
<pre class="screen">
$ interdiff -z <em class="replaceable"><code>старый-пакет</code></em>.diff.gz <em class="replaceable"><code>новый-пакет</code></em>.diff.gz
</pre>
<p>
В новой версии формата пакетов с исходным кодом <code class="literal">3.0</code>
изменения хранятся в нескольких файлах заплат (описано в <a class="xref" href="dother.ru.html#patches" title="5.25. Файлы patches/*">Раздел 5.25, «Файлы <code class="filename">patches/*</code>»</a>). Вы можете отследить изменения каждого файла
<code class="filename">debian/patches/*</code> также с помощью
<span class="command"><strong>interdiff</strong></span>.
</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="mc"/>7.8. Команда <span class="command"><strong>mc</strong></span></h2>
</div>
</div>
</div>
<p>
Большинство этих файловых проверок могут быть сделаны интуитивно понятным
образом с помощью файлового менеджера типа <span class="citerefentry"><span class="refentrytitle">mc</span>(1)</span>,
который позволяет просматривать содержимое не только файлов пакетов
<code class="filename">*.deb</code>, но и таких файлов как
<code class="filename">*.udeb</code>, <code class="filename">*.debian.tar.gz</code>,
<code class="filename">*.diff.gz</code> и <code class="filename">*.orig.tar.gz</code>.
</p>
<p>
Внимательно следите за лишними ненужными файлами или файлами нулевой длины
как в двоичном пакете, так и в пакете с исходным кодом. Зачастую, мусор не
вычищается должным образом; подправьте ваш файл <code class="filename">rules</code>,
чтобы исправить это.
</p>
</div>
<div class="footnotes">
<br/>
<hr/>
<div id="ftn.idm3201" class="footnote">
<p><a href="#idm3201" class="para"><sup class="para">[76] </sup></a> Вам не потребуется указывать параметр <span class="command"><strong>lintian</strong></span> <code class="literal">-i
-I --show-overrides</code>, если вы настроили файл настройки
<code class="filename">/etc/devscripts.conf</code> или
<code class="filename">~/.devscripts</code>, как это было описано в <a class="xref" href="build.ru.html#debuild" title="6.3. Команда debuild">Раздел 6.3, «Команда <span class="command"><strong>debuild</strong></span>»</a>.
</p>
</div>
</div>
</div>
<div class="navfooter">
<hr/>
<table width="100%" summary="Navigation footer">
<tr>
<td align="left"><a accesskey="p" href="build.ru.html"><img src="images/prev.png" alt="Пред."/></a> </td>
<td align="center"> </td>
<td align="right"> <a accesskey="n" href="update.ru.html"><img src="images/next.png" alt="След."/></a></td>
</tr>
<tr>
<td align="left" valign="top">Глава 6. Сборка пакета </td>
<td align="center">
<a accesskey="h" href="index.ru.html">
<img src="images/home.png" alt="Начало"/>
</a>
</td>
<td align="right" valign="top"> Глава 8. Обновление пакета</td>
</tr>
</table>
</div>
</body>
</html>
|