我有一个大项目,我们有以下文件:
- 一些第 3 方预编译的二进制文件
- 我们自己的内部二进制文件
- Ruby 脚本集合
- 一个相当大的 Ruby on Rails 项目
该产品将安装在我的雇主已经选择的设备硬件上,使用 Ubuntu Linux (Lucid) 作为目标操作系统,我们的目标是将存档作为 Debian 软件包分发以简化安装和升级。此外,我们有许多 ERB 模板,我们需要在每个客户的基础上“填写”适当的值,因此postinst脚本的使用对于我们的目的来说特别方便。
附带说明一下,Debian 软件包将存储在我们内部管理的服务器存储库中。
在这个阶段,我已经使用dh_make创建了 Debian 目录和相关文件(例如,规则、控件等),但是生成的规则文件对于我的目的来说似乎是多余的。
根据这个描述,我真正需要“规则”文件做的只是将文件从源目录(或存档中)复制到如下所示的目标目录:
/opt/company_product/3rd_party_binaries/bin
/opt/company_product/3rd_party_binaries/etc
/opt/company_product/in_hourse_binaries/bin
/opt/company_product/in_hourse_binaries/etc
/opt/company_product/ruby
/opt/company_product/rails_project
/opt/company_product/etc
/opt/company_product/shared/logs
/opt/company_product/shared/tmp
/opt/company_product/shared/license
...等等。
我已经阅读了 Debian Policy Manual 和几个 How-To,它们表明您不应该更改mkdir
用于创建目录的规则文件,并且通常有一个dh_应用程序(例如 dh_installdirs 等)可以满足您的需求几乎任何安装目的。这些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