在使用py2deb

时间:2019-01-31 15:06:29

标签: python-2.7 debian deb debian-based

我正在尝试从基于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个冲突:

     
      
  1. /home/builtDebianPackages/http.deb
  2.   
  3. /home/builtDebianPackages/common.deb
  4.   
  5. /home/builtDebianPackages/tcp.deb
  6.   
     

这些软件包包含1个冲突:

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

提示:如果包装内容正确,则可以解决这些问题   通过将软件包标记为冲突来实现冲突。你这样做   添加“冲突”和“提供”字段并将其设置为   共同的价值。那应该使此消息静音。

我需要找到一种方法来绕过这些重复的文件错误消息,以便构建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。更改文件/目录结构很容易打破这些包括级别依赖性的内容。

对可能的理想解决方案有何想法?甚至有可能吗? :)

0 个答案:

没有答案