rpm 子包 %install 部分

use*_*066 4 rpmbuild rpm-spec

是否可以在规范文件中为子包设置单独的 %install 部分?

例如,可以为主包指定文件为

%files
Run Code Online (Sandbox Code Playgroud)

对于这样的子包:

%files mysubpackage
Run Code Online (Sandbox Code Playgroud)

然而,我只看过一个

%install
Run Code Online (Sandbox Code Playgroud)

部分,如果我这样做,我会得到一个错误

%install mysubpackage
Run Code Online (Sandbox Code Playgroud)

Chr*_*aes 6

不,您不能拥有,也不需要单独的%install部分。

假设一个典型的例子:你编译了一个程序,想创建两个包;library.rpm 和 library-devel.rpm(带有头文件)。然后你会有一个像这样的规范文件:

Name: library
# probably some other fields...

%description
describre library

%package devel
Summary: headers for library

%description devel
describe library-devel package

%prep
# some common prep code for both packages; eg
%setup -q

%build
make (or whatever to build your program)

%install
# install files for both rpm packages; library AND headers
mkdir -p ${RPM_BUILD_ROOT}/%_libdir/
mkdir -p ${RPM_BUILD_ROOT}/usr/include/

cp library.so* ${RPM_BUILD_ROOT}/%_libdir/
cp include/*.h* ${RPM_BUILD_ROOT}/usr/include/

%files
%defattr(-,root,root)
%_libdir/*.so.*

%files devel
%defattr(-,root,root)
%_libdir/*.so # yes; if you use version numbers; the versioned .so go in the normal package; the one without version number in the devel package
/usr/include/*
Run Code Online (Sandbox Code Playgroud)

进一步阅读:RPM 包装指南