我需要我的Debian规则文件简单地复制文件到它的目标位置

问题描述 投票:33回答:2

我有一个大型项目,我们有以下文件。

  • 一些第三方预编译的二进制文件
  • 我们自己的二进制文件
  • Ruby脚本集
  • 一个可观的Ruby on Rails项目

该产品将安装在我的雇主已经选定的设备硬件上,使用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
package debian rules deb
2个回答
60
投票

虽然你已经有了自己的答案,但我还是要指出几件事。

你似乎做得很复杂。如果你只是需要将文件复制到特定的目录中,那么写个 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:

不要忘记把 7debian/compat.

另外,你不应该将文件安装到 /opt//usr/local/等。这些都是针对文件 由Debian软件包安装。蝶变 建议安装在 /usr/share/yourcompany/. 作为 嗡嗡声 下面指出,Ubuntu软件中心可能有不同的要求。

更具体地说,您的 mypackage.install 文件应该是这样的。

src/bin/* usr/bin
src/etc/* etc/

-2
投票

你可以安装 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
© www.soinside.com 2019 - 2024. All rights reserved.