Я пытаюсь собрать пакеты debian из проекта, основанного на языке python2.Я использую py2deb для сборки пакетов Debian, который проверяет все дубликаты файлов в папке «builtDebianPackages».py2deb выдает сообщение об исключении, так как находит дубликаты файлов.
Я получаю следующее сообщение об исключении:
deb_pkg_tools.checks [21396] INFO Проверка наличия дубликатов файлов в 11 архивах пакетов.. py2deb.cli [21396] ОШИБКА Обнаружено необработанное исключение!
Трассировка (последний последний вызов):
File "/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 (generate_archives, cache = get_default_cache ())
File" /home/local/lib/python2.7/site-packages / deb_pkg_tools / check.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
Одно очевидное решение, которое приходит на ум, - это создавать общие пакеты, tcp и http debian отдельно, а затем создавать пакет utilityProject или любые пакеты externallyDependentProject.
Но существуют внутренние зависимости между модулями: http зависит от общего и tcpTCP зависит от общего.Из-за внутренних зависимостей я не могу собрать пакеты tcp или http отдельно.
Существует обходной путь: удаление дублирующихся файлов ( init .py) сразу после сборки пакетов debian (сборка общая.deb, удалить общие init .py, собрать tcp.deb, удалить tcp init .py и так далее ...)
В данный момент яиспользуя этот обходной путь, но это не идеальное решение, потому что сценарий сборки будет нуждаться в обслуживании всякий раз, когда происходят изменения в проектах.
Идеальным решением является то, что структура каталогов / файлов «utilityProject» должна быть изменена втаким образом, нет дубликатов init .py файлов.Многие модули зависят от utilityProject как внутренне (внутренние модули utilityProject), так и внешне (externallyDependentProjectA-B).Изменение структуры файлов / каталогов легко нарушит их, включая зависимости уровня.
Есть идеи для возможного идеального решения?Или это вообще возможно?:)