Linux RPM规范不会将包复制到目标文件夹

Linux RPM规范不会将包复制到目标文件夹,linux,package,rpm,rpmbuild,rpm-spec,Linux,Package,Rpm,Rpmbuild,Rpm Spec,我有一个包,在父目录%{name}-%{version}下有一个名为lib、sample、api、doc的目录。我想从这些文件夹中生成一个RPM包。此rpm包应在客户端指定的重新定位的目标文件夹下展开这些目录。包含所有包目录的%{name}-%{version}文件夹压缩在tar.gz中,并保存在源文件夹下。在阅读规范文档和web资源之后,我创建了以下规范文件 Name: BATMAN Version: 1.0.0 Release: 1%{?dist} Summary: A cricket

我有一个包,在父目录
%{name}-%{version}
下有一个名为lib、sample、api、doc的目录。我想从这些文件夹中生成一个RPM包。此rpm包应在客户端指定的重新定位的目标文件夹下展开这些目录。包含所有包目录的
%{name}-%{version}
文件夹压缩在tar.gz中,并保存在源文件夹下。在阅读规范文档和web资源之后,我创建了以下规范文件

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
命令成功地展开了
%{u topdir}/BUILD/
下的压缩文件夹。然后我将这些文件复制到
%{buildroot}
(因为
%files
标记希望文件出现在buildrootto package下)。所有这些文件的打包也已成功完成,但当我对生成的rpm运行
sudo rpm-ivh--nodeps.rpm
命令时,我看不到在目标端下创建任何文件夹或发生任何复制。尽管它表明软件包已成功安装
rpm-qa
为我的包添加了一个条目。

请添加
rpm-ql-p-package.rpm
的输出。您的
%files
部分应该向所有条目(或类似的内容)添加
%{reloc}
。例如,
%{reloc}/samples/sample.cpp
,等等。我想您已经将它们放在了根目录中。您可能希望在测试安装时使用
chroot
。您能否澄清这一点:“客户端指定的重新定位的目标文件夹”?如果用户要在不同的目录中使用rpm,为什么安装它时不使用--root?