On 04/01/2014 01:28 μμ, akhiezer wrote: >> Date: Sat, 04 Jan 2014 11:13:07 +0000 >> From: [email protected] (akhiezer) >> To: BLFS Support List <[email protected]> >> Subject: Re: [blfs-support] Destdir installation question >> >>> Date: Sat, 04 Jan 2014 12:29:24 +0200 >>> From: Thanos Baloukas <[email protected]> >>> To: BLFS support <[email protected]> >>> Subject: [blfs-support] Destdir installation question >>> >>> I installed libffi-3.0.13 in chroot using destdir method >>> with which I'm not familiar. I did >>> >>> make DESTDIR=${fakeroot} install >>> cd ${fakeroot} >>> sudo bash -c "tar cf - . | (cd / ; tar xf - --no-same-owner)" >>> >>> as the LFS fakeroot hint suggests >>> (I added 'sudo bash -c' and --no-same-owner). >>> That broke compiler because libffi installed it's libs in >>> $DESTDIR/usr/lib64 directory >>> and tar replaced the /usr/lib64 symlink with the directory. >>> I also tried to do those as root, >>> withought sudo and --no-same-owner, but nothing changed. >>> I added -h (--dereference) option to tar xf and that fixed the problem. >>> Did someone else have that? Will the constant use of -h option to tar >>> cause other problems? Is there another - more reliable maybe - way >>> to place files on / ? >>> >> >> >> You might find useful the summary-discussion & workaround at: >> ---- >> Ref: >> * >> ftp://ftp.slackware.com/pub/slackware/slackware64-14.1/source/a/tar/tar.SlackBuild >> * ( ftp://ftp.slackware.com/pub/slackware/slackware64-14.1/source/a/tar/ ) >> -- >> "# This old version is the only one that won't clobber symlinks, e.g.: >> # someone moves /opt to /usr/opt and makes a symlink. With newer >> # versions of tar, installing any new package will remove the /opt >> # symlink and plop down a new directory there.
> > - meant to add: as a general principle, I'd expect you wouldn't want to use > '-h' systematically; for, in general, I'd expect that if you have symlinks > in the destdir/tarball, then you'd want to re-create those when you > un-tar/install. In Slackware, any _extra_, 'special' handling that's > required for some symlinks, is usually done in the package's 'doinst.sh' > script - ref e.g. near the end of: > -- > * ftp://ftp.slackware.com/pub/slackware/slackware64-14.1/source/a/sysvinit/ > -- > Thanks akh. As Thomas mentioned in his post, the --keep-directory-symlink seems to be the suitable option. By tar manual: ‘--keep-directory-symlink’ This option changes the behavior of tar when it encounters a symlink with the same name as the directory that it is about to extract. By default, in this case tar would first remove the symlink and then proceed extracting the directory. The ‘--keep-directory-symlink’ option disables this behavior and instructs tar to follow symlinks to directories when extracting from the archive. It is mainly intended to provide compatibility with the Slackware installation scripts. -- Thanos -- http://linuxfromscratch.org/mailman/listinfo/blfs-support FAQ: http://www.linuxfromscratch.org/blfs/faq.html Unsubscribe: See the above information page
