首页 > 解决方案 > 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 的内容会自动解包,我不需要添加解包命令。

标签: rpmrpmbuildrpm-spec

解决方案


之后%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

推荐阅读