【问题标题】:custom install hook and rpmbuild自定义安装钩子和 rpmbuild
【发布时间】:2016-07-16 00:57:42
【问题描述】:

我有一个使用自动工具进行构建/安装/等的软件包。它是一个用 C++ 编写的 Python 模块。 (这并不重要,只是要知道我必须安装的 python 脚本不是正在构建的内容的一部分,即它们不是xxxxx_SOURCES 主要的。)这个模块仅用于一些“单元测试”我们团队在硬件解决方案中分发的驱动程序。由于各种原因,我需要在系统中“安装”python 单元测试。

由于这些 python 脚本不是模块的一部分,我在 Makefile 中单独管理安装。这是我在Makefile.am 中的内容:

EXTRA_DIST = setupenv.sh bootstrap tests

dist-hook:
    rm -rf $$(find $(distdir)/tests -name \*.swp -o -name \*.pyc)


install-exec-hook:
    mkdir -p $(prefix)/unit_tests/unittest2
    for f in tests/*.py; do \
        cp $$f $(prefix)/unit_tests; \
    done

    for f in tests/unittest2/*.py; do \
        cp $$f $(prefix)/unit_tests/unittest2; \
    done

uninstall-hook:
    rm -r $(prefix)/unit_tests

这工作得很好,除了在模块的rpmbuild 期间。 install-exec-hook 规则未正确写入以创建 rpm 进程重定向它的目录。也就是说,当mkdir - $(prefix)/... 被执行时,脚本会尝试创建目录:/opt/oursw/...。应该如何重写这条规则,以便 rpmbuild 将它们放在与模块安装相同的位置?

【问题讨论】:

    标签: makefile rpm autotools rpmbuild


    【解决方案1】:

    您想将$(DESTDIR) 添加为所有这些目录的前缀。那是standard for autotools installs

    顺便说一句,您可能还想查看_SCRIPTS 后缀,它允许“make install”以“官方”方式为您复制您的脚本,首先消除了对这个 hack 的需要.

    【讨论】:

    • 谢谢。最后我做了这个,但作为一个实验。我正在利用的过程,在我加入这个团队之前,会在调用make install 时设置 DESTDIR。我真的不想回答我自己的问题,而且我不确定我这样做的方式是否正确。
    猜你喜欢
    • 2021-07-15
    • 2017-08-27
    • 1970-01-01
    • 2013-05-01
    • 2014-08-31
    • 2015-06-14
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多