.spec文件正在创建一个空的.rpm

时间:2016-11-14 11:37:34

标签: rpm specfiles

我正在尝试创建一个RPM来解压缩tar,更改一些权限,然后根据进程回显一些东西。以下是相关的.spec文件。

Summary: Linux agent V.1
Name: Agent
Version: 1.0
Release: 1
License: GPL
Source: Agent.tar.gz
Vendor: test
Packager: test


%description
Test Linux agent

%prep
if ps aux | grep "[u]cx"; then
  pkill -f ucx
else
  echo "Current agent is not running."
fi
%setup -n Agent
%install
cp -r /root/rpmbuild/BUILD/Agent /local/0/opt
cd /local/0/opt/Agent
chown -R root.root *
cd bin/
chown root.root test1 test2
chmod 775 test1 test2
chmod +s  test1 test2
if ps aux | grep "[u]cy"; then
  echo "managerup"
else
  echo "manager down"
fi
%files
%clean
rm -rf /root/rpmbuild/BUILD/Agent

构建时,.spec文件会干净地构建并创建rpm。它还运行命令,我在/local/0/opt中获取相关文件。有问题的构建命令是rpmbuild -ba agent.spec。我试过在详细模式下这样做,但它并没有给我一个错误。

但是,生成的.rpm文件为空,并没有实际执行任何操作。我认为这是.spec文件的问题。但是由于输出没有给我一个错误,我不确定是什么问题。

我一直关注http://www.rpm.org/max-rpm/s1-rpm-build-creating-spec-file.html

我认为问题是%files部分。我希望它只是将tar部署到local/0/opt,但我对在哪里声明安装目录以及在包中声明我想要的内容感到困惑。

1 个答案:

答案 0 :(得分:3)

您需要将/local/0/opt添加到%files部分

%files
/local/0/opt

指示rpm构建过程在哪里找到它应该在最后打包的文件。

您还需要在%install

内安装和操作相对于rpm buildroot的文件
%install
mkdir -p %{buildroot}/local/0
cp -r /root/rpmbuild/BUILD/Agent %{buildroot}/local/0/opt
cd %{buildroot}/local/0/opt/Agent

因为rpm构建过程会在里面查找要打包的文件。

您可能希望清除一些规范文件,包括将%clean放在%files之上并在%install内移动%build个操作。