Subject: Re: inside /bin/tar: cannot change mode
From: Denis Excoffier via Cygwin <[email-masked]>
To: Brian Inglis <[email-masked]>, [email-masked]
Cc: Denis Excoffier <[email-masked]>
Date: Fri, 26 May 2023 06:52:13 +0200
List-Id: General Cygwin discussions and problem reports <cygwin.cygwin.com>

> On 2023-05-25 09:52, Brian Inglis via Cygwin wrote:
> 
> On 2023-05-24 12:18, Denis Excoffier via Cygwin wrote:
>> I have an error (about symlinks it seems) that i have never met in years: Cannot change mode.
>> Apart from this message (and return code != 0), the ?tar extract? is ok.
>> % uname -a
>> CYGWIN_NT-10.0-17763 {edited} 3.5.0-0.295.g3bee68248fc8.x86_64 2023-05-01 17:58 UTC x86_64 Cygwin
>> % cd /tmp; rm -rf mytest mytest.tar
>> % mkdir mytest
>> % ln -s b mytest/a
>> % /bin/tar cf /tmp/mytest.tar mytest
>> % /bin/tar tvf /tmp/mytest.tar
>> drwxr-xr-x {edited}/{edited} 0 2023-05-24 13:12 mytest/
>> lrwxrwxrwx {edited}/{edited} 0 2023-05-24 13:12 mytest/a -> b
>> % rm -rf mytest
>> % /bin/tar xf /tmp/mytest.tar
>> /bin/tar: mytest/a: Cannot change mode to rwxr-xr-x: Not a directory
>> /bin/tar: Exiting with failure status due to previous errors
>> % echo $status
>> 2
>> %
>> /tmp is under ntfs filesystem, all packages are up to date (e.g. /bin/tar --version is 1.34).
> 
> I recently got this during a package update build, when it decided to tar a 
> build directory, which contained only symlinks to files in the src directory, 
> which the tar did not include, which would have created many dangling symlinks.
> 
> I fixed the issue by adding -h, --dereference to give chf and tar real files.
> 

I don’t catch this. A symlink, dangling or not, is a normal file. In any case, the problem is the
same if the symlink target is a member in the archive. See for example

% mkdir -p /tmp/mytest2; cd /tmp/mytest2
% tar xf cygwin-devel-3.5.0-0.295.g3bee68248fc8.tar.xz
/bin/tar: usr/lib/libg.a: Cannot change mode to rwxr-xr-x: Not a directory
/bin/tar: Exiting with failure status due to previous errors
%

I add that my symlinks are default ones, i.e. JUNCTIONS.

Denis Excoffier.

-- 
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple