我正在尝试从基于python2语言的项目中构建debian软件包。我正在使用py2deb来构建debian软件包,该软件包会检查“ builtDebianPackages”文件夹下的所有重复文件。 py2deb发出异常消息,因为它发现重复的文件。
我收到以下异常消息:
deb_pkg_tools.checks [21396]信息正在检查11个程序包归档文件中的重复文件。 py2deb.cli [21396]错误捕获了未处理的异常!
回溯(最近通话最近一次):
文件“ /home/local/lib/python2.7/site-packages/py2deb/cli.py”,主行第200行
档案,关系= converter.convert(参数)
convert中的文件“ /home/local/lib/python2.7/site-packages/py2deb/converter.py”,第763行
check_duplicate_files(generated_archives,cache = get_default_cache())
check_duplicate_files中的文件“ /home/local/lib/python2.7/site-packages/deb_pkg_tools/checks.py”,行166
提高DuplicateFilesFound(delimiter.join(summary))
DuplicateFilesFound:在3个程序包归档中找到1个重复文件!
发现3个程序包之间有1个冲突:
- /home/builtDebianPackages/http.deb
- /home/builtDebianPackages/common.deb
- /home/builtDebianPackages/tcp.deb
这些软件包包含1个冲突:
- /usr/lib/python2.7/dist-packages/utilityProject/ init .py
提示:如果包装内容正确,则可以解决这些问题 通过将软件包标记为冲突来实现冲突。你这样做 添加“冲突”和“提供”字段并将其设置为 共同的价值。那应该使此消息静音。
我需要找到一种方法来绕过这些重复的文件错误消息,以便构建debian软件包。添加“冲突”和“提供”字段对我没有帮助(每当我尝试安装以这种方式构建的软件包时都会遇到问题。)
目录结构如下:
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软件包或任何externalDependentProject软件包。
但是模块之间存在内部依赖关系:http依赖于common和tcp,tcp依赖于common。由于内部依赖性,我无法分别构建tcp或http软件包。
有一种解决方法:在构建debian软件包后立即删除重复文件( init .py)(构建common.deb,删除common的 init .py,构建) tcp.deb,删除tcp的 init .py等...)
目前,我正在使用此替代方法,但这并不是理想的解决方案,因为只要项目中有更改,构建脚本就需要维护。
理想的解决方案是应更改“ utilityProject”的目录/文件结构,以确保没有重复的 init .py文件。许多模块在内部(utilityProject内部模块)和外部(externallyDependentProjectA-B)都依赖utilityProject。更改文件/目录结构很容易打破这些包括级别依赖性的内容。
对可能的理想解决方案有何想法?甚至有可能吗? :)