[Fedora TeX Live] updmap.cfg issues

Pjotr Markevitch pjotr.markevitch at gmail.com
Wed Aug 10 11:38:11 CEST 2011


After a fresh TL2011 install on fedora 15 x86_64, I encountered similar issues 
as reported on this mailing list regarding the updmap.cfg config file. 
Specifically, I observe similar problems as 

http://permalink.gmane.org/gmane.linux.redhat.fedora.texlive/67
http://comments.gmane.org/gmane.linux.redhat.fedora.texlive/28

Two problems occur: 

1) After a fresh (minimal) install, the updmap.cfg file 
'/usr/share/texlive/texmf/web2c/updmap.cfg' does not contain all entries 
(amongst others, the texlive-amsfonts Map and MixedMap entries are missing), 
hence the 'updmap-sys' command will not correctly update the 'psfonts.map' and 
the 'pdftex.map' files.

2) Once TL2011 is installed, new Map or MixedMap entries for additional font 
packages (i.e. texlive-kpfonts) are not 'seen' by updmap-sys, and therefore, 
again, the 'psfonts.map' and the 'pdftex.map' files are not updated.

Digging further into these issues, I found the following:

1) During a fresh install, the initial 'updmap.cfg' file is installed (at least 
on fedora 15) to '/usr/share/texlive/texmf/web2c/updmap.cfg' by the package 
texlive-tetex. When the install is complete, issuing 'rpm -qa --last | head -n 
30' reveals that this package is installed AFTER texlive-amsfonts and some other 
font packages. This causes the first issue, since this way, previous changes to 
this file (i.e. the changes by texlive-amsfonts, shown by 'rpm -q texlive-
amsfonts --scripts') are discarded. Once all texlive packages are installed, the 
posttrans scriptlets are run, which invoke texhash and updmap-sys. After this, 
due to the previously described issue, only 4 entries are shown by 'updmap-sys -
-listmaps', corresponding to the packages installed after texlive-tetex (being 
texlive-tetex, texlive-mflogo, texlive-lm and texlive-cm).

To fix this issue, the dependencies of the different texlive-* packages should 
reflect the possible dependency on the updmap.cfg file in texlive-tetex.

2) The second issue is related to the way 'updmap-sys' updates the map files. 
When the updmap-sys command is run for the first time, the file 
'/usr/share/texlive/texmf/web2c/updmap.cfg' is copied to 
'/usr/share/texlive/texmf-config/web2c/updmap.cfg' and the map files are 
updated. Additionally, '/etc/texmf/web2c/updmap.cfg' is created as hardlink to 
'/usr/share/texlive/texmf-config/web2c/updmap.cfg'. Once this file exists, 
subsequent calls to 'updmap-sys' will ONLY track changes to this file and ignore 
changes to '/usr/share/texlive/texmf/web2c/updmap.cfg'. However, as shown by 
i.e. 'rpm -q texlive-kpfonts --scripts', the texlive-* packages make changes to 
'/usr/share/texlive/texmf/web2c/updmap.cfg', and therefore the map files are not 
correctly updated. 

This last issue is solved by removing the updmap.cfg file in the texmf-config 
directory BEFORE installing a new texlive-* font package, which was mentioned 
before on this list. However, this is only a temporary fix.

On an old install of TL2010, issuing 'ls -il /usr/share/texlive/texmf{,-
config}/web2c/updmap.cfg' shows that the 'updmap.cfg' files in the texmf and 
texmf-config directory used to be hardlinks to the same file (shown by the 
identical inode number). In more recent versions of TL2011 however, they are 2 
separate files. Hence, to fix the second issue, the 'setupCfgFile()' routine in 
'/usr/share/texlive/texmf/scripts/tetex/updmap.pl' can be modified to test 
whether '/usr/share/texlive/texmf/web2c/updmap.cfg' is newer than 
'/usr/share/texlive/texmf-config/web2c/updmap.cfg'. Or we could again make a 
hardlink.

For reference, the current 'setupCfgFile()' routine (texlive-tetex-2011-
0.2.3.0.svn23150.fc15.noarch).

###############################################################################
# setupCfgFile()
#   find config file if none specified on cmd line.
#
sub setupCfgFile {
  if (! $cnfFile) {
    my $tf = `kpsewhich --var-value=TEXMFCONFIG`;
    chomp($tf);
    if ($tf && ! -f "$tf/web2c/$cnfFileShort") {
      &mkdirhier("$tf/web2c") if (! -d "$tf/web2c");
      if (-d "$tf/web2c" && -w "$tf/web2c") {
        unlink "$tf/web2c/$cnfFileShort";
        my $original_cfg=`kpsewhich updmap.cfg`;
        chomp($original_cfg);
        print("copy $original_cfg => $tf/web2c/$cnfFileShort\n") if !$quiet;
        $newcnf="$tf/web2c/$cnfFileShort";
        &copyFile("$original_cfg", "$tf/web2c/$cnfFileShort");
        $updLSR->{add}("$tf/web2c/$cnfFileShort");
      }
    }
    $cnfFile = "$tf/web2c/updmap.cfg";
    if (-s $cnfFile) {
      print "Config file: \"$cnfFile\"\n" if !$quiet;
    } else {
      die "$0: Config file updmap.cfg not found.\n";
    }
  }
}

###############################################################################





More information about the TeXLive mailing list