【问题标题】:rpm subpackages %install sectionrpm 子包 %install 部分
【发布时间】:2017-09-21 11:17:07
【问题描述】:

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

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

%files

对于这样的子包:

%files mysubpackage

不过,我只见过一个

%install

部分,如果我这样做会出错

%install mysubpackage

【问题讨论】:

  • 记住 - %install 处于 RPM 构建时间。小脚本在安装时执行,例如%post。那些允许子包。

标签: rpmbuild rpm-spec


【解决方案1】:

不,您不能拥有,也不需要单独的 %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/*

进一步阅读:RPM packaging guide

【讨论】:

  • Erm 我有点困惑,这是怎么工作的?安装部分是否会自动为每个命令选择正确的 rpm?它们可以单独安装,这是怎么回事?
  • %install 中为所有(子)包安装所有文件,在%files 部分中对每个(子)包进行分隔。
  • 啊,好吧,我的误解是我认为安装部分中的命令也包含在 rpm 中。嗯,但是一旦你建立了 rpms。他们怎么知道在哪里安装什么?
  • 其实这真的很有帮助。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多