FAQ

Введение в разработку Ubuntu: часть 4

Это четвёртая статья в серии, объясняющей основы разработки Ubuntu, не требующей огромного количества знаний, инструментов, концептов, процессов и инфраструктуры. Если вам понравилась статья или вы нашли в ней что-то проблемной, пожалуйста, проявляйте активность в комментариях.

ubuntu 11.10

Базовый обзор директории debian/

Эта статья объяснит значение различных файлов, важных при упаковке пакетов для Ubuntu и находящихся в директории debian/. Самые важные из них — лог изменений, контроль-файл, копирайт и правила. Они требуются для всех пакетов. Несколько дополнительных файлов в debian/ могуть быть использованы для кастомизации пакета. О некоторых из них мы с вами поговорим в этой статье, но здесь не будет рассказано обо всех их.

Лог изменений (changelog)

Как говорит имя этого файла, в нём содержится список изменений, произведённых в каждой версии. У него есть специальный формат, требующий наличия имени пакета, версии, дистрибутива, изменений и кто сделал изменения, в какое время. Если у вас есть GPG-ключ (смотрите вторую часть серии), убедитесь, что вы используете то же имя и email-адрес в changelog'е. Вот шаблон этого файла:

пакет (версия) дистрибутив срочность=срочность

* детали изменения

- больше деталей об изменениях

* и ещё больше

-- имя мейнтейнера[два пробела] дата

Формат (особенно для даты) важен. Дата должна быть в формате RFC 5322, который может быть получен с помощью команды date -R. Для удобства, команда dch может быть использоваться для редактирования changelog'ов. Она обновит дату автоматически.

Маленькие изменения выделяются тире "-", важные изменения выделяют звёздочкой "*".

dch --create (dch находится в пакете devscriptspackage) создаст стандартный debian/changelog для вас.

Вот пример файла changelog для hello:

hello (2.6-0ubuntu1) natty; urgency=low

 Учтите, что «-0ubuntu1» - здесь указывается ревизия дистрибутива.

У Ubuntu и Debian немного разные схемы версий пакетов, для избегаения кофликтов пакетов с одинаковыми версиями. Если пакет Debian сменился в Ubuntu, у него есть ubuntuX (где X — номер ревизии Ubuntu), находящийся в конце Debian-версии. Поэтому если пакет Debian hello 2.6-1 сменился благодаря Ubuntu, строка версии может быть 2.6-1ubuntu1. Если пакет для приложения не существует в Debian, Debian-ревизия равна 0 (например 2.6-0ubuntu1).

Для дальнейшей информации посмотрите секцию лога изменений (Секция 4.4) в Debian Policy Manual.

control-файл

Control-файл содержит информацию, используемую менеджером пакетов (таким как apt-get, synaptic, и adept), зависимости, информацию о мейнтейнере и многое другое.

Для пакета Ubuntu hello control-файл может выглядеть примерно так:

Source: hello

Section: devel

Priority: optional

Maintainer: Ubuntu Developers;

XSBC-Original-Maintainer: Jane Doe;

Standards-Version: 3.9.1

Build-Depends: debhelper (>= 7)

Bzr-Vcs: lp:ubuntu/hello

Package: hello

Architecture: any

Depends: ${shlibs:Depends}

Description: The classic greeting, and a good example

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).

 Первый абзац описывает список пакетов, требуемых для сборки пакета из исходников, в поле Build-Depends. Он также содержит некоторую мета-информацию, такую как имя мейнтейнера, версию Debian Policy, которой компилируется приложение, местонахождение репозитория контроля версий, и домашнюю страницу upstream-а.

Учтите, что в Ubuntu мы ставим основной адрес в поле Maintainer, потому что каждый может изменять любые пакеты (это зависит от Debian, где изменение пакета обычно разрешено одному человеку или команде. Пакеты в Ubuntu должны обычно иметь поле Maintainer, направленное на Ubuntu Developers (Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.). Если поле Maintainer изменено, старое значение должно быть сохранено в поле XSBC-Original-Maintainer. Это может быть сделано автоматически с помощью скрипта update-maintainer, доступном в пакете ubuntu-dev-tools. Для дальнейшей информации, посмотрите спецификации поля Debian Maintainer в Ubuntu wiki.

Каждый дополнительный абзац описывает собираемый бинарный пакет.

Для дальнейшей информации, посмотрите секцию control-файла (Chapter 5) в Debian Policy Manual.

Копирайт-файл

В этом файле содержится копирайт-информация как об источнике upstream, так и для упаковки. Ubuntu и Debian Policy (Section 12.5) требуют, чтобы каждый пакет устанавливал копию своего копирайта и информацию о лицензировании в/usr/share/doc/$(имя_пакета)/copyright.

Обычно информация о правах находится в директории с исходниками программы, в файле COPYING. Этот файл должен включать информацию, такую как имена автора и упаковщика, URL, линия Copyright, включающая код, и собственно текст копирайте. Например, вот пример этого файла:

Format: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&;rev=166

Upstream-Name: Hello

Source: ftp://ftp.example.com/pub/games

Files: *

Copyright: Copyright 1998 John Doe <Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.>;

 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'.

Files: debian/*

Copyright: Copyright 1998 Jane Doe <Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.>;

License: GPL-2+

Этот пример следует правилу DEP-5: машинно-распарсиваемый debian/copyright. Вам нужно использовать этот файл.

 Файл правил

Последний файл — это правила. Они делают всю работу по созданию нашего пакета. Это Makefile, сообщающий, как скомпилировать и установить приложение, затем создающий .deb-файл из установленных файлов. Он также очищает все build-файлы.

Вот простая версия rules-файла, созданного dh_make (который может быть найден в пакете dh-make):

#!/usr/bin/make -f

# -*- makefile -*-

# Uncomment this to turn on verbose mode.

#export DH_VERBOSE=1

%:

dh $@

Давайте пройдёмся по этому файлу поподробнее.

dh выполняет debhelper-команды в последовательности. Поддерживаемые последовательности зависят от файла debian/rules: "build", "clean", "install", "binary-arch", "binary-indep", и "binary". Чтобы посмотреть выполняемые файлы в каждом пути, выполните:

 $ dh binary-arch --no-act

Команды в последовательности binary-indep проходят с опцией "-i", чтобы удостовериться, что они работают только на бинарно-независимых пакетах, и команды в последовательностях binary-arch проходят с опцией "-a", чтобы удостовериться, что они работают только на архитектурно-зависимых пакетах.

Каждая debhelper-команда запишет, когда она выполнится успешно, в debian/package.debhelper.log. (который dh_clean удаляет). Так что dh может сказать, какие команды уже были выполнены, для каких пакетов, и пропустить повторное выполение этих команд.

Каждый раз, когда dh выполняется, он проверяет лог, и находит последнюю записанную команду, которая в определённой последовательности. Затем он продолжает, со следующей командой в последовательности. Опции. The--until, --before, --after, и --remaining могут убрать задержку.

Посмотрите на /usr/share/doc/debhelper/examples/ и man dh для больше примеров. Также посмотрите секцию о rules (Секция 4.9) в Debian Policy Manual.

 Дополнительные файлы

Установочный файл

Установочный файл, который использует dh_install для установки файлов в бинарный пакет. У него обычно два стандартных случая использования:

Установка файлов в ваш пакет, которые не обрабатываются системой сборки upstream-ов

Расщепление единого большого исходного пакета в несколько бинарных пакетов.

В первом случае, установочный файл должен иметь одну линию на установленный файл, уточняя файл и директорию установки. Например, следующая линия должна установить скрипт foo из корневой папки исходников директории debian в usr/share/applications:

foo usr/bin

debian/bar.desktop usr/share/applications

Когда исходный пакет производит несколько бинарных пакетов, dh установит файлы вw debian/tmp, вместо напрямую в debian/. Файлы установленные в intodebian/tmp могут быть перемещены в отдельные бинарные пакеты, используя файлы multiple$package_name.install. Это часто делается для разъединения большого количества независимых данных. В этом случае, только имена файлов (или директорий) для установки должны присутствовать, без установочной папки. Например foo.install содержит только зависимые от архитектуры файлы, это может выглядеть как-то вот так:

usr/bin/

usr/lib/foo/*.so

В то время как foo-common.install содержит независимые от архитектуры файлы:

/usr/share/doc/

/usr/share/icons/

/usr/share/foo/

/usr/share/locale/

Это должно создать два бинарных пакета, foo и foo-common. Оба требуют собственный абзац в debian/control.

Посмотрите man dh_install и секцию про установочный файл (Секция 5.11) руководства для новых мейнтейнеров Debian для дополнительных деталей.

watch-файл

Файл debian/watch позволяет нам автоматически проверять новые версии upstream'ов, используя инструмент uscan, который мы можем найти в пакете devscripts. Первая линия watch-файла должна быть версией формата (3, на момент написания статьи), а следующие линии содержат любые URL для парсинга. Например:

version=3

http://ftp.gnu.org/gnu/hello/hello-(.*).tar.gz

Выполнение uscan в корневой исходной папке сравнит версию upstream в файле debian/changelog с последней доступной версией upstream. Если найдена новая версия upstream'а, она будет автоматически загружена. Например:

$ 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

Для дальшейшей информации, посмотрите man uscan и секцию watch-файла (Секция 4.11) в Debian Policy Manual.

Для списка пакетов, в которых watch-файл сообщает, что они не синхронизируются с upstream, посмотрите Ubuntu External Health Status.

Файл source/format

Этот файл отображает формат исходного пакета. Сейчас, формат автоматически устанавливается на 1.0, если этот файл не существуют. Но поощеряется использование нового формата 3.0. Этот файл должен содержать единственную линию с нужным форматом:

3.0 (native) для нативных пакетов Debian (нет upstream-версии) или

3.0 (quilt) для пакетов с upstream-тарболлом

Если вы захотите использовать старый формат по какой-то причине, нужно создать этот файл и поместить в него 1.0, чтобы точно установить версию исходного пакета. Это позволит в будущем убрать автоматическую установку 1.0 как формат по умолчанию.

http://wiki.debian.org/Projects/DebSrc3.0 содержит информацию и причины переключения на версию формата исходных пакетов 3.0.

Посмотрите man dpkg-source и секцию source/format (Секция 5.21) руководства новым мейнтейнерам Debian для дополнительных деталей.

Дополнительные ресурсы

В дополнение к ссылкам на Debian Policy Manual в каждом разделе выше, руководство Debian New Maintainers' содержит более подробное описание каждого файла. Раздел 4, "Required files under the debian directory" рассказывает о файлах control, changelog, copyright и rules. Раздел 5, "Other files under the debian directory" рассказывает о дополнительных файлах, которые можно использовать.

Хотим Вам представить портал по компьюетрной игре Дота - dota-warcraft.ru.

Комментарии   

 
0 #21 Ginger 29.04.2017 17:25
I find myself coming to your site more and more often to the
point where myy visits are almost daily now!

my blog post: Arielle: http://businesssecurityguidenow.pen.io/
Цитировать
 
 
0 #20 Gerard 30.12.2016 10:12
A awesome post I must say.. Simple yet somehow intriguing,
notable and engaging.. Continue the awesome work!


my blog :: Christina: http://dark-fireclan.webs.com/
Цитировать
 
 
0 #19 Gudrun 04.03.2016 04:59
Hola! I've been following your web site for a long
time now and finally got the bravery to go ahead and give you a shout out from Austin Tx!
Just wanted to mention keep up the fantastic work!

Check out my page home business: http://kontentmachine.com/affiliates/affiliates/signup.php?a_aid=9483
Цитировать
 
 
0 #18 Theo 08.02.2016 01:43
Moreover, I have nice affords in store for you should you purchase Study Mindfulness From An Expert from me.
That is in addition to the offers you receive together with the precise product.


Feel free to surf to my blog easy ways to learn mindfulness meditation: http://aquaritewater.com/?option=com_k2&view=itemlist&task=user&id=246389
Цитировать
 
 
0 #17 Joanne 04.02.2016 10:34
Dennis Foley Plumbing gives sizzling water, radiant or
steam boiler installations with free estimates.

My website - boiler installation instructions: http://stopmaster.ru/?option=com_k2&view=itemlist&task=user&id=559713
Цитировать
 
 
0 #16 Floyd 25.11.2015 00:53
Its like you read my thoughts! You seem to know so much about this, like you
wrote the book in it or something. I think that you simply can do with a few percent to force the message house a little bit, but instead of that, this
is fantastic blog. An excellent read. I will
definitely be back.

my web site Affiliate Millionaire Club Reviews: http://borbulhablog.sejamaior.com.br/post/REVEILLON-20112012.aspx
Цитировать
 
 
0 #15 Ernie 03.11.2015 05:28
Thanks for sharing your thoughts on комментариях.

Regards

Look into my weblog :: Six Star Testosterone
Booster: http://divingwiki.org/divingwiki/index.php?title=User%3AKitNeumayer8369
Цитировать
 
 
0 #14 Zoila 28.10.2015 09:06
Thanks in support of sharing such a good thinking, piece of writing
is fastidious, thats why i have read it fully

Feel free to visit my web site - Mega
Cleanse Complete Supplement: http://vildarna.bloggplatsen.sevildarna.bloggplatsen.se/gilla/?url=http://megacleanse.net/
Цитировать
 
 
0 #13 Lupe 26.10.2015 00:55
Keep on working, great job!

My website Slimdrene Reviews: http://www.avmgames.com/profile/maryjomaste
Цитировать
 
 
0 #12 Chelsea 23.10.2015 13:07
I am regular reader, how are you everybody? This paragraph posted at this website is actually
fastidious.

My web blog; Mega Cleanse Complete: http://www.fleetsafetyconference.com/SendToFriend/Default.aspx?url=http://megacleanse.net/
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Аккаунт




Мы в соц. сетях






Подпишись на нашу RSS

Новости Hi-Tech

Как избавиться от уведомлений в браузере

Очень часто при просмотре web-страниц выскакивают сообщения рекламного характера, которые сильно раздражают и сбивают с толку. Если вы входите в число этих людей, то должны знать, как отключить уведомления в...

Что нового в юбилейной версии браузера F…

На днях стал доступным релиз обновленного веб-браузера от Mozilla. Представленный Firefox 50 выпущен в версиях для десктопов с популярными операционными системами, а также для мобильных устройств, работающих на Android. Одним...

Ремонт ноутбуков - выбираем сервис

Ноутбуки вещь до конца не изученная пользователями, настолько как компьютер. Ведь не каждый захочет разбирать свой ноутбук, и смотреть как он устроен. В отличие от ноутбука компьютер разбирал почти каждый,...

Как выбрать чехол для мобильного телефон…

После приобретения смартфона большинство сразу же начинают выбирать аксессуары к нему. Это вполне объяснимо, поскольку многие из них делают эксплуатацию девайса безопасной и более комфортной. В первую очередь это касается...

Go to top