Problem with tar version 1.29 (in Cygwin 3.6 64 bit) in extracting sym-link files

Brian Inglis Brian.Inglis@SystematicSw.ab.ca
Mon Oct 5 17:29:13 GMT 2020


On 2020-10-05 09:23, Hamish McIntyre-Bhatty via Cygwin wrote:
> On 04/10/2020 11:28, Andrey Repin via Cygwin wrote:
>> Greetings, vinay Hegde!
>>
>> Please no top-posting in this list.
>>
>>> On Fri, Oct 2, 2020 at 9:13 PM Eliot Moss wrote:
>>>> On 10/2/2020 11:26 AM, vinay Hegde via Cygwin wrote:
>>>>> Hi Cygwin Team,
>>>>> In Cygwin 3.6, I am facing an issue while using tar.exe for extracting
>>>>> .tar.z file.
>>>>>
>>>>> Issue summary:
>>>>> When I use 'tar.exe' to extract the .tar.z file, it extracts all files
>>>>> including symlinks. But symlink file size will be 0KB & it throws
>>>>> error 'The file cannot be accessed by the system', if I try to open in
>>>>> any Windows editor like notepad or notepad++
>>>>>
>>>>> Below are the details:
>>>>> -   OS: Windows 2019
>>>>> -   Cygwin version installed: 3.6 (tar version: 1.29)
>>>>> -   Command used to extract the tar file is: tar -zxvf jre64.tar.Z
>>>>> -   'ls -l' on the extracted directory shows:
>>>>> lrwxrwxrwx  1 etbuild Domain Users      8 Jul 10  2017 ControlPanel -> jcontrol
>>>>> -rwxr-xr-x+ 1 etbuild Domain Users   7734 Mar 15  2017 java
>>>>> -rwxr-xr-x+ 1 etbuild Domain Users 128791 Mar 15  2017 javaws
>>>>> -rwxr-xr-x+ 1 etbuild Domain Users   6264 Mar 15  2017 jcontrol
>>>>>
>>>>> -     As you can see 'ControlPanel' is a symlink file with 0KB
>>>>> (8Bytes) size. This file, I cannot open in any Windows editor. It
>>>>> throws error like ''The file cannot be accessed by the system'
>>>>>
>>>>> -    However, I can open this file in vi editor or I can 'cat' this.
>>>>>
>>>>> -    Earlier, I was using Cygwin version 1.7 (tar version: 1.27) & in
>>>>> that, this issue was not there. Symlink file size was 1KB & I could
>>>>> open it with any Windows editor.
>>>>>
>>>>> Please suggest what needs to be done to fix this issue.
>>>> Hi, Vinay - Cygwin can use, and create, a variety of forms of links.  Some of these are understood
>>>> by Windows tools, some not.  I suggest you read in the Cygwin documentation about symlinks and
>>>> decide what kind are best for you.  Then you'll need to set that up, delete the existing link, and
>>>> re-create it.  I personally run with CYGWIN=winsymlinks:native, but as we say in Internet land, YMMV.
>>>>
>>> Hi Eliot Moss,
>>> Thank you very much for the quick response & the information.It really helped.
>>> I just set 'CYGWIN=winsymlinks:lnk' & I am now able to open sym-link
>>> file. Both 'CYGWIN=winsymlinks:lnk' & 'CYGWIN=winsymlinks' are working
>>> for me.
>>> But it creates a shortcut(not the regular file). Hope it won't impact
>>> my existing setup.
>>> But both  'CYGWIN=winsymlinks:native' (which is default I believe) &
>>> 'CYGWIN=winsymlinks:nativestrict' are not working for me. Just to
>>> understand, In what OS environment/File System 'native' will work?
>> Given enough permissions, "native" will work everywhere, it will create native
>> symlink, but failing that, it will fall back to creating Cygwin link.
>>
>> LNK is an Explorer shortcut, which would work with many programs outside
>> Cygwin, but not necessarily with your one.
>>
>> See https://cygwin.com/cygwin-ug-net/using.html#pathnames-symlinks as well as
>> https://cygwin.com/cygwin-ug-net/using-cygwinenv.html 
> 
> Does anyone happen to know if there's a way to automatically regenerate
> existing symlinks after changing these settings?

Example: remove the "echo" after checking it will update only the desired links:

$ for link in `find . -type l`
> do
>   targ=`readlink $link`
>   echo ln -fsv $targ $link
> done
ln -fsv linux-kernel/linux-next/cpufeatures.h ./cpufeatures.h
ln -fsv linux-kernel/linux-next/cpufeatures.log ./cpufeatures.log
ln -fsv ../../cygwin/newlib-cygwin/winsup/cygwin/fhandler_proc.cc
./cpuinfo/fhandler_proc.cc
ln -fsv ../../cygwin/newlib-cygwin/winsup/cygwin/sysconf.cc ./cpuinfo/sysconf.cc
ln -fsv ../cygwin/cpuid ./cygwin
ln -fsv CPUID_Explorer/CPUID/Debug Static/CPUID.exe ./explorer
ln -fsv /lib/gcc/x86_64-pc-cygwin/9.3.0/include/cpuid.h ./gcc/cpuid.h
ln -fsv linux-kernel/linux-prev-next.diff ./linux-prev-next.diff
ln -fsv linux-kernel/linux-next/scattered.log ./scattered.log

-- 
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada

This email may be disturbing to some readers as it contains
too much technical detail. Reader discretion is advised.
[Data in binary units and prefixes, physical quantities in SI.]


More information about the Cygwin mailing list