Ubuntu logo

Packaging Guide

7. Исправление пакетов FTBFS (Fails To Build From Source)

Перед тем, как пакет можно будет использовать в Ubuntu, он должен быть собран из исходного кода. Если это не удаётся, пакет, вероятно, будет ожидать в -proposed и не будет доступен в архивах Ubuntu. Полный список пакетов, которые не удалось собрать из исходного кода, можно найти на http://qa.ubuntuwire.org/ftbfs/. На этой странице показано 5 основных категорий:

  • Package failed to build (F): Что-то действительно пошло не так в процессе сборки.

  • Отменённая сборка (X): сборка была отменена по некоторой причине. Для начала, с ними лучше не связываться.

  • Package is waiting on another package (M): Этот пакет ожидает сборки или обновления другого пакета, или (если это пакет в main) одна из его зависимостей находится не в той части архива.

  • Проблема в chroot (C): Некоторая операция над chroot-окружением столкнулась с ошибкой. Чаще всего исправляется повторной сборкой. Попросите разработчика запустить пересборку.

  • Ошибка при загрузке (U): Пакет не может быть загружен на сервер. Обычно в этом случае нужно сделать пересборку, но перед этим – проверьте логи сборки.

7.1. Первые шаги

Первым делом необходимо повторить FTBFS самостоятельно. Скачайте код с помощью bzr branch lp:ubuntu/PACKAGE и получите tar-архив, или запустите dget PACKAGE_DSC над .dsc-файлом со страницы проекта на Launchpad. После этого, создайте chroot-окружение.

У вас должно получиться воспроизвести ошибку FTBFS. Если же нет – проверьте, не качает ли сборка отсутствующую зависимость: в таком случае необходимо в файле debian/control объявить её как build-depends. Другой вариант – попробовать собрать пакет локально, что позволит проверить отсутствующие или не указанные зависимости (в таком случае локальная сборка должна быть успешна, а в schroot – нет)

7.2. Проверка Debian

В случае, если проблему удалось воспроизвести – необходимо приступить к поиску решения. Если пакет также находится в Debian, – проверьте, возможно у них пакет собирается нормально: http://packages.qa.debian.org/PACKAGE. Если в Debian есть более новая версия пакета, его нужно объединить (merge). Если же нет – проверьте логи сборки и ссылки на известные проблемы: там можеет быть дополнительная информация о FTBFS или патчи. Debian также поддерживает список команд разных FTBFS, в котором также есть варианты решения разнообразных проблем: https://wiki.debian.org/qa.debian.org/FTBFS.

7.3. Другие причины возникновения FTBFS

Если пакет находится в main, но для него отсутствует зависимость не из main, то необходимо отправить MIR-баг: страница https://wiki.ubuntu.com/MainInclusionProcess описывает эту процедуру.

7.4. Исправление ошибки

Если удалось исправить проблему, следуйте такой же процедуре как и при любых других проблемах: создайте патч, добавьте его в ветку или баг bzr, подпишите ubuntu-sponsors, а потом попробуйте добиться его добавления в исходный пакет и/или в Debian.