在运行install命令时,我可以在spec文件中放置安装/移动文件的指令吗?
rpm -ivh myrpm-1.0-12.rpm
在我的RPM中,我有一个填充文件(php文件)的tar球我想将它们放在我的服务器上的set目录中。
我跑。
rpmbuild -ba
执行以下命令,此时我不想执行。
%install
mkdir -p $RPM_BUILD_ROOT/usr/local/mypath/here
cp -r . $RPM_BUILD_ROOT/usr/local/mypath/here
我希望这些命令在最终用户安装时执行
rpm -ivh myrpm-1.0-12.rpm
在RPM文档中,它表示安装RPM的步骤是...... “从包中解压缩文件并将它们放在适当的位置:”
这是大多数人在考虑安装软件时所想到的步骤。每个包文件都包含要安装的文件列表,以及它们在系统上的目标。此外,RPM还可以正确设置许多其他文件属性,例如权限和所有权。
我不知道在哪里放这些命令。
我也尝试将命令放在%build
中,它的行为也一样。
答案 0 :(得分:1)
RPM构建时间是提取这些文件的确切时间。
原始tar球应该是"源RPM文件"以及"二进制RPM文件"的一部分。 (错误的措辞;应该更好"安装RPM文件"在这种情况下)应该保留RPM负责的目标文件系统的确切布局。
此布局在%install
部分中定义。通常,您有序列%prep
,%build
和%install
。 %prep
将您的来源解压缩到工作目录中,%build
将它们构建为adnd %install
将stoff移动到" build root"它定义了应该存在的文件。如果您没有任何要构建的内容,就像在您的情况下一样,则省略%build
,可能只需在%install
部分解压缩。
这也是RPM系统知道文件名称的唯一方式,因此您可以使用rpm -qf $FILENAME
查询其包。 (鬼文件除外,但不是很优雅)。
你可以添加一个%post
scriptlet,在安装时解压缩tarball,但是,如上所述,这将远非优雅。