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.