gpt4 book ai didi

package - 我需要我的Debian规则文件来简单地将文件复制到它的目标

转载 作者:行者123 更新时间:2023-12-03 08:37:38 25 4
gpt4 key购买 nike

我有一个大型项目,其中包含以下文件:

  • 一些第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政策手册》和一些操作方法,这些方法表明您 不应更改规则文件以使用 mkdir创建目录,并且通常有一个 dh_ 应用程序(例如dh_installdirs等)可以几乎可以满足您的安装需求。这些 dh_ 相关应用程序的手册页充其量是粗略的,我是一个“示例”类的家伙。

    就是说,我对获得 规则文件以将各种预编译的二进制文件和Ruby / Rails文本文件安装到所需位置的最佳方法有些困惑。

    这是我最初的 规则文件。这几乎是dh_make创建的标准样板规则文件。我的想法是,我应该注释掉 install 之外的所有部分,然后在该部分中找到合适的命令来创建目录,复制文件等。

    任何意见或建议,不胜感激。
    #!/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软件包安装的 文件,而不是文件。 Debian建议以 /usr/share/yourcompany/安装。正如 juzzlin在下面指出的那样,Ubuntu软件中心可能有不同的要求。

    更具体地说,您的 mypackage.install文件应如下所示:
    src/bin/* usr/bin
    src/etc/* etc/

    关于package - 我需要我的Debian规则文件来简单地将文件复制到它的目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3214319/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com