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