[Fedora-packaging] resolving rpmlint absolute symlinks issue

Paul Howarth paul at city-fan.org
Fri Aug 15 16:24:04 UTC 2008


David Timms wrote:
> Tom spot Callaway wrote:
>> On Fri, 15 Aug 2008 08:11:11 +1000
>> David Timms <dtimms at iinet.net.au> wrote:
>>
>>> I am getting the following with a package I'm working on:
>>>
>>> $ rpmlint --info RPMS/noarch/pyvnc2swf-0.9.3-3.fc9.noarch.rpm
>>> pyvnc2swf.noarch: W: symlink-should-be-relative /usr/bin/vnc2swf
>>> /usr/lib/python2.5/site-packages/pyvnc2swf/vnc2swf.py
>>> Absolute symlinks are problematic eg. when working with chroot 
>>> environments.
>>>
>>> pyvnc2swf.noarch: W: symlink-should-be-relative /usr/bin/vnc2swf-edit
>>>  
>>> Absolute symlinks are problematic eg. when working with chroot 
>>> environments.
>>
>> You resolve these like this:
>>
>> Instead of doing:
>>
>> ln -s /usr/lib/python2.5/site-packages/pyvnc2swf/edit.py 
>> /usr/bin/vnc2swf-edit
>>
>> You do a relative link, like this:
>>
>> cd /usr/lib/python2.5/site-packages/pyvnc2swf/
>> ln -s edit.py ../../../../bin/vnc2swf-edit
> 
> OK, that works for my raw file system, but how is it done in a package ?
> cd %{buildroot}%{python_sitelib}/pyvnc2swf/
> ln -s vnc2swf.py ../../../../bin/vnc2swf
> 
> rpmbuilds fine, but get rpmlint from the other way:
> 
> rpmlint --info pyvnc2swf-0.9.3-4.fc9.noarch.rpm
> pyvnc2swf.noarch: W: dangling-relative-symlink /usr/bin/vnc2swf vnc2swf.py
> The relative symbolic link points nowhere.
> 
> Is it OK to leave with that warning ?
> Should it be fixed like Paul shows {with symlinks} in the above bug ?
> Or is there another easy fix that doesn't require such trickery ?

Try this, which is I think what Spot meant:

ln -s ../lib/python2.5/site-packages/pyvnc2swf/vnc2swf.py \
	%{buildroot}%{_bindir}/vnc2swf

ln -s ../lib/python2.5/site-packages/pyvnc2swf/edit.py \
	%{buildroot}%{_bindir}/vnc2swf-edit

The problem with this is that you can't use the %{python_sitelib} macro 
to do it cleanly. You could take the relative link right up to the root 
directory to avoid that pitfall:

ln -s ../..%{python_sitelib}/pyvnc2swf/vnc2swf.py \
	%{buildroot}%{_bindir}/vnc2swf

ln -s ../..%{python_sitelib}/pyvnc2swf/edit.py \
	%{buildroot}%{_bindir}/vnc2swf-edit

However, this still requires the assumption that %{_bindir} is two 
levels down from the root directory, which is why I prefer the approach 
of using the "symlinks" utility - it requires no such assumptions.

Paul.




More information about the fedora-devel-list mailing list