如何修改 rpm spec 文件以将 tarball 安装到特定目录?
How do I modify rpm spec file to install a tarball to specific directory?
我想将 gstatus 安装到 /usr/local/gstatus/gstatus-0.66。原始 tarball 将它安装到 /gstatus-0.66。如何修改规范以使其安装到正确的位置?
原始规格:
Name: gstatus
Version: 0.66
Release: 1%{?dist}
...
Source0: %{name}-%{version}.tar.gz
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
...
%prep
%setup -q -n %{name}
...
%install
rm -rf %{buildroot}
%{__python} setup.py install --skip-build --root %{buildroot} --install-scripts %{_bindir}
mkdir -p %{buildroot}%{_mandir}/man8
install -m 0644 gstatus.8 %{buildroot}%{_mandir}/man8/
gzip %{buildroot}%{_mandir}/man8/gstatus.8
...
/usr/local 确实存在,但我需要创建 /usr/local/gstatus。
我可以将 %install 部分修改为:
%install
rm -rf %{buildroot}
mkdir /usr/local/gstatus
%{__python} setup.py install --skip-build --root /usr/local/gstatus/%{buildroot} --install-scripts %{_bindir}
mkdir -p /usr/local/gstatus/%{buildroot}%{_mandir}/man8
install -m 0644 gstatus.8 /usr/local/gstatus/%{buildroot}%{_mandir}/man8/
gzip /usr/local/gstatus/%{buildroot}%{_mandir}/man8/gstatus.8
...
没有。在 %install
部分中,您需要将所有内容都放在 %{buildroot}
下。您可能应该这样做:
%install
mkdir -p %{buildroot}/usr/local/gstatus/
--root %{buildroot}/usr/local/gstatus/
%files
/usr/local/gstatus/
一些注意事项:
- 是的,您需要在
%{buildroot}
(/usr 等)下创建所有目录,但您应该只打包属于您的目录。包装发生在 %files
- 在
%files
下指定目录默认是递归的。这里指定/usr/local/gstatus/
,递归打包目录gstatus
。
我想将 gstatus 安装到 /usr/local/gstatus/gstatus-0.66。原始 tarball 将它安装到
Name: gstatus
Version: 0.66
Release: 1%{?dist}
...
Source0: %{name}-%{version}.tar.gz
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
...
%prep
%setup -q -n %{name}
...
%install
rm -rf %{buildroot}
%{__python} setup.py install --skip-build --root %{buildroot} --install-scripts %{_bindir}
mkdir -p %{buildroot}%{_mandir}/man8
install -m 0644 gstatus.8 %{buildroot}%{_mandir}/man8/
gzip %{buildroot}%{_mandir}/man8/gstatus.8
...
/usr/local 确实存在,但我需要创建 /usr/local/gstatus。 我可以将 %install 部分修改为:
%install
rm -rf %{buildroot}
mkdir /usr/local/gstatus
%{__python} setup.py install --skip-build --root /usr/local/gstatus/%{buildroot} --install-scripts %{_bindir}
mkdir -p /usr/local/gstatus/%{buildroot}%{_mandir}/man8
install -m 0644 gstatus.8 /usr/local/gstatus/%{buildroot}%{_mandir}/man8/
gzip /usr/local/gstatus/%{buildroot}%{_mandir}/man8/gstatus.8
...
没有。在 %install
部分中,您需要将所有内容都放在 %{buildroot}
下。您可能应该这样做:
%install
mkdir -p %{buildroot}/usr/local/gstatus/
--root %{buildroot}/usr/local/gstatus/
%files
/usr/local/gstatus/
一些注意事项:
- 是的,您需要在
%{buildroot}
(/usr 等)下创建所有目录,但您应该只打包属于您的目录。包装发生在%files
- 在
%files
下指定目录默认是递归的。这里指定/usr/local/gstatus/
,递归打包目录gstatus
。