Ubuntu logo

Packaging Guide

4. Получение исходного кода

4.1. URL пакетов исходного кода

Bazaar предоставляет несколько очень удобных сокращений для доступа к веткам исходного кода с Launchpad для пакетов как Ubuntu, так и Debian.

Чтобы сослаться на ветки исходного кода, используйте:

ubuntu:package

где package — имя пакета, который вам нужен. Этот URL ссылается на пакеты в текущей разрабатываемой версии Ubuntu. Чтобы сослаться на ветку Tomboy в разрабатываемой версии, нужно использовать:

ubuntu:tomboy

Чтобы сделать отсылку к версии исходного пакета в более старом релизе Ubuntu просто добавьте пакету префикс с кодовым именем релиза. Например, для отсылки к исходному пакету Tomboy в Saucy используйте:

ubuntu:saucy/tomboy

Поскольку первые буквы кодовых имён не повторяются, можно сократить имя выпуска:

ubuntu:s/tomboy

Похожую схему можно использовать для доступа к веткам исходного кода в Debian, хотя здесь нет сокращений для имён выпусков Debian. Чтобы получить доступ к ветке Tomboy в текущем разрабатываемом выпуске Debian, используйте:

debianlp:tomboy

также для доступа к Tomboy в Debian Wheezy используйте:

debianlp:wheezy/tomboy

4.2. Получение исходного кода

Каждый пакет исходного кода в Ubuntu связан с веткой исходного кода на Launchpad. Launchpad автоматически обновляет эти ветки исходного кода, хотя процесс не полностью «защищён от дурака».

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

4.2.1. Создание общедоступного хранилища

К примеру, Вы хотите работать над пакетом Tomboy, и Вы уже проверили, что исходный пакет называется tomboy. Перед фактическим ветвлением кода для Tomboy создайте общедоступный репозиторий для хранения ветвей этого пакета. Общедоступный репозиторий сделает будущую работу более эффективной.

Воспользуйтесь для этого командой bzr init-repo, передав ей имя каталога, который вы хотите использовать:

$ bzr init-repo tomboy

Вы увидите, что в вашей текущей рабочей области создан каталог tomboy. Перейдите в него для продолжения работы:

$ cd tomboy

4.2.2. Получение ветки trunk

Мы используем команду bzr branch для создания локальной ветки пакета. Целевой каталог назовём tomboy.dev, просто потому, что так легче запомнить:

$ bzr branch ubuntu:tomboy tomboy.dev

Каталог tomboy.dev представляет собой версию Tomboy в разрабатываемой версии Ubuntu, и вы всегда можете перейти в этот каталог и выполнить bzr pull для получения любых будущих обновлений.

4.2.3. Проверка актуальности версии

Когда Вы делаете свою bzr branch, то получите сообщение о том является ли ветвь пакетов актуальной. К примеру:

$ bzr branch ubuntu:tomboy
Most recent Ubuntu version: 1.8.0-1ubuntu1.2
Packaging branch status: CURRENT
Branched 86 revisions.

Иногда импорт не проходит успешно и ветви пакета не совпадают с теми, что находятся в архиве. Сообщение:

Packaging branch status: OUT-OF-DATE

означает, что импорт не удался. Вы можете узнать причину по ссылке: http://package-import.ubuntu.com/status/ и отправить баг в UDD для разрешение проблемы.

4.2.4. Tar-файл из апстрима

Получить tar из апстрима можно с помощью:

bzr get-orig-source

Таким образом пробуются несколько методов для попадания в tar апстрима, сначала воссоздавая его из тега upstream-x.y в архиве bzr, затем скачивая из архива Ubuntu, а потом запуская debian/rules get-orig-source. Tar апстрима также будет воссоздан при использовании bzr для построения пакета:

bzr builddeb

У плагина builddeb есть несколько опций конфигурации.

4.2.5. Получение ветки для определённого выпуска

Если Вы хотите сделать что-то вроде обновления стабильного релиза (SRU), либо просто хотите изучить код в старом релизе, Вам нужно выбрать ветвь, соответствующую определенному релизу Ubuntu. К примеру, чтобы получить пакет Tomboy для Quantal:

$ bzr branch ubuntu:m/tomboy quantal

4.2.6. Импорт пакета исходного кода Debian

Если пакет, над которым Вы хотите работать, доступен в Debian, но не в Ubuntu - код легко импортировать в локальную ветку bzr для разработки. К примеру, Вы хотите импортировать исходный пакет newpackage. Мы начнем с создания общедоступного репозитория в качестве обычного, но нам также надо создать рабочее дерево, в которое будет импортирован исходный пакет (не забудьте выполнить cd out директории tomboy, созданной выше):

$ bzr init-repo newpackage
$ cd newpackage
$ bzr init debian
$ cd debian
$ bzr import-dsc http://ftp.de.debian.org/debian/pool/main/n/newpackage/newpackage_1.0-1.dsc

Как Вы видите - нужно просто указать удаленное расположение файла dsc, а Bazaar сделает все остальное. Теперь у Вас есть исходная ветка Bazaar.