rpm - RPM Spec 文件将 tar.gz 解压到多个位置
问题描述
在本手册的帮助下,我试图生成我的第一个 RPM。我的目标是生成一个 rpm,将我的文件解压缩project.tar.gz
到多个目标目录中。
假设我在 tar.gz 中有以下结构:
/part-one
/file-one.py
/file-two.py
/part-two
/file-one.py
/file-two.py
/subdirectory
/file-one.py
/file-two.py
我希望将第一部分安装到/opt/project-one/libs/
第二部分中/opt/project-two/libs/specific-dir/
我是否需要将 tar.gz 中的所有文件放在 %files 正文项中,例如:?
%files
/part-one/file-one.py
/part-one/file-two.py
/part-two/file-one.py
/part-two/file-two.py
/part-two/subdirectory/file-one.py
/part-two/subdirectory/file-two.py
以及如何指定这些文件的目标?
当我使用时,我明白了:
%prep
%setup -q
tar.gz 的内容会自动解包,我不需要添加解包命令。
解决方案
之后%setup
,您将需要一个%install
部分,然后是一个%file
部分。
%install
部分将解压缩的源代码(您的 tarball)安装/复制到适当的目标目录(/opt/....
)中。这是一个例子
%setup -q
%build
# empty
%install
# create target dirs
install -p -d -m 0755 /opt/project-one/libs
install -p -d -m 0755 /opt/project-two/libs/subdirectory
# copy files
install -m 0644 part-one/*.py /opt/project-one/libs/
install -m 0644 part-two/*.py /opt/project-two/lib/subdirectory
%files
# This should take care of all files inside these dirs.
/opt/project-one/
/opt/project-two
推荐阅读
- xcode - Xcode 调试中的 stl(libcxx) 渲染器
- java - 如何从中间拆掉 RxJava 2 链(并释放资源)?
- mysql - 我需要在 MySQL 中比较标准偏差 3 周
- pine-script - 我需要每天在 pinescript 中绘制一条线,其值在字典中的 0-100 范围内
- reactjs - NPM 包尝试写入文档并失败
- c++ - 玩 Bazel C++ 教程;build 不创建/使用共享库?
- javascript - 选择表格中的填充单元格
- python - 将 Pandas 数据框中列表中的单词词形化
- jquery - 禁用 JQuery 后无法重新启用选择标记
- javascript - Phaser 3 具有随机 x,y 但在特定区域的精灵