Re: How to properly move a file from a .deb to another one ?
Xavier Roche wrote:
> swin von Brederlow a écrit :
>> If /usr/share/doc/httrack/html is a symlink then you should not have
>> any files in it in the deb.
>
> Correct - and there are definitely files in this directory.
>
>> You did something seriously wrong there to
>> make this happen, like create the link in preinst but also have the
>> dir in the package or something.
>
> I think the problem is that the webhttrack.files contained a "usr/share/doc/httrack/html/server" line (instead of "usr/httrack/html/server"), and the dh_* scripts saw it as a "true" directory.
>
> Darn, this is a vicious packaging bug.. playing with the <new-preinst upgrade old-version> might be the solution to kick the simlink ?
Then your problem may be unrelated to the move of one file from a
package to another, but instead related to dpkg being unable to
replace a directory by a symlink. In a 'standard' such upgrade (with
only one package), the new symlink is ignored (not installed). With
your conflict/replace, it seems it leads to a dpkg error.
I hit this problem with one of my package (#362487).
Here is the hack I used to get arround this bug in the postinst of my
package :
case "$1" in
configure)
# Workaround a dpkg bug (transition directory->symlink does not work)
DESTDIR=/usr/lib/python2.3/site-packages/mercurial/templates
if [ -d /usr/lib/python2.3/site-packages/mercurial \
-a ! -L $DESTDIR ] ; then
# DESTDIR is not a symlink as it should be
if rmdir $DESTDIR ; then :
else
# DESTDIR is not an empty directory !
# We try to move files
mv -v $DESTDIR/* /usr/share/mercurial/templates/
# and we fail is that still does not work
rmdir $DESTDIR
fi
ln -s ../../../../share/mercurial/templates $DESTDIR
fi
;;
esac
Perhaps you will need something similar (and perhaps in the preinst for
you)
Best regards,
Vincent
Reply to: