Issue with updmap-sys use of symlinks in cross platform installation

John Collins jcc8 at psu.edu
Tue Mar 19 15:59:51 CET 2024


Hi Karl et al.,

On 3/18/24 5:37 PM, Karl Berry wrote:
> Hi John,
> 
>      I would like to propose that it also use copy when the windows
>      platform is installed, even when updmap.pl is being run under
>      another OS.
> 
> Reasonable, but updmap.pl doesn't have any easy way to know if windows
> binaries are installed (it doesn't read tlpdb), though I guess something
> could be hoked up for the native TL case. (E.g., see if
> <bindir>/../windows exists.)


Would a solution be to add a configuration variable for updmap that could be 
used to force the use of copy instead of symlinks?  Then the installer and 
tlmgr could set this whenever they detect a situation that needs copy.  The 
user could also make the setting when the automatic detection goes astray.  (A 
setting for this in the TL installer and tlmgr would be nice.)

See below for a situation where this would be helpful (and I've encountered in 
practice).

>      Perhaps there are other situations when copy is needed instead of making
>      symlinks, but updmap-sys does not detect the need.
> 
> In theory, if (under Unix) the tree is mounted on a filesystem that
> doesn't support symlinks, for one. Clearly doesn't happen often in
> practice or we would get bug reports.

Unfortunately, support for symlinks is actually per OS-file system combination. 
  E.g., macOS (and I think MSYS2 and cygwin) support symlinks on FAT32 file 
systems.  Here's a problem I encountered a few years back, but wasn't enough of 
a priority to sort out (or make a bug report).

1. I wanted to make a portable TL installation on a USB drive (with the FAT32 
file system).  That was so that I could easily use TL on other computers than 
my own, where the owner has either not installed a TeX system or has an 
out-of-date one.  This is undoubtedly a minority need, but it is a real one.

2. I made the portable installation on my main computer, which runs macOS, and 
then added the windows platform.  Since macOS supports symlinks on FAT32, 
updmap-sys made symlinks.

3. Therefore the installation would not work on Windows.

4. Probably the same thing would occur if I made the installation from MSYS2 or 
cygwin.  Note that MSYS2 and cygwin implement symlinks on FAT32 in a way 
incompatible with how macOS implements.  In contrast, Ubuntu (and maybe other 
linuxes) doesn't support symlinks on FAT32.

5. Even if the file system on the USB drive were UDF, which does intrinsically 
support symlinks, the symlinks would still not be supported on Windows for 
non-admin users.  (I haven't tried installing TL on a UDF formatted drive, but 
I did try making symlinks on UDF under an OS that supports them.  Windows 11 
wouldn't let me use them --- I got a permission denied message.)

Best,
John


More information about the tex-live mailing list.