Chi*_*tle 33 debian rules package deb
我有一个大项目,我们有以下文件:
该产品将安装在我的雇主已选择的设备硬件上,使用Ubuntu Linux(Lucid)作为目标操作系统,我们的目标是将存档作为Debian软件包分发,以简化安装和升级.此外,我们还有许多ERB模板,我们需要根据每个客户"填写"适当的值,因此使用postinst脚本对我们的目的特别方便.
作为旁注,Debian软件包将存储在我们内部管理的服务器存储库中.
在这个阶段,我使用dh_make来创建debian目录和相关文件(例如,规则,控制等),但生成的规则文件对我来说似乎有点过分.
基于此描述,我真正需要的"规则"文件只是将文件从源目录(或存档内)复制到下面显示的目标目录:
我已经阅读了Debian Policy Manual和几个How-To,它们表明你不应该改变规则文件来使用mkdir来创建目录,而且通常有一个dh_ app(例如,dh_installdirs,et.al.)可以适合你的几乎所有安装目的都需要.这些dh_相关应用程序的手册页充其量只是粗略的,我是一个"榜样"的人.
也就是说,我最好的办法是让我的规则文件将我的各种预编译的二进制文件和Ruby/Rails文本文件安装到所需的位置.
这是我的初始规则文件.它几乎是dh_make创建的标准样板规则文件.我的想法是我应该注释掉除安装之外的所有部分,然后在该部分中找到适当的命令来制作目录,复制文件等.
非常感谢任何建议或意见.
#!/usr/bin/make -f
package = testapp
CC = gcc
CFLAGS = -g -Wall
ifeq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS += -O2
endif
#export DH_VERBOSE=1
clean:
dh_testdir
dh_clean
rm -f build
install: build
dh_clean
dh_installdirs
echo "Place the Install Script here"
cp $(CURDIR)/testapp-2.0.tar.gz $(CURDIR)/debian/$(package)/opt/testapp-2.0
echo "Finished copying folders"
build:
touch build
binary-indep: install
# There are no architecture-independent files to be uploaded
# generated by this package. If there were any they would be
# made here.
binary-arch: install
dh_testdir -a
dh_testroot -a
dh_installdocs -a
dh_installchangelogs -a
dh_strip -a
dh_compress -a
dh_fixperms -a
dh_installdeb -a
dh_shlibdeps -a
dh_gencontrol -a
dh_md5sums -a
dh_builddeb -a
binary: binary-indep binary-arch
.PHONY: binary binary-arch binary-indep clean checkroot
Uma*_*ang 59
虽然你已经有了自己的答案,但我会指出一些事情.
你似乎是以一种非常复杂的方式做到这一点.如果您只需要将文件复制到某些目录中,请debian/mypackagename.install使用以下格式编写:
path/to/file/relative/to/source/root path/to/install/relative/to/system/root
Run Code Online (Sandbox Code Playgroud)
(不要/在之前/usr,或者/opt或者目标目录之前添加.请阅读man dh_install以获取更多信息)
然后你debian/rules可以:
#!/usr/bin/make -f
%:
dh $@
Run Code Online (Sandbox Code Playgroud)
如果您的源根目录中有某种makefile等,请将其附加到上面的rules文件中:
override_dh_auto_build:
override_dh_auto_install:
Run Code Online (Sandbox Code Playgroud)
不要忘了把7在debian/compat.
此外,您不应该将文件安装到/opt/或/usr/local/等.这些是针对Debian软件包未安装的文件.Debian建议安装/usr/share/yourcompany/.正如juzzlin在下面指出的那样,Ubuntu软件中心可能有不同的要求.
更具体地说,您的mypackage.install文件应如下所示:
src/bin/* usr/bin
src/etc/* etc/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32350 次 |
| 最近记录: |