Не собирается из исходного кода, не устанавливается

На этой странице описана политика в отношении пакетов, которые больше не собираются или не устанавливаются и требуют внимания разработчиков.

Расписание большинства выпусков Fedora включает массовую пересборку (например, массовая пересборка Fedora 27, массовая пересборка Fedora 28) для обновления пакетов с учётом новых возможностей компилятора, упаковки, флагов сборки и т. д. Это удобная возможность выявить все пакеты, которые больше не собираются должным образом.

Глоссарий

FTBFS

Fails To Build From Sources (не собирается из исходного кода)

FTI

Fails To Install (не устанавливается, обычно из-за нарушенных зависимостей)

Удаление пакетов при давних ошибках FTBFS и FTI

2026

Пакеты, которые не собираются или не устанавливаются, будут осиротевшими и/или выведены из обращения по истечении определённого времени.

  1. Если пакет не собирается из исходного кода или не устанавливается, любая заинтересованная сторона может создать отчёт об ошибке в Bugzilla, блокирующий трекер FTBFS/FTI, предоставив информацию о сбое.

    • Ошибка о сбое сборки должна блокировать трекер FTBFS для соответствующего выпуска, например F45FTBFS для Fedora 45.

    • Ошибка о сбое установки должна блокировать трекер FTI для соответствующего выпуска, например F45FailsToInstall для Fedora 45.

    • При необходимости одна ошибка может блокировать несколько трекеров. Докладчикам рекомендуется сначала поискать дубликаты.

  2. Сопровождающие должны либо исправить и закрыть ошибку, либо подтвердить, что они работают над решением, установив состояние ASSIGNED.

  3. Если ошибка FTBFS или FTI остаётся в состоянии NEW как минимум 1 неделю, любая заинтересованная сторона может установить NEEDINFO, запрашивая у сопровождающего ответ.

  4. Если ошибка остаётся в состоянии NEW как минимум ещё 3 недели после NEEDINFO (= в сумме как минимум 4 недели), любая заинтересованная сторона может отправить ещё один комментарий, запрашивая у сопровождающего ответ.

  5. Если ошибка остаётся в состоянии NEW как минимум ещё 4 недели после второго комментария (= в сумме как минимум 8 недель), пакет будет осиротевшим. Осиротение можно запросить через задачу releng.

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

  7. Примерно за шесть недель до массового ветвления Fedora N пакеты, которые не были успешно пересобраны как минимум в Fedora N-2, собираются, и еженедельные напоминания отправляются затронутым сопровождающим и в список рассылки Fedora devel.

  8. Примерно за неделю до массового ветвления Fedora N пакеты, которые не были успешно пересобраны как минимум в Fedora N-2, будут выведены из обращения при условии, что в списке рассылки devel было как минимум 5 предупреждений. Состояние ошибки не влияет на этот вывод из обращения. Это можно запросить через задачу releng.

  9. За неделю до запланированного замораживания бета-версии любые пакеты, которые имеют открытые ошибки FTI в состоянии NEW как минимум 8 недель с как минимум 2 напоминающими комментариями, будут выведены из обращения из соответствующего выпуска и rawhide (в дополнение к осиротению). (Задачу releng для этого нужно открыть как минимум за неделю до замораживания, но можно и раньше.)

  10. Предыдущий пункт повторяется для финального замораживания.

    Пример вывода из обращения по FTBFS

    Незадолго до ветвления Fedora 31 пакеты, которые последний раз успешно пересобирались в Fedora 28 (или даже раньше), будут выведены из обращения. Ко времени GA Fedora 31 все пакеты были пересобраны в текущей поддерживаемой Fedora (как минимум Fedora 29).

(Фактически пакеты, которые не собираются, будут выведены из обращения через 14 недель или раньше, если нет ответа сопровождающего и пакет осиротел, или через 13 месяцев, если сопровождающий отвечает, но пакет не исправлен.)

Когда releng выполняет массовую пересборку, releng открывает ошибки FTBFS для любых пакетов, которые не собираются. Любой может отправлять еженедельные напоминания и запрашивать осиротение/вывод из обращения пакетов — иными словами, процедуру можно применять вручную. В любой момент releng может автоматизировать любые из упомянутых выше шагов, но это не обязательно.

Всякий раз, когда открыта задача releng, пожалуйста, ссылайтесь на неё из отчёта об ошибке.

Пакеты, исключённые из этой политики

Что делать, если вы получили ошибку FTBFS?

  • Прочитайте журналы. К каждой ошибке FTBFS должны быть приложены журналы сборки.

  • Если сборка вашего пакета не удаётся из-за ошибки в вашем пакете:

    1. Исправьте обнаруженные проблемы и зафиксируйте изменения.

    2. Соберите пакет. Исправленный пакет попадёт в rawhide, как правило, на следующий день. Если ветвление уже произошло, также исправьте сборку в ветке.

    3. Если сборка успешна, закройте ошибку как CLOSED: RAWHIDE и укажите номер версии пакета в поле Fixed In Version. Вот шаблон командной строки для опытных пользователей: bugzilla modify --close RAWHIDE <bug-number> --comment 'Built successfully in rawhide' -F <package-nevr>

    4. Если ветвление уже произошло, но bodhi ещё не активирован, также соберите пакет в ветке.

    5. Если bodhi уже активирован для ветки, также сделайте обновление. Обновление следует сделать, даже если ветка уже выпущена.

  • Если сборка вашего пакета не удаётся из-за ошибки в другом пакете (например, ошибки компилятора или отсутствующей зависимости):

    1. Найдите существующую ошибку для этого пакета, описывающую проблему. Установите для своей ошибки «Depends on» (зависит от) этой другой ошибки. Не меняйте компонент своей ошибки на другой пакет, иначе против вас будет создано больше ошибок FTBFS.

    2. Когда эта другая ошибка будет закрыта, вы, как обычно, получите письмо от bugzilla. Пересоберите свой пакет с помощью пробной сборки koji, чтобы убедиться, что он снова собирается чисто. Действуйте согласно пунктам 2–5 выше.

  • Если пакет больше не полезен проекту Fedora, его следует вывести из обращения.

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