构建rpm spec文件以携带一个文件并执行一个命令

Leo*_*Sam 1 rpm rpmbuild

即时尝试构建包含的rpm文件

1 file /usr/local/stats.sh
Run Code Online (Sandbox Code Playgroud)

rpm会做一件事

echo -e "*/5 * * * * /usr/bin/sh  /usr/local/stats.sh"  >> /var/spool/cron/root
Run Code Online (Sandbox Code Playgroud)

我已经开始了

Name:           stats
Version:        0.1
Release:        el%{redhat_releasever}%{redhat_releasever_minor}.1
Summary:        stats
Source0:        %{svn_url_Systems}/%{name}.spec
BuildArch:      noarch
Group:          %{repo_name_Systems}
License:        stat
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)


%description
Script 


%prep

%setup -cT


%build

%{__mkdir} -p %{buildroot}/%{_sysconfdir}/

echo -e "*/5 * * * * /usr/bin/sh /usr/local/stats.sh "  >> /var/spool/cron/root

%changelog
Run Code Online (Sandbox Code Playgroud)

任何提示,使这个rpm规范文件正确和工作!

小智 8

更容易不操作'/ var/spool/cron/root'中的crontab.请改用/etc/cron.d目录.创建一个包含crontab行的文件.在此目录中安装此文件.优点是卸载rpm-package时将自动卸载此文件.

因此,您只需要构建一个将安装两个文件的rpm文件.

%build宏不是你需要的东西.您需要根据主机上的目标目录安排打包.

%install
mkdir -p %{buildroot}/usr/local
mkdir -p %{buildroot}/etc/cron.d

cp ...mysource/stats.sh              %{buildroot}/usr/local
cp ...mysource/mystatstiming.cron    %{buildroot}/etc/cron.d
Run Code Online (Sandbox Code Playgroud)

那么你需要定义文件标志设置:

%files
%defattr(755,root,root)
/usr/local/stat.sh

%defattr(644,root,root)
/etc/cron.d/mystatstiming.cron
Run Code Online (Sandbox Code Playgroud)