This file is indexed.

/usr/share/doc/ubuntu-packaging-guide-html-ru/packaging-new-software.html is in ubuntu-packaging-guide-html-ru 0.3.5.

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
<!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>6. Создание пакетов для новых программ &mdash; 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.5',
        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="top" title="Ubuntu Packaging Guide" href="./index.html" />
    <link rel="next" title="7. Обновления безопасности и обновления стабильных релизов" href="security-and-stable-release-updates.html" />
    <link rel="prev" title="5. Демонстрация: исправление ошибки в Ubuntu" href="fixing-a-bug-example.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="security-and-stable-release-updates.html" title="7. Обновления безопасности и обновления стабильных релизов"
	        accesskey="N">следующий</a></li>
	        <li class="page_item"><a  
	        href="fixing-a-bug-example.html" title="5. Демонстрация: исправление ошибки в Ubuntu"
	        accesskey="P">предыдущий</a></li>
        <li class="page_item"><a class="sub-nav-item" href="index.html">Ubuntu Packaging Guide  &raquo;</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="packaging-new-software">
<h1>6. Создание пакетов для новых программ<a class="headerlink" href="#packaging-new-software" title="Ссылка на этот заголовок"></a></h1>
<p>Хотя в архиве Ubuntu имеются тысячи пакетов, есть ещё много программ, которыми никто не занимается. Если вы знаете о какой-то замечательной программе, о которой, по вашему мнению, стоит узнать более широкому кругу пользователей, вы можете попробовать приложить свою руку к созданию пакета для Ubuntu или <a class="reference external" href="https://help.launchpad.net/Packaging/PPA">PPA</a>. Это руководство проведёт вас через этапы создания пакета для новой программы.</p>
<p>Сначала вам следует прочитать статью <a class="reference internal" href="getting-set-up.html"><em>Подготовка</em></a>, чтобы подготовить свою среду разработки.</p>
<div class="section" id="checking-the-program">
<h2>6.1. Проверка программы<a class="headerlink" href="#checking-the-program" title="Ссылка на этот заголовок"></a></h2>
<p>Первым этапом создания пакета является получение tar-файла из апстрима («апстримом» мы называем авторов приложений) и проверка того, что он нормально компилируется и запускается.</p>
<p>Это руководство проведёт вас через процесс создания пакета для небольшого приложения GNU Hello, доступного на <a class="reference external" href="http://www.gnu.org/software/hello/">GNU.org</a>.</p>
<p>Если у вас ещё нет инструментов сборки, установите их. Также установите все необходимые зависимости.</p>
<p>Установим инструменты сборки:</p>
<div class="highlight-python"><div class="highlight"><pre>$ sudo apt-get install build-essential
</pre></div>
</div>
<p>Скачаем основной пакет:</p>
<div class="highlight-python"><div class="highlight"><pre>$ wget -O hello-2.7.tar.gz &quot;http://ftp.gnu.org/gnu/hello/hello-2.7.tar.gz&quot;
</pre></div>
</div>
<p>Теперь распакуем основной пакет:</p>
<div class="highlight-python"><div class="highlight"><pre>$ tar xf hello-2.7.tar.gz
$ cd hello-2.7
</pre></div>
</div>
<p>Это приложение использует систему сборки autoconf, так что нам нужно запустить <tt class="docutils literal"><span class="pre">./configure</span></tt> для подготовки к компиляции.</p>
<p>При этом будет проверено наличие необходимых для сборки зависимостей. Поскольку <tt class="docutils literal"><span class="pre">hello</span></tt> — простой пример, <tt class="docutils literal"><span class="pre">build-essential</span></tt> обеспечит нас всем, что нужно. Для более сложных программ, команда завершится ошибкой, если у нас нет необходимых библиотек и файлов для разработки. Установите требуемые пакеты и повторите процесс, пока команда не завершится успешно.:</p>
<div class="highlight-python"><div class="highlight"><pre>$ ./configure
</pre></div>
</div>
<p>Теперь нужно скомпилировать исходный код:</p>
<div class="highlight-python"><div class="highlight"><pre>$ make
</pre></div>
</div>
<p>Если компиляция завершилась успешно, можно установить и запустить программу:</p>
<div class="highlight-python"><div class="highlight"><pre>$ sudo make install
$ hello
</pre></div>
</div>
</div>
<div class="section" id="starting-a-package">
<h2>6.2. Создание пакета<a class="headerlink" href="#starting-a-package" title="Ссылка на этот заголовок"></a></h2>
<p><tt class="docutils literal"><span class="pre">bzr-builddeb</span></tt> содержит модуль для создания нового пакета из шаблона. Этот модуль является обёрткой вокруг команды <tt class="docutils literal"><span class="pre">dh_make</span></tt> . Он уже должен быть у вас, если вы установили <tt class="docutils literal"><span class="pre">packaging-dev</span></tt>. Запустите команду, указав имя пакета, номер версии и путь к tar-архиву из апстрима:</p>
<div class="highlight-python"><div class="highlight"><pre>$ sudo apt-get install dh-make
$ cd ..
$ bzr dh-make hello 2.7 hello-2.7.tar.gz
</pre></div>
</div>
<p>When it asks what type of package type <tt class="docutils literal"><span class="pre">s</span></tt> for single binary. This will import
the code into a branch and add the <tt class="docutils literal"><span class="pre">debian/</span></tt> packaging directory.  Have a look
at the contents.  Most of the files it adds are only needed for specialist
packages (such as Emacs modules) so you can start by removing the optional
example files:</p>
<div class="highlight-python"><div class="highlight"><pre>$ cd hello/debian
$ rm *ex *EX
</pre></div>
</div>
<p>Теперь нужно внести изменения в каждый из файлов.</p>
<p>In <tt class="docutils literal"><span class="pre">debian/changelog</span></tt> change the
version number to an Ubuntu version: <tt class="docutils literal"><span class="pre">2.7-0ubuntu1</span></tt> (upstream version 2.7,
Debian version 0, Ubuntu version 1).  Also change <tt class="docutils literal"><span class="pre">unstable</span></tt> to the current
development Ubuntu release such as <tt class="docutils literal"><span class="pre">trusty</span></tt>.</p>
<p>Much of the package building work is done by a series of scripts
called <tt class="docutils literal"><span class="pre">debhelper</span></tt>.  The exact behaviour of <tt class="docutils literal"><span class="pre">debhelper</span></tt> changes
with new major versions, the compat file instructs <tt class="docutils literal"><span class="pre">debhelper</span></tt> which
version to act as.  You will generally want to set this to the most
recent version which is <tt class="docutils literal"><span class="pre">9</span></tt>.</p>
<p>Файл <tt class="docutils literal"><span class="pre">control</span></tt> содержит все метаданные пакета.  Первый абзац описывает пакет исходных кодов. Второй и следующие абзацы описывают двоичные пакеты, которые должны быть собраны.  Нам понадобится добавить пакеты, необходимые для компиляции приложения в <tt class="docutils literal"><span class="pre">Build-Depends:</span></tt>. Для <tt class="docutils literal"><span class="pre">hello</span></tt> он должен включать, как минимум:</p>
<div class="highlight-python"><div class="highlight"><pre>Build-Depends: debhelper (&gt;= 9)
</pre></div>
</div>
<p>Также нужно заполнить описание программы в поле <tt class="docutils literal"><span class="pre">Description:</span></tt>.</p>
<p><tt class="docutils literal"><span class="pre">copyright</span></tt> нужно заполнить в соответствии с лицензией на источник из апстрима.  Согласно файлу hello/COPYING, это лицензия GNU GPL 3 или более поздняя её версия.</p>
<p><tt class="docutils literal"><span class="pre">docs</span></tt> должен содержать любые файлы документации из апстрима, которые, по вашему мнению, должны быть включены в готовый пакет.</p>
<p><tt class="docutils literal"><span class="pre">README.source</span></tt> и <tt class="docutils literal"><span class="pre">README.Debian</span></tt> необходимы, лишь если ваш пакет имеет какие-то нестандартные функции. У нас таких нет, так что можно удалить эти файлы.</p>
<p><tt class="docutils literal"><span class="pre">source/format</span></tt> можно оставить как есть, он описывает формат версии пакета исходного кода, который должен быть <tt class="docutils literal"><span class="pre">3.0</span> <span class="pre">(quilt)</span></tt>.</p>
<p><tt class="docutils literal"><span class="pre">rules</span></tt> — самый сложный файл.  Это Makefile, который компилирует код и превращает его в двоичный пакет.  К счастью, основную часть работы в наши дни автоматически выполняет <tt class="docutils literal"><span class="pre">debhelper</span> <span class="pre">7</span></tt>, так что универсальная цель <tt class="docutils literal"><span class="pre">%</span></tt> просто запускает сценарий <tt class="docutils literal"><span class="pre">dh</span></tt>, который делает всё, что необходимо.</p>
<p>Все эти файлы подробнее описаны в статье <a class="reference internal" href="debian-dir-overview.html"><em>обзор каталога debian</em></a>.</p>
<p>Finally commit the code to your packaging branch:</p>
<div class="highlight-python"><div class="highlight"><pre>$ bzr commit -m &quot;Initial commit of Debian packaging.&quot;
</pre></div>
</div>
</div>
<div class="section" id="building-the-package">
<h2>6.3. Сборка пакета<a class="headerlink" href="#building-the-package" title="Ссылка на этот заголовок"></a></h2>
<p>Теперь нам нужно проверить, что наши исходные файлы для пакета успешно компилируются и собираются в двоичный .deb-пакет:</p>
<div class="highlight-python"><div class="highlight"><pre>$ bzr builddeb -- -us -uc
$ cd ../../
</pre></div>
</div>
<p><tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">builddeb</span></tt> — это команда для сборки пакета в его текущем местоположении. <tt class="docutils literal"><span class="pre">-us</span> <span class="pre">-uc</span></tt> сообщает что подписывать пакет с помощью  GPG не требуется.  Результат будет помещён в каталог «..».</p>
<p>Просмотреть содержимое пакета можно с помощью:</p>
<div class="highlight-python"><div class="highlight"><pre>$ lesspipe hello_2.7-0ubuntu1_amd64.deb
</pre></div>
</div>
<p>Install the package and check it works (later you will be able to uninstall it
using <tt class="docutils literal"><span class="pre">sudo</span> <span class="pre">apt-get</span> <span class="pre">remove</span> <span class="pre">hello</span></tt> if you want):</p>
<div class="highlight-python"><div class="highlight"><pre>$ sudo dpkg --install hello_2.7-0ubuntu1_amd64.deb
</pre></div>
</div>
<p>You can also install all packages at once using:</p>
<div class="highlight-python"><div class="highlight"><pre>$ sudo debi
</pre></div>
</div>
</div>
<div class="section" id="next-steps">
<h2>6.4. Дальнейшие шаги<a class="headerlink" href="#next-steps" title="Ссылка на этот заголовок"></a></h2>
<p>Even if it builds the .deb binary package, your packaging may have
bugs.  Many errors can be automatically detected by our tool
<tt class="docutils literal"><span class="pre">lintian</span></tt> which can be run on both the source .dsc metadata file and
the .deb binary package:</p>
<div class="highlight-python"><div class="highlight"><pre>$ lintian hello_2.7-0ubuntu1.dsc
$ lintian hello_2.7-0ubuntu1_amd64.deb
</pre></div>
</div>
<p>Описание каждой проблемы, о которой он сообщает, можно найти на <a class="reference external" href="http://lintian.debian.org/tags.html">веб-сайте lintian</a>.</p>
<p>After making a fix to the packaging you can rebuild using <tt class="docutils literal"><span class="pre">-nc</span></tt> &#8220;no clean&#8221;
without having to build from scratch:</p>
<div class="highlight-python"><div class="highlight"><pre>$ bzr builddeb -- -nc -us -uc
</pre></div>
</div>
<p>Убедившись, что пакет успешно собирается локально, вы должны проверить, правильно ли его сборка будет проходить в чистой системе, с помощью <tt class="docutils literal"><span class="pre">pbuilder</span></tt>. Поскольку вскоре мы собираемся загрузить его в PPA (персональный архив пакетов), эту загрузку нужно снабдить <em>цифровой подписью</em>, чтобы Launchpad мог удостовериться, что загрузку сделали вы (узнать о том, что загрузка будет подписана, можно по отсутствию передаваемых <tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">builddeb</span></tt> флагов <tt class="docutils literal"><span class="pre">-us</span></tt> и <tt class="docutils literal"><span class="pre">-uc</span></tt>, которые мы использовали ранее). Для подписывания своей работы вам понадобится настроить GPG. Если вы ещё не настроили <tt class="docutils literal"><span class="pre">pbuilder-dist</span></tt> или GPG, <a class="reference internal" href="getting-set-up.html"><em>сделайте это сейчас</em></a>:</p>
<div class="highlight-python"><div class="highlight"><pre>$ bzr builddeb -S
$ cd ../build-area
$ pbuilder-dist trusty build hello_2.7-0ubuntu1.dsc
</pre></div>
</div>
<p>После того как вы останетесь довольны получившимся пакетом, нужно, чтобы его проверили другие люди.  Вы можете выгрузить ветку на Launchpad для проверки:</p>
<div class="highlight-python"><div class="highlight"><pre>$ bzr push lp:~&lt;lp-username&gt;/+junk/hello-package
</pre></div>
</div>
<p>Uploading it to a PPA will ensure it builds and give an easy way for you and
others to test the binary packages.  You will need to set up a PPA in Launchpad
and then upload with <tt class="docutils literal"><span class="pre">dput</span></tt>:</p>
<div class="highlight-python"><div class="highlight"><pre>$ dput ppa:&lt;lp-username&gt;/&lt;ppa-name&gt; hello_2.7-0ubuntu1.changes
</pre></div>
</div>
<p>Смотрите раздел «<a class="reference internal" href="udd-uploading.html"><em>Загрузка</em></a>» для дополнительной информации.</p>
<p>You can ask for reviews in <tt class="docutils literal"><span class="pre">#ubuntu-motu</span></tt> IRC channel, or on the
<a class="reference external" href="https://lists.ubuntu.com/mailman/listinfo/ubuntu-motu">MOTU mailing list</a>.  There might also be a more specific team you
could ask such as the GNU team for more specific questions.</p>
</div>
<div class="section" id="submitting-for-inclusion">
<h2>6.5. Submitting for inclusion<a class="headerlink" href="#submitting-for-inclusion" title="Ссылка на этот заголовок"></a></h2>
<p>Существует несколько путей, которыми пакет может попасть в Ubuntu. В большинстве случаев лучшим путём может быть прохождение сначала через Debian. Это позволит вашему пакету стать доступным для наибольшего количества пользователей, так как он будет доступен не только в Debian и Ubuntu, но и во всех дистрибутивах, созданных на их основе. Вот несколько полезных ссылок по отправке новых пакетов в Debian:</p>
<blockquote>
<div><ul class="simple">
<li><p class="first"><a class="reference external" href="http://wiki.debian.org/DebianMentorsFaq">Debian Mentors FAQ</a> — debian-mentors является основным местом для создания, просмотра и загрузки в Debian новых пакетов. Здесь вы можете найти разработчика Debian для загрузки вашего пакета в архив.</p>
</li>
<li><p class="first"><a class="reference external" href="http://www.debian.org/devel/wnpp/">Work-Needing and Prospective Packages</a> — Информация о том, как подать &#8220;Intent to Package&#8221; и &#8220;Request for Package&#8221; заявки, а также список открытых ITP и RFP.</p>
</li>
<li><p class="first"><a class="reference external" href="http://www.debian.org/doc/developers-reference/pkgs.html#newpackage">Debian Developer&#8217;s Reference, 5.1. New packages</a> — весь документ бесценен для создателей пакетов как для Ubuntu, так и для Debian. Этот раздел документирует процессы по отправке новых пакетов.</p>
</li>
</ul>
</div></blockquote>
<p>В некоторых случаях может иметь смысл сначала отправить пакет непосредственно в Ubuntu. Например, если версия Debian находится в состоянии заморозки, что делает маловероятным своевременное попадание вашего пакета в новый выпуск Ubuntu. Этот процесс документирован в разделе <a class="reference external" href="https://wiki.ubuntu.com/UbuntuDevelopment/NewPackages">&#8220;New Packages&#8221;</a> вики-страниц Ubuntu.</p>
</div>
<div class="section" id="sreenshots">
<h2>6.6. Sreenshots<a class="headerlink" href="#sreenshots" title="Ссылка на этот заголовок"></a></h2>
<p>Once you have uploaded a package to debian, you should add screenshots
to allow propective users to see what the program is like. These should
be uploaded to <a class="reference external" href="http://screenshots.debian.net/upload">http://screenshots.debian.net/upload</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="#">6. Создание пакетов для новых программ</a><ul>
<li><a class="reference internal" href="#checking-the-program">6.1. Проверка программы</a></li>
<li><a class="reference internal" href="#starting-a-package">6.2. Создание пакета</a></li>
<li><a class="reference internal" href="#building-the-package">6.3. Сборка пакета</a></li>
<li><a class="reference internal" href="#next-steps">6.4. Дальнейшие шаги</a></li>
<li><a class="reference internal" href="#submitting-for-inclusion">6.5. Submitting for inclusion</a></li>
<li><a class="reference internal" href="#sreenshots">6.6. Sreenshots</a></li>
</ul>
</li>
</ul>

        </div>

      <div class="browse-guide">
        <h3>Browse The Guide:</h3>
        <ul>
          <li class="prev">
            <a href="fixing-a-bug-example.html"
                      title="Предыдущий раздел: 5. Демонстрация: исправление ошибки в 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="security-and-stable-release-updates.html"
                      title="Следующий раздел: 7. Обновления безопасности и обновления стабильных релизов">Go Next</a>
          </li>
        </ul>
        <span>На этой странице:</span> <a href="./_sources/packaging-new-software.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.5.
    <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.2.2.
      <br />
        &copy; Copyright 2010-2014 , 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>