我快疯了。我构建了一个不需要任何实际编译的工具 - 它只是一个 Perl 脚本 - 当我运行bzr builddeb
它时,我得到一个 WORKING .deb 文件,它会在我运行时将我的脚本 - zfsync - 复制到 /usr/bin/zfsync dpkg -i zfsync_1.0.0-0ubuntu3_all.deb
。
但是,当我运行bzr builddeb -S
并将dput
生成的 source.changes 文件放到我的 PPA 中时,它会毫无错误地构建……但是 apt-get install zfsync 会导致“成功”安装,只是我的二进制文件实际上并没有放在 /usr/bin 中!
我有一个 debian/install 文件,里面zfsync usr/bin
没有其他内容。出于无奈,我创建了一个简单的 Makefile,如果make install
运行,它会将 zfsync 复制到 /usr/bin。不过,似乎没有什么帮助,而且 Canonical 的基于 arm 的 PPA 农场上半小时的“构建”时间让我抓狂。
当我执行 apt-get source zfsync 时,查看获取的源目录时,没有显示debian/install
任何文件。我不知道 PPA 为什么要删除该文件,但显然是删除了 - 如果没有它,我的脚本实际上就不会安装。
拜托,有没有什么包装方面的高手?帮帮忙!
答案1
我仍然不知道为什么它会搞砸我 - 我严格按照 Ubuntu 打包指南进行操作 - 但最终我让它工作了。
我最终做的是:apt-get source zfsync
进入一个完全不同的目录,然后调查那里有什么。
除了包含我所有东西的“zfsync-1.0.0”文件夹外,还有一个“zfsync”文件夹,里面有usr/share/doc
但usr/bin
什么都没有。我手动创建了usr/bin/zfsync
“zfsync”文件夹,确定“debian/install”中有“zfsync usr/bin”,然后执行了bzr init
、bzr commit
、dput ppa:jrssnet/zfsync zfsync_1.0.0-0ubuntu5_source.changes
…… 五到十分钟后,成功了!Ubuntu 的构建过程实际上不仅产生了 .deb,而且还产生了一个真正安装我该死的脚本的 .deb。:)