我在使用 debhelper 之前构建了我的包,但我遇到了一个非常令人沮丧的问题。
这是我的文件树:
usr/
`-- share
|-- applications
| `-- create-launcher.desktop
`-- create-launcher
|-- bin
| |-- callbacks.py
| |-- callbacks.pyc
| |-- create_launcher.py
| |-- create_launcher.pyc
| |-- file_handler.py
| |-- file_handler.pyc
| |-- make_launcher.py
| |-- make_launcher.pyc
| |-- message_dialog.py
| |-- message_dialog.pyc
| `-- session
|-- data
| `-- gui.glade
|-- images
| `-- icon_48x48.png
`-- README
你可以看到,我有一些 python pyc 文件,它们是二进制文件和图像二进制文件。我不知道这是不是我的问题,但是我已经运行了
dh_make
生成 debian 目录,我已经修改了所有必要的文件。
如果我运行:
dh_install
一切都进入正确的 debian/create-launcher/usr ... 位置。
不过,如果我运行:
debuild -uc -us
我得到以下输出:
dpkg-buildpackage -rfakeroot -D -us -uc
dpkg-buildpackage: source package create-launcher
dpkg-buildpackage: source version 0.1.2+alpha-1
dpkg-buildpackage: source changed by Narnie Harshoe <signupnarnie@gmail.com>
dpkg-source --before-build create-launcher-0.1.2+alpha
dpkg-buildpackage: host architecture amd64
fakeroot debian/rules clean
dh clean
dh_testdir
dh_auto_clean
dh_clean
dpkg-source -b create-launcher-0.1.2+alpha
dpkg-source: info: using source format `3.0 (quilt)'
dpkg-source: info: building create-launcher using existing ./create-launcher_0.1.2+alpha.orig.tar.gz
dpkg-source: warning: ignoring deletion of directory share
dpkg-source: warning: ignoring deletion of directory share/applications
dpkg-source: warning: ignoring deletion of file share/applications/create-launcher.desktop
dpkg-source: warning: ignoring deletion of directory share/create-launcher
dpkg-source: warning: ignoring deletion of file share/create-launcher/README
dpkg-source: warning: ignoring deletion of directory share/create-launcher/data
dpkg-source: warning: ignoring deletion of file share/create-launcher/data/gui.glade
dpkg-source: warning: ignoring deletion of directory share/create-launcher/images
dpkg-source: warning: ignoring deletion of file share/create-launcher/images/icon_48x48.png
dpkg-source: warning: ignoring deletion of directory share/create-launcher/bin
dpkg-source: warning: ignoring deletion of file share/create-launcher/bin/message_dialog.py
dpkg-source: warning: ignoring deletion of file share/create-launcher/bin/create_launcher.py
dpkg-source: warning: ignoring deletion of file share/create-launcher/bin/callbacks.py
dpkg-source: warning: ignoring deletion of file share/create-launcher/bin/make_launcher.py
dpkg-source: warning: ignoring deletion of file share/create-launcher/bin/file_handler.py
dpkg-source: warning: newly created empty file 'usr/share/applications/create-launcher.desktop' will not be represented in diff
dpkg-source: error: cannot represent change to create-launcher-0.1.2+alpha/usr/share/create-launcher/images/icon_48x48.png: binary file contents changed
dpkg-source: error: add usr/share/create-launcher/images/icon_48x48.png in debian/source/include-binaries if you want to store the modified binary in the debian tarball
dpkg-source: error: cannot represent change to create-launcher-0.1.2+alpha/usr/share/create-launcher/bin/file_handler.pyc: binary file contents changed
dpkg-source: error: add usr/share/create-launcher/bin/file_handler.pyc in debian/source/include-binaries if you want to store the modified binary in the debian tarball
dpkg-source: warning: executable mode 0755 of 'usr/share/create-launcher/bin/create_launcher.py' will not be represented in diff
dpkg-source: error: cannot represent change to create-launcher-0.1.2+alpha/usr/share/create-launcher/bin/message_dialog.pyc: binary file contents changed
dpkg-source: error: add usr/share/create-launcher/bin/message_dialog.pyc in debian/source/include-binaries if you want to store the modified binary in the debian tarball
dpkg-source: error: cannot represent change to create-launcher-0.1.2+alpha/usr/share/create-launcher/bin/make_launcher.pyc: binary file contents changed
dpkg-source: error: add usr/share/create-launcher/bin/make_launcher.pyc in debian/source/include-binaries if you want to store the modified binary in the debian tarball
dpkg-source: error: cannot represent change to create-launcher-0.1.2+alpha/usr/share/create-launcher/bin/create_launcher.pyc: binary file contents changed
dpkg-source: error: add usr/share/create-launcher/bin/create_launcher.pyc in debian/source/include-binaries if you want to store the modified binary in the debian tarball
dpkg-source: error: cannot represent change to create-launcher-0.1.2+alpha/usr/share/create-launcher/bin/callbacks.pyc: binary file contents changed
dpkg-source: error: add usr/share/create-launcher/bin/callbacks.pyc in debian/source/include-binaries if you want to store the modified binary in the debian tarball
dpkg-source: error: unrepresentable changes to source
dpkg-buildpackage: error: dpkg-source -b create-launcher-0.1.2+alpha gave error exit status 2
我不明白为什么要说“忽略目录共享的删除”等等。首先,它应该从文件夹 usr 开始,而不是共享。其次,它们不会被删除。
自从我滚动我的 tarball 后没有文件发生变化,所以我不明白为什么二进制文件会出错。
为什么它在 share/而不是 usr/下查找?
它似乎在运行 dh 的 dh_install 部分之前就已经死了。
非常感谢帮助。
最佳答案
经过大量阅读和反复试验,我弄清楚了哪里出了问题。我跑了一个
dpkg-source -b create-launcher_0.1.2+alpha
由于某种原因,它无法删除解压后的 create-launcher_0.1.2+alpha.orig.tar.gz 文件目录,该目录看起来像 create-launcher-0.1.2+alpha.orig.6h0gQo。我查看了它,它以文件夹开头:share,而不是 usr,就像我在上面的问题中提到的那样。这让我开始思考我是如何搞砸了构建 tar 的。果然,我用 usr 作为顶级文件夹构建了它,它“砍掉”了它以进行比较。我需要使用 create-launcher_0.1.2+alpha/作为顶级目录来构建 tar。因此它被切断,允许“usr”目录在每棵树的下方存在差异。
它仍然没有正确构建。我需要这个命令:
dpkg-source --include-binaries -b create-launcher_0.1.2+alpha
我发现您使用“--source-option”参数来执行此操作,例如:
debuild -uc -us --source-option=--include-binaries
这仍然失败,因为我在/bin 目录中的 vim session 文件显示了一个更改(我不知道为什么,但我需要忽略它。dpkg-source 有一些忽略选项。最后这个命令成功了:
debuild -uc -us --source-option=--include-binaries --source-option=-isession
我能够成功滚动 deb。
希望这对那里的人有所帮助。我犯了一个愚蠢的错误。我应该学习使用我的旧脚本(构建 tar),而不是每次都编写它。经验教训。
关于python - 构建 python deb 包时遇到问题,提示修改后的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9677971/