Дублируйте файлы 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 пакетами:
- /home/builtDebianPackages/http.deb
- /home/builtDebianPackages/common.deb
- /home/builtDebianPackages/tcp.deb
Эти пакеты содержат 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). Изменение структуры файла / каталога может легко сломаться, включая зависимости уровня.
Есть идеи для возможного идеального решения? Или это вообще возможно?:)