我需要创建一个新的.deb包Realxtend项目(https://github.com/realXtend/naali)。这是一个包含大量依赖项和自动bash脚本(/tools/Linux/build-deps.bash)的巨大项目,可以下载,编译和安装所有deps和可执行文件。所以我尝试了很多教程,但是我经常会遇到一些错误,因为教程已经过时了(主要是新的'规则'文件)...而且因为我不是初学者。
因此,首先,我只需要创建一个完全像简单存档的.deb文件,即不解释任何构建过程,'makefile'或其他类型的东西。我想压缩/解压缩.deb文件包含已配置所有依赖项的所有项目,例如带有任何文件夹的.zip文件,解压缩存档旁边的所有内容。
我有两个文件夹/ 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 ... - &gt;请参阅Phpdna链接和特定来源打包,我了解错误并使用dpkg-source
cmd:http://debian-handbook.info/browse/wheezy/sect.source-package-structure.html
2)如何对我的项目进行'debianization'? - &GT; dh_make
然后dpkg-buildpackage -rfakeroot
,这是(a)好方法
3)我的错误在哪里? - &GT; empty-binaries-files lintian警告是正常的,然后是错误的cmd:需要dpkg-source
,而不是dpkg-deb
4)我应该用$ {shlibs:Depends}做什么? - &GT;一个自动的lib-deps-links事情,我现在不介意
5)为什么我有一个空二进制包? - &GT;事实上,在我的案例中,所有已构建的数据都保留在.orig.tar.gz
非常感谢你能在.deb包魔法上启发我。
编辑:
所以我找到了我需要的最终cmd,只有dpkg-source -x projet-version.dsc
。我不明白.deb文件内容只会发生变化,我坚持使用debuild
和dpkg-deb -...
cmds来构建不是提取源(和任何文件)。
解决方案:
sudo apt-get install debhelper build-essential dh-make
dh_make --createorig
/ project-version + rm -rf *ex *EX README*
in / debian + fill correct / debian / {rules; copyright; changelog} dpkg-buildpackage -rfakeroot
在{project-version -us -uc
或-k0x[GPG-KEY]
dpkg-source -x projet-version.dsc
以解压缩项目 所以现在,用它添加一些自动脚本,一旦它成功,我将标记为已解决。
答案 0 :(得分:3)
首先,您需要创建一个构建文件夹和文件存档:tar czvf data.tar.gz files
然后在构建文件夹中,您必须创建一个包含一些想要的信息的控制文件:
Package: xxxxxx
Version: 0.0.1
Section: user/hidden
Priority: optional
Architecture: armel
Installed-Size: `du -ks usr|cut -f 1`
Maintainer: xxx@xxx.xx>
然后,您可以单独添加preinst,postint,prerm和postrm shell脚本来控制.deb文件的安装前和安装后以及删除前后行为,然后您可以使用tar创建控件存档:tar czvf control.tar.gz control preinst postinst prerm postrm
然后你需要一个debian-binary文件:echo 2.0 > debian-binary
。在您的构建文件夹中,您现在应该拥有以下文件:debian-binary
control.tar.gz
和data.tar.gz
。
最后,您需要ar
个包来创建.deb文件:ar -r xxx.deb debian-binary control.tar.gz
data.tar.gz
来源:https://unix.stackexchange.com/questions/30303/how-to-create-a-deb-file-manually/30330#30330