我有一个包,目录名为lib,sample,api,doc在 parent directory 下%{name}-%{version}
。我想从这些文件夹中生成一个RPM包。此rpm包应在客户端指定的重定位目标文件夹下展开这些目录。%{name}-%{version}
包含所有包目录的文件夹被压缩在tar.gz中并保存在SOURCE文件夹下。在阅读了规范文档和网络资源后,我制作了以下规范文件。
Name: BATMAN
Version: 1.0.0
Release: 1%{?dist}
Summary: A cricket match program
Group: System Environment/Base
License: MEMEME
Source0: BATMAN-1.0.0.tar.gz
Prefix: /tmp
%define reloc_dir /tmp
%define target_dir %{reloc_dir}/manish
%define installdir PingPong-v%{version}
%description
Here comes the description
%prep
rm -rf %{_topdir}/BUILD/*
rm -rf %{target_dir}
%setup
%install
mkdir -p %{buildroot}
cp -R %{_topdir}/BUILD/%{name}-%{version}/* %{buildroot}
###What should come down here##############
mkdir -p %{target_dir}
install -dD %{buildroot}/* %{target_dir}
###########################################
#find %{target_dir} -type d -exec chmod 755 {} \;
#find %{target_dir} -type f -exec chmod 644 {} \;
#chmod -R 755 %{target_dir}
%files
/sample/sample.cpp
/header/BATMAN.hpp
/header/BALLMAN.hpp
/header/BUSYMAN.hpp
/header/BUSHYMAN.hpp
/doc/BATMAN.docx
/lib/BATMAN.so
/lib/BALLMAN.so
/lib/BUSYMAN.so
/lib/BUSHYMAN.so
%defattr(-,root,root,0755)
%clean
rm -rf $RPM_BUILD_ROOT
%changelog
该%setup
命令成功展开 . 下的压缩文件夹%{_topdir}/BUILD/
。然后我将这些文件复制到%{buildroot}
(因为%files
标签期望文件存在于BUILDROOT下进行打包)。所有这些文件的打包也成功完成,但是当我sudo rpm -ivh --nodeps <Package-Vesrion-Arch>.rpm
在生成的 rpm 上运行命令时,我看不到在目标端创建任何文件夹或发生任何复制。尽管它显示软件包已成功安装;rpm -qa
我的包裹有一个条目。