/usr/share/doc/ubuntu-packaging-guide-html-ru/debian-dir-overview.html is in ubuntu-packaging-guide-html-ru 0.3.9.
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 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>2. Общий обзор каталога debian/ — Ubuntu Packaging Guide</title>
<link rel="shortcut icon" href="./_static/images/favicon.ico" type="image/x-icon" />
<link rel="stylesheet" href="./_static/reset.css" type="text/css" />
<link rel="stylesheet" href="./_static/960.css" type="text/css" />
<link rel="stylesheet" href="./_static/base.css" type="text/css" />
<link rel="stylesheet" href="./_static/home.css" type="text/css" />
<link rel="stylesheet" href="./_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="./_static/guide.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '0.3.9',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="./_static/jquery.js"></script>
<script type="text/javascript" src="./_static/underscore.js"></script>
<script type="text/javascript" src="./_static/doctools.js"></script>
<script type="text/javascript" src="./_static/translations.js"></script>
<script type="text/javascript" src="./_static/main.js"></script>
<link rel="search" title="Поиск" href="./search.html" />
<link rel="top" title="Ubuntu Packaging Guide" href="./index.html" />
<link rel="next" title="3. autopkgtest: Автоматическое тестирование пакетов" href="auto-pkg-test.html" />
<link rel="prev" title="1. Коммуникация при Разработке в Ubuntu" href="communication.html" />
</head>
<body class="home">
<a name="top"></a>
<div class="header-navigation">
<div>
<nav role="navigation">
<ul>
<li class="page_item current_page_item"><a title="Содержание" href="index.html">Содержание</a>
<li>
<form id="form-search" method="get" action="search.html">
<fieldset>
<input id="input-search" type="text" name="q" value="Search" />
</fieldset>
</form>
</li>
</ul>
</nav>
<a class="logo-ubuntu" href="http://packaging.ubuntu.com/">
<img src="./_static/images/logo-ubuntu.png" width="119" height="27" alt="Ubuntu logo" />
</a>
<a href="http://packaging.ubuntu.com/"><h2>Packaging Guide</h2></a>
</div>
</div>
<div class="header-content">
<div class="clearfix">
<div class="header-navigation-secondary">
<div>
<nav role="navigation">
<ul class="clearfix">
<li class="page_item"><a style="margin-right: 10px"
href="auto-pkg-test.html" title="3. autopkgtest: Автоматическое тестирование пакетов"
accesskey="N">вперёд</a></li>
<li class="page_item"><a
href="communication.html" title="1. Коммуникация при Разработке в Ubuntu"
accesskey="P">назад</a></li>
<li class="page_item"><a class="sub-nav-item" href="index.html">Ubuntu Packaging Guide »</a></li>
</ul>
</nav>
</div>
</div>
</div>
</div>
<div id="content" class="body container_12">
<div class="grid_12">
<!--<section id="main-section">-->
<div class="grid_9 alpha">
<div class="section" id="basic-overview-of-the-debian-directory">
<h1>2. Общий обзор каталога <code class="docutils literal"><span class="pre">debian/</span></code><a class="headerlink" href="#basic-overview-of-the-debian-directory" title="Ссылка на этот заголовок">¶</a></h1>
<p>Эта статья даёт краткие пояснения к различным файлам, важным для создания пакетов Ubuntu, которые содержатся в каталоге <code class="docutils literal"><span class="pre">debian/</span></code>. Самыми важными из них являются <code class="docutils literal"><span class="pre">changelog</span></code>, <code class="docutils literal"><span class="pre">control</span></code>, <code class="docutils literal"><span class="pre">copyright</span></code>, and <code class="docutils literal"><span class="pre">rules</span></code>. Они требуются для всех пакетов. Многие дополнительные файлы в <code class="docutils literal"><span class="pre">debian/</span></code> могут использоваться для настройки и изменения поведения пакета. Некоторые из этих файлов обсуждаются в этой статье, но это далеко не полный список.</p>
<div class="section" id="the-changelog">
<h2>2.1. Файл changelog<a class="headerlink" href="#the-changelog" title="Ссылка на этот заголовок">¶</a></h2>
<p>Этот файл, как следует из его названия — это список изменений, внесённых в каждую версию. Он имеет особый формат, который показывает имя пакета, версию, дистрибутив, изменения, и кто вносил изменения в данное время. Если у вас есть ключ GPG (смотрите: <a class="reference internal" href="getting-set-up.html"><span class="doc">Подготовка</span></a>), убедитесь, что вы используете в <code class="docutils literal"><span class="pre">changelog</span></code> те же имя и адрес электронной почты, что и в вашем ключе. Ниже приведен шаблон <code class="docutils literal"><span class="pre">changelog</span></code>:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">package</span> <span class="p">(</span><span class="n">version</span><span class="p">)</span> <span class="n">distribution</span><span class="p">;</span> <span class="n">urgency</span><span class="o">=</span><span class="n">urgency</span>
<span class="o">*</span> <span class="n">change</span> <span class="n">details</span>
<span class="o">-</span> <span class="n">more</span> <span class="n">change</span> <span class="n">details</span>
<span class="o">*</span> <span class="n">even</span> <span class="n">more</span> <span class="n">change</span> <span class="n">details</span>
<span class="o">--</span> <span class="n">maintainer</span> <span class="n">name</span> <span class="o"><</span><span class="n">email</span> <span class="n">address</span><span class="o">></span><span class="p">[</span><span class="n">two</span> <span class="n">spaces</span><span class="p">]</span> <span class="n">date</span>
</pre></div>
</div>
<p>Формат (особенно даты) важен. Дата должна быть в формате <span class="target" id="index-2"></span><a class="rfc reference external" href="https://tools.ietf.org/html/rfc5322.html"><strong>RFC 5322</strong></a>, который можно увидеть при выполнении команды <code class="docutils literal"><span class="pre">date</span> <span class="pre">-R</span></code>. Для удобства, можно использовать для редактирования changelog команду <code class="docutils literal"><span class="pre">dch</span></code>. Она обновит дату автоматически.</p>
<p>Пункты с незначительными изменениями отмечаются дефисом «-», в то время как в важных пунктах используется звездочка «*».</p>
<p>Если вы создаёте пакет «с нуля», <code class="docutils literal"><span class="pre">dch</span> <span class="pre">--create</span></code> (<code class="docutils literal"><span class="pre">dch</span></code> находится в пакете <code class="docutils literal"><span class="pre">devscripts</span></code>) создаст для вас стандартный файл <code class="docutils literal"><span class="pre">debian/changelog</span></code>.</p>
<p>Вот пример файла <code class="docutils literal"><span class="pre">changelog</span></code> для hello:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">hello</span> <span class="p">(</span><span class="mf">2.8</span><span class="o">-</span><span class="mi">0</span><span class="n">ubuntu1</span><span class="p">)</span> <span class="n">trusty</span><span class="p">;</span> <span class="n">urgency</span><span class="o">=</span><span class="n">low</span>
<span class="o">*</span> <span class="n">New</span> <span class="n">upstream</span> <span class="n">release</span> <span class="k">with</span> <span class="n">lots</span> <span class="n">of</span> <span class="n">bug</span> <span class="n">fixes</span> <span class="ow">and</span> <span class="n">feature</span> <span class="n">improvements</span><span class="o">.</span>
<span class="o">--</span> <span class="n">Jane</span> <span class="n">Doe</span> <span class="o"><</span><span class="n">packager</span><span class="nd">@example</span><span class="o">.</span><span class="n">com</span><span class="o">></span> <span class="n">Thu</span><span class="p">,</span> <span class="mi">21</span> <span class="n">Oct</span> <span class="mi">2013</span> <span class="mi">11</span><span class="p">:</span><span class="mi">12</span><span class="p">:</span><span class="mi">00</span> <span class="o">-</span><span class="mi">0400</span>
</pre></div>
</div>
<p>Обратите внимание, что версия имеет <code class="docutils literal"><span class="pre">-0ubuntu1</span></code> добавленный к нему, это - distro версия, используемая так, чтобы упаковка могла быть обновлена (чтобы исправить ошибки, например) с новыми закачками в той же исходной версии выпуска.</p>
<p>Ubuntu и Debian используют немного различающиеся схемы нумерации версий пакетов, чтобы избежать конфликта пакетов с одной и той же исходной версией. Если пакет Debian был изменён в Ubuntu, к концу Debian-версии добавляется <code class="docutils literal"><span class="pre">ubuntuX</span></code> (где <code class="docutils literal"><span class="pre">X</span></code> — номер редакции в Ubuntu). Таким образом, если пакет Debian hello <code class="docutils literal"><span class="pre">2.6-1</span></code> был изменён в Ubuntu, номер версии будет <code class="docutils literal"><span class="pre">2.6-1ubuntu1</span></code>. Если пакет приложения в Debian не существует, то редакция Debian равна <code class="docutils literal"><span class="pre">0</span></code> (например, <code class="docutils literal"><span class="pre">2.6-0ubuntu1</span></code>).</p>
<p>Более подробную информацию можно найти на странице <a class="reference external" href="http://www.debian.org/doc/debian-policy/ch-source.html#s-dpkgchangelog">changelog (Глава 4.4)</a> документа Debian Policy Manual.</p>
</div>
<div class="section" id="the-control-file">
<h2>2.2. Файл control<a class="headerlink" href="#the-control-file" title="Ссылка на этот заголовок">¶</a></h2>
<p>Файл <code class="docutils literal"><span class="pre">control</span></code> содержит информацию, которую использует менеджер пакетов (такой, как <code class="docutils literal"><span class="pre">apt-get</span></code>, <code class="docutils literal"><span class="pre">synaptic</span></code> или <code class="docutils literal"><span class="pre">adept</span></code>), сборочные зависимости, информацию мэйнтейнера и многое другое.</p>
<p>Для пакета Ubuntu <code class="docutils literal"><span class="pre">hello</span></code> файл <code class="docutils literal"><span class="pre">control</span></code> выглядит следующим образом:</p>
<div class="highlight-control"><div class="highlight"><pre><span></span><span class="k">Source</span><span class="w">: </span><span class="s">hello</span>
<span class="k">Section</span><span class="w">: </span><span class="s">devel</span>
<span class="k">Priority</span><span class="w">: </span><span class="s">optional</span>
<span class="k">Maintainer</span>: Ubuntu Developers <span class="gs"><ubuntu-devel-discuss@lists.ubuntu.com></span>
<span class="k">XSBC-Original-Maintainer</span><span class="w">: </span><span class="s">Jane Doe <packager@example.com></span>
<span class="k">Standards-Version</span><span class="w">: </span><span class="s">3.9.5</span>
<span class="k">Build-Depends</span>: <span class="nf">debhelper</span> (<span class="o">>=</span> <span class="m">7</span>)
<span class="k">Vcs-Bzr</span><span class="w">: </span><span class="s">lp:ubuntu/hello</span>
<span class="k">Homepage</span><span class="w">: </span><span class="s">http://www.gnu.org/software/hello/</span>
<span class="k">Package</span><span class="w">: </span><span class="s">hello</span>
<span class="k">Architecture</span><span class="w">: </span><span class="s">any</span>
<span class="k">Depends</span>: <span class="o">$</span>{<span class="ni">shlibs:Depends</span>}
<span class="k">Description</span><span class="gs">: The classic greeting, and a good example</span>
The GNU hello program produces a familiar, friendly greeting. It
allows non-programmers to use a classic computer science tool which
would otherwise be unavailable to them. Seriously, though: this is
an example of how to do a Debian package. It is the Debian version of
the GNU Project's `hello world' program (which is itself an example
for the GNU Project).
</pre></div>
</div>
<p>Первый абзац описывает исходный пакет, включая список пакетов, требуемых для сборки данного пакета из исходного кода, в поле <code class="docutils literal"><span class="pre">Build-Depends</span></code>. Он также содержит некоторую метаинформацию, такую как имя мэйнтейнера, версию Debian Policy, с которой компилируется пакет, местоположение репозитория управления версиями и домашнюю страницу апстрима.</p>
<p>Заметьте, что в Ubuntu мы указываем в поле <code class="docutils literal"><span class="pre">Maintainer</span></code> общий адрес, так как любой человек может изменить любой пакет (в отличие от Debian, где правом изменения пакетов обладают лишь отдельные люди или команда). Пакеты в Ubuntu, как правило, должны в поле <code class="docutils literal"><span class="pre">Maintainer</span></code> содержать <code class="docutils literal"><span class="pre">Ubuntu</span> <span class="pre">Developers</span> <span class="pre"><ubuntu-devel-discuss@lists.ubuntu.com></span></code>. Если поле Maintainer изменено, старое значение должно быть сохранено в поле <code class="docutils literal"><span class="pre">XSBC-Original-Maintainer</span></code>. Это можно сделать автоматически сценарием <code class="docutils literal"><span class="pre">update-maintainer</span></code> из пакета <code class="docutils literal"><span class="pre">ubuntu-dev-tools</span></code>. Для дальнейшей информации смотрите <a class="reference external" href="https://wiki.ubuntu.com/DebianMaintainerField">Debian Maintainer Field spec</a> в Ubuntu wiki.</p>
<p>Каждый дополнительный абзац описывает бинарный пакет, который будет создан.</p>
<p>Более подробную информацию можно найти на странице <a class="reference external" href="http://www.debian.org/doc/debian-policy/ch-controlfields.html">секции control-файла (Глава 5)</a> документа Debian Policy Manual.</p>
</div>
<div class="section" id="the-copyright-file">
<h2>2.3. Файл copyright<a class="headerlink" href="#the-copyright-file" title="Ссылка на этот заголовок">¶</a></h2>
<p>Файл содержит информацию о копирайтах исходных кодов и самого пакета. Ubuntu и <a class="reference external" href="http://www.debian.org/doc/debian-policy/ch-docs.html#s-copyrightfile">Debian Policy (Глава 12.5)</a> требуют, чтобы каждый пакет устанавливал неизменную копию копирайта и информации по лицензированию в папку <code class="docutils literal"><span class="pre">/usr/share/doc/$(имя_пакета)/copyright</span></code></p>
<p>Как правило, информацию об авторских правах можно найти в файле <code class="docutils literal"><span class="pre">COPYING</span></code> в каталоге с исходным кодом программы. Этот файл должен включать такую информацию, как имена автора и упаковщика, URL, из которого получен источник, строку со значком копирайта с указанием года и владельца авторских прав, а также сам текст авторского права. Шаблон для примера:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span>Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: Hello
Source: ftp://ftp.example.com/pub/games
Files: *
Copyright: Copyright 1998 John Doe <jdoe@example.com>
License: GPL-2+
Files: debian/*
Copyright: Copyright 1998 Jane Doe <packager@example.com>
License: GPL-2+
License: GPL-2+
This program is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later
version.
.
This program is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the GNU General Public License for more
details.
.
You should have received a copy of the GNU General Public
License along with this package; if not, write to the Free
Software Foundation, Inc., 51 Franklin St, Fifth Floor,
Boston, MA 02110-1301 USA
.
On Debian systems, the full text of the GNU General Public
License version 2 can be found in the file
`/usr/share/common-licenses/GPL-2'.
</pre></div>
</div>
<p>Пример испольует <a class="reference external" href="http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/">машино-понятный формат debian/copyright</a>, и авторам пакетов также рекомендуется следовать этому формату.</p>
</div>
<div class="section" id="the-rules-file">
<h2>2.4. Файл rules<a class="headerlink" href="#the-rules-file" title="Ссылка на этот заголовок">¶</a></h2>
<p>Последний файл, который мы рассмотрим, это <code class="docutils literal"><span class="pre">rules</span></code>. Он выполняет всю работу по сборке нашего пакета. Это Makefile, в котором есть функции компиляции программы, её установки и создания <code class="docutils literal"><span class="pre">.deb</span></code>-пакета из установленных файлов. В нём есть также функция очистки файлов сборки, которая удаляет всё, кроме собственно пакета исходного кода.</p>
<p>Вот упрощённый пример файла rules, созданного <code class="docutils literal"><span class="pre">dh_make</span></code> (который можно найти в пакете <code class="docutils literal"><span class="pre">dh-make</span></code>):</p>
<div class="highlight-makefile"><div class="highlight"><pre><span></span><span class="c">#!/usr/bin/make -f</span>
<span class="c"># -*- makefile -*-</span>
<span class="c"># Uncomment this to turn on verbose mode.</span>
<span class="c">#export DH_VERBOSE=1</span>
<span class="nf">%</span><span class="o">:</span>
dh <span class="nv">$@</span>
</pre></div>
</div>
<p>Давайте рассмотрим этот файл внимательнее. На каждом этапе сборки <code class="docutils literal"><span class="pre">debian/rules</span></code> вызывается с аргументом, который передаётся <code class="docutils literal"><span class="pre">/usr/bin/dh</span></code>, который, в свою очередь, вызывает необходимые команды <code class="docutils literal"><span class="pre">dh_*</span></code>.</p>
<p><code class="docutils literal"><span class="pre">dh</span></code> запускает последовательность команд debhelper. Поддерживаемые последовательности соответствуют целям файла <code class="docutils literal"><span class="pre">debian/rules</span></code>: «build», «clean», «install», «binary-arch», «binary-indep» и «binary». Чтобы увидеть, какие команды выполняются в каждой цели, наберите:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span>$ dh binary-arch --no-act
</pre></div>
</div>
<p>Командам из последовательности <code class="docutils literal"><span class="pre">binary-indep</span></code> передаётся аргумент <code class="docutils literal"><span class="pre">-i</span></code>, чтобы они затрагивали только архитектурно-независимые пакеты, а командам из последовательности <code class="docutils literal"><span class="pre">binary-arch</span></code> — аргумент <code class="docutils literal"><span class="pre">-a</span></code>, чтобы онм затрагивали только архитектурно-зависимые пакеты.</p>
<p>Каждая команда debhelper при её успешном выполненении делает запись в журнале <code class="docutils literal"><span class="pre">debian/package.debhelper.log</span></code> (который затем удаляет dh_clean.) Таким образом dh может определить, какие команды уже были выполнены и для каких пакетов, что помогает избежать повторного выполнения этих команд.</p>
<p>При каждом запуске <code class="docutils literal"><span class="pre">dh</span></code> он изучает журнал, находит добавленные последними команды, которые относятся к указанной последовательности. Затем он продолжает выполнение со следующей команды в этой последовательности. Опции <code class="docutils literal"><span class="pre">--until</span></code>, <code class="docutils literal"><span class="pre">--before</span></code>, <code class="docutils literal"><span class="pre">--after</span></code> и <code class="docutils literal"><span class="pre">--remaining</span></code> могут изменить это поведение.</p>
<p>Если в <code class="docutils literal"><span class="pre">debian/rules</span></code> есть функция с именем, похожим на <code class="docutils literal"><span class="pre">override_dh_команда</span></code>, то вместо данной команды <code class="docutils literal"><span class="pre">dh</span></code> выполнит данную функцию. Эта функция может запустить ту же команду с другими аргументами, или же совершенно другую команду. (Замечание: для использования этой функциональности при сборке требуется пакет debhelper версии не менее 7.0.50).</p>
<p>За дополнительными примерами обратитесь к <code class="docutils literal"><span class="pre">/usr/share/doc/debhelper/examples/</span></code> и <code class="docutils literal"><span class="pre">man</span> <span class="pre">dh</span></code>. Смотрите также <a class="reference external" href="http://www.debian.org/doc/debian-policy/ch-source.html#s-debianrules">раздел о файле rules (Раздел 4.9)</a> в «Debian Policy Manual».</p>
</div>
<div class="section" id="additional-files">
<h2>2.5. Дополнительные файлы<a class="headerlink" href="#additional-files" title="Ссылка на этот заголовок">¶</a></h2>
<div class="section" id="the-install-file">
<h3>2.5.1. Файл install<a class="headerlink" href="#the-install-file" title="Ссылка на этот заголовок">¶</a></h3>
<p>Файл <code class="docutils literal"><span class="pre">install</span></code> используется <code class="docutils literal"><span class="pre">dh_install</span></code> для установки файлов в двоичный пакет. Он имеет два стандартных варианта использования:</p>
<ul class="simple">
<li>Для установки в ваш пакет файлов, не установленных оригинальной системой сборки.</li>
<li>Разделение одного большого пакета источника на несколько бинарных пакетов.</li>
</ul>
<p>В первом случае файл <code class="docutils literal"><span class="pre">install</span></code> должен содержать одну строку для каждого устанавливаемого файла, указывающую как файл, так и установочный каталог. Например, следующий файл <code class="docutils literal"><span class="pre">install</span></code> установит сценарий <code class="docutils literal"><span class="pre">foo</span></code> из корневого каталога пакета исходного кода в <code class="docutils literal"><span class="pre">usr/bin</span></code> и desktop-файл из каталога <code class="docutils literal"><span class="pre">debian</span></code> в <code class="docutils literal"><span class="pre">usr/share/applications</span></code>:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">foo</span> <span class="n">usr</span><span class="o">/</span><span class="nb">bin</span>
<span class="n">debian</span><span class="o">/</span><span class="n">bar</span><span class="o">.</span><span class="n">desktop</span> <span class="n">usr</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">applications</span>
</pre></div>
</div>
<p>Если пакет исходного кода производит несколько двоичных пакетов, <code class="docutils literal"><span class="pre">dh</span></code> установит файлы в <code class="docutils literal"><span class="pre">debian/tmp</span></code> вместо установки непосредственно в <code class="docutils literal"><span class="pre">debian/<пакет></span></code>. Файлы, установленные в <code class="docutils literal"><span class="pre">debian/tmp</span></code> затем можно переместить в отдельные двоичные пакеты с помощью нескольких файлов <code class="docutils literal"><span class="pre">$имя_пакета.install</span></code>. Это часто делается, чтобы разбить большое количество не зависящих от архитектуры данных из зависящих от архитектуры пакетов в пакеты <code class="docutils literal"><span class="pre">Architecture:</span> <span class="pre">all</span></code>. В этом случае нужно указать только имена устанавливаемых файлов (или каталогов), без установочного каталога. Например, <code class="docutils literal"><span class="pre">foo.install</span></code>, содерщащий только зависящие от архитектуры файлы, может выглядеть наподобие:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">usr</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span>
<span class="n">usr</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">foo</span><span class="o">/*.</span><span class="n">so</span>
</pre></div>
</div>
<p>В то время как <code class="docutils literal"><span class="pre">foo-common.install</span></code>, содержащий только не зависящие от архитектуры файлы, может выглядеть так:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">doc</span><span class="o">/</span>
<span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">icons</span><span class="o">/</span>
<span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">foo</span><span class="o">/</span>
<span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">locale</span><span class="o">/</span>
</pre></div>
</div>
<p>Будут созданы два двоичных пакета: <code class="docutils literal"><span class="pre">foo</span></code> и <code class="docutils literal"><span class="pre">foo-common</span></code>. Для обоих требуется их собственный абзац в <code class="docutils literal"><span class="pre">debian/control</span></code>.</p>
<p>Для дополнительных подробностей смотрите <code class="docutils literal"><span class="pre">man</span> <span class="pre">dh_install</span></code> и <a class="reference external" href="http://www.debian.org/doc/manuals/maint-guide/dother.en.html#install">раздел о файле install (Раздел 5.11)</a> в «Debian New Maintainers’ Guide».</p>
</div>
<div class="section" id="the-watch-file">
<h3>2.5.2. Файл watch<a class="headerlink" href="#the-watch-file" title="Ссылка на этот заголовок">¶</a></h3>
<p>Файл <code class="docutils literal"><span class="pre">debian/watch</span></code> позволяет автоматически проверять наличие новых версий в апстриме с помощью инструмента <code class="docutils literal"><span class="pre">uscan</span></code> из пакета <code class="docutils literal"><span class="pre">devscripts</span></code>. Первой строкой файла watch должна быть версия формата (3 на момент написания этого руководства), а следующий строки содержат любые URL для анализа. Например:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">version</span><span class="o">=</span><span class="mi">3</span>
<span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">ftp</span><span class="o">.</span><span class="n">gnu</span><span class="o">.</span><span class="n">org</span><span class="o">/</span><span class="n">gnu</span><span class="o">/</span><span class="n">hello</span><span class="o">/</span><span class="n">hello</span><span class="o">-</span><span class="p">(</span><span class="o">.*</span><span class="p">)</span><span class="o">.</span><span class="n">tar</span><span class="o">.</span><span class="n">gz</span>
</pre></div>
</div>
<p>Запуск <code class="docutils literal"><span class="pre">uscan</span></code> в корневом каталоге исходников сравнит номер апстрим-версии в <code class="docutils literal"><span class="pre">debian/changelog</span></code> с последней доступной в апстриме версией. Если в апстриме найдена новая версия, она будет автоматически загружена. Например:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span>$ uscan
hello: Newer version (2.7) available on remote site:
http://ftp.gnu.org/gnu/hello/hello-2.7.tar.gz
(local version is 2.6)
hello: Successfully downloaded updated package hello-2.7.tar.gz
and symlinked hello_2.7.orig.tar.gz to it
</pre></div>
</div>
<p>Если ваши tarball-файлы обитают на Launchpad, файл <code class="docutils literal"><span class="pre">debian/watch</span></code> имеет немного более сложный вид (о том, почему это так, смотрите <a class="reference external" href="https://answers.launchpad.net/launchpad/+question/21146">Question 21146</a> и <a class="reference external" href="https://launchpad.net/launchpad/+bug/231797">Bug 231797</a>). В этому случае используйте нечто вроде:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">version</span><span class="o">=</span><span class="mi">3</span>
<span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">launchpad</span><span class="o">.</span><span class="n">net</span><span class="o">/</span><span class="n">flufl</span><span class="o">.</span><span class="n">enum</span><span class="o">/+</span><span class="n">download</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">launchpad</span><span class="o">.</span><span class="n">net</span><span class="o">/</span><span class="n">flufl</span><span class="o">.</span><span class="n">enum</span><span class="o">/.*/</span><span class="n">flufl</span><span class="o">.</span><span class="n">enum</span><span class="o">-</span><span class="p">(</span><span class="o">.+</span><span class="p">)</span><span class="o">.</span><span class="n">tar</span><span class="o">.</span><span class="n">gz</span>
</pre></div>
</div>
<p>Дополнительные сведения смотрите в <code class="docutils literal"><span class="pre">man</span> <span class="pre">uscan</span></code> и в <a class="reference external" href="http://www.debian.org/doc/debian-policy/ch-source.html#s-debianwatch">разделе о файле watch (Раздел 4.11)</a> «Debian Policy Manual».</p>
<p>Список пакетов, для которых файл <code class="docutils literal"><span class="pre">watch</span></code> сообщает о том, что они не синхронизированы с апстримом, смотрите <a class="reference external" href="http://qa.ubuntuwire.org/uehs/no_updated.html">Ubuntu External Health Status</a>.</p>
</div>
<div class="section" id="the-source-format-file">
<h3>2.5.3. Файл source/format<a class="headerlink" href="#the-source-format-file" title="Ссылка на этот заголовок">¶</a></h3>
<p>Этот файл указывает формат пакета исходного кода. Он должен содержать одну строку, показывающую выбранный формат:</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">3.0</span> <span class="pre">(native)</span></code> для «родных» пакетов Debian (апстрим-версия отсутствует)</li>
<li><code class="docutils literal"><span class="pre">3.0</span> <span class="pre">(quilt)</span></code> для пакетов с отдельным тарболом из апстрима</li>
<li><code class="docutils literal"><span class="pre">1.0</span></code> для пакетов, желающих явно указать формат по умолчанию</li>
</ul>
<p>В настоящее время по умолчанию выбирается формат пакета исходного кода 1.0, если этот файл отсутствует. В файле source/format можно указать его явно. Если вы не используете этот файл для указания формата исходного кода, Lintian выдаст предупреждение об отстутствии файла. Это чисто информационное предупреждение и его можно без опасений проигнорировать.</p>
<p>Рекомендуется использовать более новый формат 3.0. Он предоставляет некоторые новые возможности:</p>
<ul class="simple">
<li>Поддержка дополнительных форматов сжатия: bzip2, lzma и xz</li>
<li>Поддержка нескольких архивов с оригинальным исходным кодом</li>
<li>Необязательно перепаковывать архив с оригинальным исходным кодом, чтобы удалить директорию <code class="docutils literal"><span class="pre">debian</span></code>.</li>
<li>Специфичные для Debian изменения теперь хранятся не в одном файле .diff.gz, а в виде нескольких патчей, совместимых с quilt, в каталоге <code class="docutils literal"><span class="pre">debian/patches/</span></code></li>
</ul>
<p><a class="reference external" href="https://wiki.debian.org/Projects/DebSrc3.0">https://wiki.debian.org/Projects/DebSrc3.0</a> содержит дополнительную информацию касательно перехода на версию 3.0 формата исходных пакетов.</p>
<p>Дополнительную информацию можно найти в <code class="docutils literal"><span class="pre">man</span> <span class="pre">dpkg-source</span></code> и в <a class="reference external" href="http://www.debian.org/doc/manuals/maint-guide/dother.en.html#sourcef">Главе source/format (Глава 5.21)</a> руководства Debian New Maintainers.</p>
</div>
</div>
<div class="section" id="additional-resources">
<h2>2.6. Дополнительные ресурсы<a class="headerlink" href="#additional-resources" title="Ссылка на этот заголовок">¶</a></h2>
<p>Кроме Debian Policy Manual, на который ссылается статья, руководство Debian New Maintainers’ Guide содержит более детальное описание для каждого файла. <a class="reference external" href="http://www.debian.org/doc/manuals/maint-guide/dreq.en.html">Глава 4, “Необходимые файлы в папке debian”</a> описывает файлы control, changelog, copyright и rules. <a class="reference external" href="http://www.debian.org/doc/manuals/maint-guide/dother.en.html">Глава 5, “Прочие файлы в папке debian”</a> описывает дополнительные файлы, которые можно использовать.</p>
</div>
</div>
<div class="divide"></div>
</div>
<div id="sidebar" class="grid_3 omega">
<div class="container-tweet">
<h3>Оглавление</h3>
<div class="toc">
<ul>
<li><a class="reference internal" href="#">2. Общий обзор каталога <code class="docutils literal"><span class="pre">debian/</span></code></a><ul>
<li><a class="reference internal" href="#the-changelog">2.1. Файл changelog</a></li>
<li><a class="reference internal" href="#the-control-file">2.2. Файл control</a></li>
<li><a class="reference internal" href="#the-copyright-file">2.3. Файл copyright</a></li>
<li><a class="reference internal" href="#the-rules-file">2.4. Файл rules</a></li>
<li><a class="reference internal" href="#additional-files">2.5. Дополнительные файлы</a><ul>
<li><a class="reference internal" href="#the-install-file">2.5.1. Файл install</a></li>
<li><a class="reference internal" href="#the-watch-file">2.5.2. Файл watch</a></li>
<li><a class="reference internal" href="#the-source-format-file">2.5.3. Файл source/format</a></li>
</ul>
</li>
<li><a class="reference internal" href="#additional-resources">2.6. Дополнительные ресурсы</a></li>
</ul>
</li>
</ul>
</div>
<div class="browse-guide">
<h3>Browse The Guide:</h3>
<ul>
<li class="prev">
<a href="communication.html"
title="Предыдущий раздел: 1. Коммуникация при Разработке в Ubuntu">Go Previous</a>
</li>
<li class="center">
<a title="Back to Index" href="index.html">Index Guide</a>
</li>
<li class="next">
<a href="auto-pkg-test.html"
title="Следующий раздел: 3. autopkgtest: Автоматическое тестирование пакетов">Go Next</a>
</li>
</ul>
<span>Эта страница:</span> <a href="./_sources/debian-dir-overview.rst.txt"
rel="nofollow">Исходный текст</a>
</div>
</div>
<div id="back_top"><a href="#top">Back to Top</a></div>
</div>
<!--</section>-->
</div>
</div>
<div class="shadow"></div>
<footer>
<div>
Version: 0.3.9.
<a href="https://bugs.launchpad.net/ubuntu-packaging-guide">Report bugs</a> or
<a href="https://code.launchpad.net/~ubuntu-packaging-guide-team/ubuntu-packaging-guide/trunk">grab the source code</a> from Launchpad.
Создано с помощью <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.6.
<br />
© Copyright 2010-2017, Ubuntu Developers, Creative Commons Attribution-ShareAlike 3.0.
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
<img alt="Creative Commons License" style="border-width:0"
src="./_static/images/cc-by-sa.png" /></a>
<br />
<a href="http://people.ubuntu.com/~mitya57/ubuntu-packaging-guide-readme.html#translating">Help translate</a> or
<a href="./_static/translators.html">view the list of translators</a>.
</div>
</footer>
</body>
</html>
|