我使用此spec文件来使用RPM文件
Name: pack-agent
Version: 1.0
Release: 1%{?dist}
Summary: Linux Agent installation script
Group: Utilities
License: license
Source0: pack-agent-1.0.tar.gz
BuildArch: x86_64
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
%description
%prep
%setup -q -n opt
%build
%install
#install -m 0755 -d $RPM_BUILD_ROOT/agent
#cp -ap agent/* $RPM_BUILD_ROOT/agent/
install -m 0755 -d %{buildroot}/opt
#cp -a * %{buildroot}/agent
cp -a * %{buildroot}/opt
%clean
rm -rf $RPM_BUILD_ROOT
%files
/opt
%defattr(-,root,root,-)
%attr(777, root, root) /opt/agent/bin/karaf
%doc
%changelog
但安装后文件不可执行。我需要启动文件洞察目录树。反正有没有添加chmod命令洞察spec文件并在RPM安装后用它来设置权限?
答案 0 :(得分:8)
如果您愿意,可以将chmod
添加到%post
部分,但这是解决问题的方法。
您应该确保在安装期间文件在buildroot中是可执行的,并且它们应该在RPM中保留(使用%defattr
条目)并且一旦安装(尽管%defattr
条目应该以上 /opt
行。
或者,您可以使用%defattr
宏和%attr
宏让RPM手动为%files
部分中的特定文件应用特定权限。
请参阅Directives For the %files list和Specifying File Attributes了解指令的工作原理。
来自第二个链接的示例:
%files
%attr(-, root, root) %doc README
%attr(4755, root, root) /usr/local/bin/cdp
%attr(-, root, root) /usr/local/bin/cdplay
%attr(-, root, rot) /usr/local/man/man1/cdp.1