paxutils-forum
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

FW: GNU tar 1.13.17 --overwrite works "wrong"


From: Patterson, Ross
Subject: FW: GNU tar 1.13.17 --overwrite works "wrong"
Date: Tue, 13 Mar 2001 15:03:00 -0500

Sorry, stupid MS shortcut keys sent that one before it's time.  What I meant to 
say was ...

> The NEWS file for GNU tar 1.13.17 says:
> 
>       version 1.13.16 - Paul Eggert, 1999-12-13.
> 
>       * By default, tar now refuses to overwrite existing files when
>         extracting files from an archive; instead, it removes them before
>         extracting.  There is one exception: existing nonempty directories
>         are not removed, nor are their ownerships or permissions extracted.
>         This fixes some longstanding security problems.
> 
>         The new --overwrite option enables the old default behavior.
> 
>       ...
> 
> The second paragraph implies that "tar -x --overwrite" will behave exactly 
> the same in 1.13.17 as "tar -x" in levels up to 1.13.15.  I've got a case 
> where it doesn't, and it's a problem I can't seem to resolve.  Specifically, 
> my company sells a product that includes a tar archive as the distribution 
> vehicle.  The archive contains several independently-selectable components, 
> organized in a directory tree much as you'd expect - directory "a" contains 
> the "a" component files, "b" contains "b", etc.  When we install, we want to 
> install all  the files for the components that the user chooses, and all in 
> the same directory.  Just to complicate matters, there are some files that 
> are present in more than one component (identical), and we want tar to 
> silently 
> replace one copy with another (because we KNOW that they're identical).  The 
> following works on releases prior to 1.13.16:
> 
>       mkdir /install_target_dir
>       ln -s /install_target_dir /install_target_dir/a
>       ln -s /install_target_dir /install_target_dir/b
>       ... more links, one for each component ...
>       tar xzfp dist.tar.Z a b ... more components, as chosen by the user ...
>       rm -f /install_target_dir/a
>       rm -f /install_target_dir/b
>       ... more cleanup ...
> 
> The effect we're looking for is to have all the files from the chosen 
> components installed into /install_target_dir, and tar used to follow the 
> symlinks and "make it so".  This was even deliberate behavior - "info tar" 
> for 
> 1.12 says:
> 
>       Options to Prevent Overwriting Files
>       ....................................
>          Normally, `tar' writes extracted files into the file system without
>       regard to the files already on the system; i.e., files with the same
>       names as archive members are overwritten when the archive is extracted.
>       If the name of a corresponding file is a symbolic link, the file
>       pointed to by the symbolic link will be overwritten instead of the
>       symbolic link itself (if this is possible). ...
> 
> GNU tar 1.13.17 does exactly what we don't want - it replaces the 
> carefully-built 
> symlinks with directories, and all the component files wind up in these new 
> directories.  The 1.13.16 --overwrite option appears to be intended to 
> restore 
> the old behavior, but instead seems to have no effect.  The --keep-old-files 
makes tar follow the symlinks, but also makes it generate RC=2, indicating an 
error to the surrounding script.

So, what's a poor boy to do?  I can't ask for a tar patch, I've got to be able 
to install on systems already in the field today.  And the --overwrite option 
doesn't seem to do what it was intended to do - revert to prior behavior.  Any 
suggestions?

Ross Patterson
Computer Associates



reply via email to

[Prev in Thread] Current Thread [Next in Thread]