在我正在构建的包中,Buildroot 目录中有符号链接。例如这个:
/home/sg/impkg/buildroot/dir1/bin/w_be -> /home/sg/impkg/buildroot/dir2/targ/be
这导致rpmbuild
失败并出现错误:
RPM build errors:
Symlink points to BuildRoot:
/home/sg/impkg/buildroot/dir1/bin/w_be -> /home/sg/impkg/buildroot/dir2/targ/be
在我的%files
部分中,我只包含了buildroot
我想要的目录。以下是我的规范文件中的片段:
Summary: research compiler tool set
License: GPL
Name: %{name}
Version: %{version}
Release: %{release}
Source: %{name}-%{version}.tar.gz
Prefix: /usr
Group: Development/Tools
Autoreq: 0
Autoprov: 0
%description
research compiler tool set
%prep
%setup -q
%build
rm -rf %{buildroot}/%{name}-%{version}
mkdir %{buildroot}/%{name}-%{version}
cd %{buildroot}/%{name}-%{version} && %{_builddir}/%{name}-%{version}/./configure -- prefix=%{buildroot}/%{name}-%{version}
make %{?_smp_mflags} -C %{buildroot}/%{name}-%{version}
%install
cd %{buildroot}/%{name}-%{version} && make DESTDIR=%{buildroot}/%{name}-%{version} install
%clean
rm -rf %{buildroot}/%{name}-%{version}
%files
%defattr(755,-,-)
/%{name}-%{version}
我必须遵守逻辑,这意味着我无法从 Makefile 中删除这些链接...我该如何解决这个问题并生成 RPM?
答案1
符号链接必须是相对的,以便包在安装后可以工作。修补 makefile 以解决此问题。