构建Python项目的.deb失败 - dpkg-buildpackage尝试将文件删除为目录?
这是我第二次尝试创建一个deb文件。第一次是一个C语言项目,我使用了FPM,结果非常好,虽然打包的方式不太理想,但它确实能用。不过这次是一个Python项目(GNS3),我想做得更规范一些,因为既然要做,就应该做到最好。话虽如此,现在我只希望能得到一个能用的.deb文件。
问题是:我一直在修改GNS3这个项目,最后一步就是把它重新打包成一个.deb文件。我知道这是可以做到的,因为它已经在Ubuntu的仓库里了,但我查资料发现,Debian的一个叫Erik Wenzel的人曾经做过这个包,但他现在不在了。而GNS3的开发者似乎更关注Windows,对打包的知识也不太了解(“据说” - 我最近问过他们,但还没收到回复,如果有消息我会把他们提供的信息加到这个问题里)。
我尝试了各种方法来获取一个debian包,但最后一个方法看起来最有希望。我使用了(来自:https://pypi.python.org/pypi/stdeb):
python setup.py --command-packages=stdeb.command bdist_deb
这给了我一个压缩包,然后我尝试:
dpkg-buildpackage -rfakeroot -uc -us
但没有成功。它的输出显示了错误(摘录自最后部分):
...
dh_python2 -O--buildsystem=python_distutils
dh_usrlocal -O--buildsystem=python_distutils
dh_usrlocal: debian/python-gns3/usr/local/share/examples/gns3/baseconfig.txt is not a directory
dh_usrlocal: debian/python-gns3/usr/local/share/examples/gns3/baseconfig_sw.txt is not a directory
rmdir: failed to remove `debian/python-gns3/usr/local/share/examples/gns3': Directory not empty
dh_usrlocal: rmdir debian/python-gns3/usr/local/share/examples/gns3 returned exit code 1
make: *** [binary] Error 25
dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2
这些错误是正确的(?!) - 这两个文件不是目录,而是文本文件,并且它们似乎没有什么特别的地方:
drwxr-xr-x 2 steved swdept 4096 Feb 27 16:57 ./
drwxr-xr-x 3 steved swdept 4096 Feb 27 16:57 ../
-rw-r--r-- 1 steved swdept 3146 Feb 26 15:00 baseconfig_sw.txt
-rw-r--r-- 1 steved swdept 257 Feb 26 15:00 baseconfig.txt
看起来STDEB的工作是正常的,但我不能确定。可能它做了一些导致dpkg-buildpackage失败的事情。我希望有人能看到这个问题,然后说:“当然这样不行,你需要做x和y,然后它就能构建了。”或者至少给我一些建议:“试试这个和那个”。
如果我能搞定这个,我也可以把这些知识反馈给GNS3项目,那就太好了。
任何帮助都非常感谢。
谢谢
Steve
2 个回答
不要在 /usr/local
这个地方安装任何东西。如果你想打包一个已经有官方版本的软件的新版本,不要从头开始做一个新的包,而是修改现有的那个包。
只需在你的 debian/rules 文件中加入 override_dh_usrlocal:
这一行,这样就可以停止 dh_usrlocal 的运行。我觉得这个程序实际上是导致你遇到问题的原因。我之前也遇到过类似的情况,做了这个之后就解决了我的问题。