RPM 规范文件解压 tar.gz 到多个位置
RPM Spec file unpack tar.gz into multiple locations
在 this 手册的帮助下,我正在尝试生成我的第一个 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
部分 installs/copies 将解压后的源代码(您的压缩包)放入适当的目标目录 (/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
在 this 手册的帮助下,我正在尝试生成我的第一个 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
部分 installs/copies 将解压后的源代码(您的压缩包)放入适当的目标目录 (/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