我有一个大型项目,我们有以下文件。
该产品将安装在我的雇主已经选定的设备硬件上,使用Ubuntu Linux (Lucid)作为目标操作系统,我们的目标是将存档作为Debian包分发,以方便安装和升级。 此外,我们有许多 ERB 模板,我们需要在每个客户的基础上用适当的值来 "填充",所以使用的是 诉讼后 脚本对我们来说特别方便。
顺便说一下,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 政策手册和一些指南,其中指出您应该做到以下几点 不该 改变规则文件,使用 mkdir
来创建目录,一般有一个 dh_ (例如,dh_installdirs等),几乎可以满足你的任何安装目的的需要。 这些程序的手册页 dh_ 相关的应用最多只是粗略的了解,而我是一个 "榜样 "型的人。
说到这里,我有点迷茫了,什么是最好的方法,让我的 规矩 文件来安装各种预编译的二进制文件和RubyRails文本文件到需要的位置。
下面是我最初的 规矩 文件。 这几乎是一个标准的模板规则文件,由 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
虽然你已经有了自己的答案,但我还是要指出几件事。
你似乎做得很复杂。如果你只是需要将文件复制到特定的目录中,那么写个 debian/mypackagename.install
格式如下。
path/to/file/relative/to/source/root path/to/install/relative/to/system/root
(不要在前面加上 /
之前 /usr
或 /opt
或任何你的目标目录。读取 man dh_install
更多信息)
那么你的 debian/rules
可以。
#!/usr/bin/make -f
%:
dh $@
如果你在你的源代码根目录下有一些makefile之类的东西,那就把这个附加到上面去吧 rules
文件。
override_dh_auto_build:
override_dh_auto_install:
不要忘记把 7
在 debian/compat
.
另外,你不应该将文件安装到 /opt/
或 /usr/local/
等。这些都是针对文件 不 由Debian软件包安装。蝶变 建议安装在 /usr/share/yourcompany/
. 作为 嗡嗡声 下面指出,Ubuntu软件中心可能有不同的要求。
更具体地说,您的 mypackage.install
文件应该是这样的。
src/bin/* usr/bin
src/etc/* etc/
你可以安装 CDBS 并像这样修改规则文件
#!/usr/bin/make -f
include /usr/share/cdbs/1/rules/debhelper.mk
binary-install/package_name::
mkdir debian/$(cdbs_curpkg)/destination_path
cp path_of_your_files debian/$(cdbs_curpkg)/destination_path