[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";
©File("$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