我一直在尝试打包内部代码项目,但遇到了麻烦。我可以创建一个包,但运行时实际的二进制文件并未安装
sudo dpkg -i proj_1.0.0+svn02042014-1_amd64.deb
我认为这是因为项目中没有“configure”脚本,也没有对 $DESTDIR 的引用。相反,在运行 make install 时,它只会调用一个 perl 脚本,将文件部署到终端上指定的目录中。
为了创建 debian 包我一直在做以下事情:
tar -pczf proj-1.0.0+svn02042014.tar.gz proj-1.0.0+svn02042014/
dh_make -e [email protected] -f ../proj-1.0.0+svn02042014.tar.gz
dpkg-buildpackage -rfakeroot
运行时dpkg --contents proj_1.0.0+svn02042014-1_amd64.deb
我可以清楚地看到二进制文件不在包中。包中只有一些 doc 文件(即doc\README
)
我猜想dpkg-buildpackage
不使用configure
脚本是不可能的?是这样吗?
感谢关注
编辑:
proj-1.0.0+svn02042014.tar.gz 看起来像:
proj-1.0.0+svn02042014/
--Makefile
--src/
----install.pl
----Makefile
----blah.cpp
答案1
编辑您的以包含和debian/rules
的覆盖:dh_auto_build
dh_auto_install
#!/usr/bin/make -f
%:
dh "$@"
override_dh_auto_build:
cd $(CURDIR) && make
override_dh_auto_install:
cd $(CURDIR) && make install
cd $(CURDIR) && cp ./proj_bin debian/proj/usr/bin
dh_install
它可能需要一些修改,但基本思想是从中调用你的 Makefiledebian/rules
并在其中安装二进制文件/usr/bin
。
笔记:
cd
和命令之前的空格dh
是制表符,不要替换它们。- 用你的二进制名称替换
proj_bin
(我假设只有一个)