Дублируйте файлы init.py при сборке пакетов debian с помощью py2deb

Я пытаюсь собрать пакеты Debian из проекта, основанного на языке Python2. Я использую py2deb для сборки пакетов Debian, который проверяет все дубликаты файлов в папке "builtDebianPackages". py2deb выдает сообщение об исключении, потому что он находит дубликаты файлов.

Я получаю следующее сообщение об исключении:

deb_pkg_tools.checks [21396] ИНФОРМАЦИЯ Проверка на наличие дубликатов файлов в 11 архивах пакетов.. py2deb.cli[21396] ОШИБКА Обнаружено необработанное исключение!

Traceback (последний вызов был последним):

Файл "/home/local/lib/python2.7/site-packages/py2deb/cli.py", строка 200, в основном

архивы, отношения = converter.convert(аргументы)

Файл "/home/local/lib/python2.7/site-packages/py2deb/converter.py", строка 763, в конвертированном виде

check_duplicate_files(генерируемые_архивы, кеш =get_default_cache())

Файл "/home/local/lib/python2.7/site-packages/deb_pkg_tools/checks.py", строка 166, в файлах check_duplicate_files

поднять DuplicateFilesFound(delimiter.join(резюме))

DuplicateFilesFound: Найден 1 дубликат файла в 3 архивах пакетов!

Найдено 1 конфликт между 3 пакетами:

  1. /home/builtDebianPackages/http.deb
  2. /home/builtDebianPackages/common.deb
  3. /home/builtDebianPackages/tcp.deb

Эти пакеты содержат 1 конфликт:

  1. /usr/lib/python2.7/dist-packages/utilityProject/init.py

Подсказка: если содержимое пакета правильное, вы можете разрешить эти конфликты, пометив пакеты как конфликтующие. Вы делаете это, добавляя поля "Конфликты" и "Обеспечивает" и устанавливая для них общее значение. Это должно заставить замолчать это сообщение.

Мне нужно найти способ обойти эти дубликаты файлов сообщений об ошибках, чтобы собрать пакет Debian. Добавление полей 'Conflicts' и 'Provides' мне не помогает (возникают проблемы, когда я пытаюсь установить пакеты, созданные таким образом).

Структура каталогов следующая:

externallyDependentProjectA/
    ...
externallyDependentProjectB/
    ...
builtDebianPackages
    common.deb
    tcp.deb
    http.deb
    externallyDependentProjectA.deb
    externallyDependentProjectB.deb
utilityProject
    common
        setup.py
        utilityProject/
            common/
            __init__.py
    tcp
        setup.py
        utilityProject/
            tcp /
            __init__.py
    http
        setup.py
        utilityProject/
            http/
            __init__.py

Одно очевидное решение, которое приходит на ум, - это создавать общие пакеты debian, tcp и http отдельно, а затем создавать пакет utilityProject или любые пакеты externallyDependentProject.

Но между модулями существуют внутренние зависимости: http зависит от общего и tcp, tcp зависит от общего. Из-за внутренних зависимостей я не могу создавать пакеты tcp или http отдельно.

Существует обходной путь: удаление дублирующихся файлов (init.py) сразу после сборки пакетов debian (сборка common.deb, удаление init.py общего файла, сборка tcp.deb, удаление init.py tcp и т. Д.)

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

Идеальное решение заключается в том, что структура каталогов / файлов "utilityProject" должна быть изменена таким образом, чтобы не было дубликатов файлов инициализации.py. Многие модули зависят от utilityProject как внутренне (внутренние модули utilityProject), так и внешне (externallyDependentProjectA-B). Изменение структуры файла / каталога может легко сломаться, включая зависимости уровня.

Есть идеи для возможного идеального решения? Или это вообще возможно?:)

0 ответов

Другие вопросы по тегам