【问题标题】:Add extra file into the rpm building process在 rpm 构建过程中添加额外文件
【发布时间】:2013-12-26 12:18:52
【问题描述】:

我有一个支持添加 python 插件的应用程序的源代码。我已经编写了一个 python 脚本并想构建一个自定义 rpm,默认包含我的脚本。这样我就不必在 rpm 安装后额外添加它。

现在据我了解,这有两个部分-

  1. 将文件添加到源代码中。
  2. .spec 文件中列出该文件。

我如何知道将文件放在源中的什么位置?如何指定要复制脚本的路径?规范文件包含类似的文本-

%if %{with_python}
%files python
%{_mandir}/man5/collectd-python*
%{_libdir}/%{name}/python.so

//Something like this?

// %{_libdir}/%{name}/gearman.py 
// %{_libdir}/%{name}/redis.py
%endif

【问题讨论】:

    标签: compilation rpm rpmbuild rpm-spec


    【解决方案1】:

    您需要知道将脚本文件放置在目标安装的哪个位置(例如 /usr/lib/myApp/plugins/myNiceScript.py)

    在规范文件(%install 部分)中,您必须将 %{buildroot} 下的脚本复制到目标目录(必须首先创建。

    %install
    ...
    # in case the dir does not exist:
    mkdir -p %{buildroot}/usr/lib/myApp/plugins
    
    cp whereitis/myNiceScript.py   %{buildroot}/usr/lib/myApp/plugins
    

    最后,您必须在 %files 部分定义文件标志。例如。如果您的文件必须在根目录下有 644:

    %files
    ...
    %defattr(644,root,root)
    /usr/lib/myApp/plugins/myNiceScript.py
    

    如果要在安装期间创建插件目录,您也需要定义这些标志:

    %defattr(755,root,root)
    %dir /usr/lib/myApp/plugins
    

    【讨论】:

    • 你能详细说明whereitis吗?是否一定在tar.gztar.bz2 内?
    • 你可以选择任何你喜欢的。附加脚本的位置(源)无关紧要。 rpm 文件仅包含有关目标的信息,而不是源信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    相关资源
    最近更新 更多