我需要为 Realxtend 项目创建一个新的 .deb 包(https://github.com/realXtend/naali)。这是一个巨大的项目,有很多依赖项和一个自动 bash 脚本(/tools/Linux/build-deps.bash)来下载、编译和安装所有的 deps 和可执行文件。所以我尝试了很多教程,但我经常遇到一些错误并且我被卡住了,因为教程已经过时(主要是新的“规则”文件)......而且还因为我不是开发人员。
所以,一开始,我只需要像一个简单的存档一样创建一个 .deb 文件,即不解释任何构建过程、“makefile”或其他类型的东西。我只想压缩/解压缩一个 .deb 文件,其中包含已经配置了所有依赖项的所有项目,例如带有任何文件夹的 .zip 文件,解压缩存档旁边的所有内容。
我有 2 个文件夹 /naali 和 /naali-deps,其中包含在 Ubuntu Precise x64 上运行 build-deps.bash 配置的各种文件(exe、src、lib、...)。我运行dh_make
、清理和填充 /debian 文件(更改日志、控制、版权),创建一个 gpg 密钥并运行sudo debuild -us -uc -k0xCODE
(我听说 'sudo' 它是“坏的”,但我不知道没有......)
我明白了:
dpkg-buildpackage -rfakeroot -D -us -uc
dpkg-buildpackage: warning: using a gain-root-command while being root
dpkg-buildpackage: source package realxtend
dpkg-buildpackage: source version 0-1
dpkg-buildpackage: source changed by sylvain Bicherel <sylvain.bicherel@gmail.com>
dpkg-source --before-build realxtend-0
dpkg-buildpackage: host architecture amd64
fakeroot debian/rules clean
dh clean
dh_testdir
dh_auto_clean
dh_clean
dpkg-source -b realxtend-0
dpkg-source: info: using source format `3.0 (quilt)'
dpkg-source: info: building realxtend using existing ./realxtend_0.orig.tar.gz
dpkg-source: warning: ignoring deletion of file naali-deps/build/bullet-2.81-rev2613/Extras/CDTestFramework/License.txt.bak
dpkg-source: warning: ignoring deletion of directory naali-deps/build/bullet-2.81-rev2613/autom4te.cache
dpkg-source: warning: ignoring deletion of file naali-deps/build/bullet-2.81-rev2613/autom4te.cache/traces.1
dpkg-source: warning: ignoring deletion of file naali-deps/build/bullet-2.81-rev2613/autom4te.cache/output.1
dpkg-source: warning: ignoring deletion of file naali-deps/build/bullet-2.81-rev2613/autom4te.cache/requests
dpkg-source: warning: ignoring deletion of file naali-deps/build/bullet-2.81-rev2613/autom4te.cache/traces.0
dpkg-source: warning: ignoring deletion of file naali-deps/build/bullet-2.81-rev2613/autom4te.cache/output.0
dpkg-source: info: building realxtend in realxtend_0-1.debian.tar.gz
dpkg-source: info: building realxtend in realxtend_0-1.dsc
debian/rules build
dh build
dh_testdir
dh_auto_configure
dh_auto_build
dh_auto_test
fakeroot debian/rules binary
dh binary
dh_testroot
dh_prep
dh_installdirs
dh_auto_install
dh_install
dh_installdocs
dh_installchangelogs
dh_installexamples
dh_installman
dh_installcatalogs
dh_installcron
dh_installdebconf
dh_installemacsen
dh_installifupdown
dh_installinfo
dh_installinit
dh_installmenu
dh_installmime
dh_installmodules
dh_installlogcheck
dh_installlogrotate
dh_installpam
dh_installppp
dh_installudev
dh_installwm
dh_installxfonts
dh_installgsettings
dh_bugfiles
dh_ucf
dh_lintian
dh_gconf
dh_icons
dh_perl
dh_usrlocal
dh_link
dh_compress
dh_fixperms
dh_strip
dh_makeshlibs
dh_shlibdeps
dh_installdeb
dh_gencontrol
dpkg-gencontrol: warning: Depends field of package realxtend: unknown substitution variable ${shlibs:Depends}
dh_md5sums
dh_builddeb
dpkg-deb : construction du paquet « realxtend » dans « ../realxtend_0-1_amd64.deb ».
dpkg-genchanges >../realxtend_0-1_amd64.changes
dpkg-genchanges: including full source code in upload
dpkg-source --after-build realxtend-0
dpkg-buildpackage: full upload (original source is included)
Now running lintian...
warning: the authors of lintian do not recommend running it with root privileges!
W: realxtend source: configure-generated-file-in-source naali-deps/build/celt-0.11.1/config.status
W: realxtend source: configure-generated-file-in-source naali-deps/build/celt-0.11.1/config.log
W: realxtend: new-package-should-close-itp-bug
W: realxtend: empty-binary-package
Finished running lintian.
...所以我需要帮助:
1) 你知道除了 'Debian New Maintainer' 和 irc/maillist 之外的更新和完整的教程(针对新手),比如 #debian-dev... -> 请参阅 Phpdna 链接和我理解我的错误和使用的特定源打包dpkg-source
命令:http ://debian-handbook.info/browse/wheezy/sect.source-package-structure.html
2)如何对我的项目进行“去边化”?-> 使用dh_make
then dpkg-buildpackage -rfakeroot
,这是(a)好方法
3)我的错误在哪里?-> empty-binaries-files lintian 警告是正常的,然后是错误的 cmd : need dpkg-source
, notdpkg-deb
4) 我应该如何处理 ${shlibs:Depends} ?-> 一个自动的 lib-deps-links 东西,我现在不介意
5) 为什么我有一个空二进制包?-> 事实上,在我的情况下,所有数据都已经构建在 .orig.tar.gz 中
非常感谢你能告诉我 .deb 包的魔法。
编辑:所以我找到了我需要的最后一个 cmd,只是dpkg-source -x projet-version.dsc
。我不明白 .deb 文件内容只会发生变化,我坚持使用cmds 来构建debuild
而dpkg-deb -...
不是提取源(和任何文件)。
解决方案 :
sudo apt-get install debhelper build-essential dh-make
- 使用另一个文件夹创建文件夹 /project 包含所有名为 /project-version 的项目
dh_make --createorig
在 /project-version +rm -rf *ex *EX README*
in /debian + 正确填写 /debian/{rules;copyright;changelog}dpkg-buildpackage -rfakeroot
带有-us -uc
或-k0x[GPG-KEY]
在 /project-version 中- 始终保持在一起 {project_version.orig.tar.gz(所有数据项目);project_version.debian.tar.gz (modifs); project_version_all/any.deb(修改);project_version_arch.changes(元);project_version.dsc(元)}
- 运行
dpkg-source -x projet-version.dsc
以提取项目
所以现在,去添加一些自动脚本,一旦它成功,我会标记为已解决。