我需要构建一个 RPM,其唯一目的是安装一些字体。我已经阅读了一些关于此的教程,但是每个人似乎都提出了不同的建议,并且我无法找到类似非常基本的设置之类的东西来做到这一点。
是否可以只引用其中的文件%files
规范部分?但是我尝试过,RMP总是尝试在tmp
目录。我是否需要添加一个特定的构建步骤,将我需要的所有内容复制到tmp
目录?
这些文件是否应该进入SOURCE
or the BUILD
构建 RPM 时的目录?我一直在寻找很多不同的信息。有些人建议构建一个包含文件的 tarball 并将其放在SOURCE
目录,但这似乎有点错误,因为字体文件对我来说不是实际的源文件。
理想情况下,我想将 BUILD 文件夹中的所有字体文件放在如下目录结构下./usr/share/fonts/
然后在%file
SPEC 部分并让rpm
发挥它的魔力。可能我在这里遗漏或误解了一些东西。
是否%files
部分总是期望在中找到源文件tmp
目录,还是我的设置有问题?我创造了~/.rpmmacros
其中包含
%_topdir /Users/user/rpm
这是根构建目录,包含 BUILD、RPMS、SOURCES、SPECS 和 tmp 目录。
如果有人可以提供规范文件中最少需要的项目以使其顺利工作,我会很高兴。
Edit
根据 user3159253 的建议,我使用以下规范文件:
Name: test
Version: 1.0.0
Release: 1
Copyright: Copyright info
Group: Applications/System
BuildArch: noarch
%description
Brief description of software package.
%prep
%build
%install
mkdir -p %{buildroot}/usr/share/fonts
cp ./usr/share/fonts/* %buildroot/usr/share/fonts/
%clean
%files
/usr/share/fonts/*
我将字体复制到 BUILD/usr/share/fonts/ 目录中。如果我查询 rpm 中的文件列表,所有字体都在那里。但是,当我安装 rpm 时,它会抱怨
/usr/share/fonts is needed by test-1.0.0-1.noarch
不过,这个目录存在与否并不重要,所以我猜rpm
抱怨该资源未在其数据库中列出。
我已经能够通过更改来解决这个问题%file
部分至:
/usr/
/usr/share/
/usr/share/fonts/
/usr/share/fonts/*
然而,我怀疑这是否是一个好主意。有更好的方法来解决这个问题吗?