Усування проблем

Проблеми з побудовою модуля

Перебудова модуля проти локального компонента

Якщо ви знайдете проблему збірки з компонентом у своєму модулі, вам захочеться створити модуль, використовуючи локальний git checkout для модуля, тож ви можете помістити виправлення там:

  • Перевіряти модуль з dist-git використовуючи fedpkg clone`як підкаталог `<path to checkouts>

  • Якщо ви не використовуєте fedora-packager-container, відредагуйте /etc/module-build-service/config.py (створіть файл, якщо його ще не існує), щоб у файлі бути такі рядки:

from copy import deepcopy
from module_build_service.common.config import LocalBuildConfiguration as DefaultLocalBuildConfiguration
from module_build_service.common.config import ProdConfiguration

class LocalBuildConfiguration(DefaultLocalBuildConfiguration):
    DISTGITS = {
        # Це просто типові значення
        "https://src.fedoraproject.org": (
            "fedpkg clone --anonymous {}",
            "fedpkg --release module sources",
        ),
        # "справжнє" встановлення None, щоб не отримати типове distgit_src_get з 'rpkg sources'
        "file://": ("git clone {repo_path}", "true"),
    }
  • Оскільки збирання усе більшої кількості модулів обмежується лише підтримуваними архітектурами (aarch64 і x86_64 для заощадження ресурсів Fedora) вам доведеться внести зміни з fm-orchestrator#1747 локально, інакше пакунки не вдасться зібрати.

  • ВІдредагуйте ваш <application>.yaml та додайте рядок сховища:

    rpms:
      libpeas:
        repository: file:///<шлях_до_копії>/libpeas
        rationale: Runtime dependency
        ref: f37
  • Використовуйте fedpkg switch-branch, щоб перейти на rfe з <application.yaml> ( або змініть ref: у <application.yaml> на rawhide)

  • Змініть дані, внесіть зміни і переконайтеся, що початкові коди було отримано за допомогою fedpkg sources

  • Спробуйте створити модуль ще раз

Швидке відлагодження prefix=/app збірки

Якщо у вас виникли проблеми зі збиранням компонента із префіксом prefix=/app і вам потрібні докладні діагностичні дані, швидким вирішенням буде тимчасово зробити так:

dnf install ~/modulebuild/cache/koji_tags/module-flatpak-runtime-f37-<latest-version>/flatpak-rpm-macros-*.x86_64.rpm

а потім спробувати повторно зібрати пакунок із fedpkg local, виправити проблеми, а потім вилучити flatpak-rpm-macros. Якщо не вилучити flatpak-rpm-macros, усі зібрані вами локально пакунки буде зібрано із _prefix=/app, і вони не працюватимуть.

Файли за межами /app

Найпоширенішою причиною помилок при збиранні пакунків є те, що якийсь з файлів пакунка встановлюється до жорстко визначеного каталогу у /usr, а не з використанням визначення каталогу макросами, зокрема %{_prefix}, `%{_libdir}`тощо. Виправлення помилки може потребувати коригування файла spec, передавання додаткових параметрів команді make і, у рідкісних випадках, виправлення файлів Makefile.

Нестиснені сторінки підручника

У поточній версії RPM-сценарії, які стискають сторінки підручника, не стискають сторінки підручника в /app. Отже, якщо є RPM

%files
[...]
%{_mandir}/man1/<command>.1.gz

Він не зможе побудувати модуль Flatpak. Рекомендація, у правилах пакування Fedora, це мати:

%{_mandir}/man1/<command>.1*

що є більш надійним, натомість майбутніх змін RPM-сценаріїв для використання різного стиснення.

Проблеми зі складанням контейнеру

Збої при встановленні пакету

Під час встановлення пакетів для складання контейнера Flatpak, набір пакунків обмежений пакетами під час виконання та пакетами вбудованими у ваш модуль. Інщі пакети у Fedora будуть ігноровані. Якщо ви бачите повідомлення про відсутні залежності, які як ви знаєте є у Fedora, це відбувається тому, що їх ігнорують через це обмеження.

fedmod rpm2flatpak повинен був додати всі необхідні залежності не під час виконання вашого модуля. Однак, наступні зміни пакування можуть вимагати оновлення вашого модуля.

Ви також можете побачити збої, якщо пакет під час виконання зростав у нову залежність та час виконання не було оновлено. Якщо пакет із залежністю, що спричиняє збій dnf не є частиною вашого модуля, необхідно помітити проблему навпроти flatpak-runtime.