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.