【问题标题】:how to create a relocatable rpm package , no compile如何创建一个可重定位的 rpm 包,无需编译
【发布时间】:2020-02-18 00:17:54
【问题描述】:

我正在尝试创建一堆脚本和 .png 文件的“可重定位 RPM”。没有构建/编译。我写了


    Name:       utp
    Version:    1.0
    Release:    1%{?dist}
    Summary:    some summary

    Group:      Applications/Engineering
    License:    Proprietary
    URL:        http://www.example.com
    Source0:    %{name}-%{version}.tgz
    BuildArch:  noarch
    Prefix:     /opt

    %description
    A very nice description

    %prep
    echo "=== prep ... done"

    %setup -n utp
    echo "=== setup ... done"

    # %files -f %{_tmppath}/files.list
    %files

我明白了


    medi@medi:~/work> rpm -qi -p rpmbuild/RPMS/noarch/utp-1.0-1.el8.noarch.rpm 
    Name        : utp
    Version     : 1.0
    Release     : 1.el8
    Architecture: noarch
    Install Date: (not installed)
    Group       : Applications/Engineering
    Size        : 0
    License     : Proprietary
    Signature   : (none)
    Source RPM  : utp-1.0-1.el8.src.rpm
    Build Date  : Mon 17 Feb 2020 03:44:00 PM PST
    Build Host  : medi.example.com
    Relocations : /opt 
    URL         : http://www.example.com
    Summary     : some summary
    Description :
    A very nice description

    medi@medi:~/work> rpm -ql -p rpmbuild/RPMS/noarch/utp-1.0-1.el8.noarch.rpm 
    (contains no files)
    medi@medi:~/work> 

问题很可能出在“%files”上。我试图指定一个列表(现在注释掉),但我遇到了以下情况

    Processing files: utp-1.0-1.el8.noarch
    error: Directory not found: /home/medi/work/rpmbuild/BUILDROOT/utp-1.0-1.el8.x86_64/opt/utp
    error: File not found: /home/medi/work/rpmbuild/BUILDROOT/utp-1.0-1.el8.x86_64/opt/utp/utg
    error: File not found: /home/medi/work/rpmbuild/BUILDROOT/utp-1.0-1.el8.x86_64/opt/utp/utg/UserGuide.txt

我的 file.list 的样子


    /opt/utp/
    /opt/utp/utg
    /opt/utp/utg/UserGuide.txt
    /opt/utp/utg/install.txt

因为我想让它成为可重定位的(参见前缀:/opt),所以我在前面加上了“/opt”。

我认为总的来说,我很困惑。是的,我确实阅读了该文档,但我错过了它。

【问题讨论】:

    标签: rpm rpmbuild rpm-spec


    【解决方案1】:

    您的%build%install 节应该仍然存在;一个解压缩您的图像源,另一个将它们复制到 buildroot 中的最终位置。

    【讨论】:

      【解决方案2】:

      pkg 没有内容的原因是因为 %file 指令是空的,并且使用 -f 必须注意文件的位置。经过多次阅读,我发现 %files 默认会在 %{buildroot} 中查找文件,所以这个组合解决了它

      %install 
      cp -r ./* %{buildroot}
      
      %files
      /%{name}
      

      所以,现在我有了内容,但后来我遇到了一些 shebang_mangling,我不得不禁用它。

      【讨论】:

      • 60声望的高手发话了!您应该编辑的原因是,当我们今天为您提供帮助时,重点是成为一个包含问题和回答的信息库,以帮助下次其他的人。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      • 2019-10-11
      • 2021-12-29
      • 2015-09-12
      • 1970-01-01
      相关资源
      最近更新 更多