Re: install tlgpg fails
Bruno Voisin via tex-live <[email protected]> Sat, 21 Feb 2026 12:46:44 +0100
| Newsgroups | gmane.comp.tex.live |
|---|---|
| Message-ID | <[email protected]> |
> Adam Maxwell wrote:
>
> I'm trying to understand why this fails (and perhaps other things as well; I haven't tried). This is BasicTeX 2026 on an Intel Mac.
>
> $ sudo tlmgr --machine-readable --repository https://texlive.info/tlgpg/ --persistent-downloads install --reinstall tlgpg
> start load https://texlive.info/tlgpg/
> finish load https://texlive.info/tlgpg/
> location-url https://texlive.info/tlgpg/
> total-bytes 770172
> end-of-header
> tlgpg.universal-darwin i - 18 769604 ??:?? ??:?? - - -
> TLPDB::_install_data: unsupported container format xz for https://texlive.info/tlgpg/archive/tlgpg.universal-darwin.tar.xz
> tlgpg i - 23 568 00:00 00:00 - - -
> TLPDB::_install_data: unsupported container format xz for https://texlive.info/tlgpg/archive/tlgpg.tar.xz
> end-of-updates
> tlmgr: package log updated: /usr/local/texlive/2026basic/texmf-var/web2c/tlmgr.log
>
> I'm puzzled because the xz binary exists and at least --help works.
>
> $ file /usr/local/texlive/2026basic/tlpkg/installer/xz/xz.universal-darwin
> /usr/local/texlive/2026basic/tlpkg/installer/xz/xz.universal-darwin: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64:Mach-O 64-bit executable arm64]
> /usr/local/texlive/2026basic/tlpkg/installer/xz/xz.universal-darwin (for architecture x86_64): Mach-O 64-bit executable x86_64
> /usr/local/texlive/2026basic/tlpkg/installer/xz/xz.universal-darwin (for architecture arm64): Mach-O 64-bit executable arm64
I can't reproduce this, on ARM Mac with either MacTeX 2026
% sudo tlmgr --machine-readable --repository https://texlive.info/tlgpg/ --persistent-downloads install --reinstall tlgpg
Password:
start load https://texlive.info/tlgpg/
finish load https://texlive.info/tlgpg/
location-url https://texlive.info/tlgpg/
total-bytes 770168
end-of-header
tlgpg.universal-darwin I - 18 769602 ??:?? ??:?? - - -
tlgpg I - 23 566 00:00 00:00 - - -
end-of-updates
running mktexlsr ...
done running mktexlsr.
tlmgr: package log updated: /usr/local/texlive/2026/texmf-var/web2c/tlmgr.log
tlmgr: command log updated: /usr/local/texlive/2026/texmf-var/web2c/tlmgr-commands.log
or BasicTeX 2026
% sudo tlmgr --machine-readable --repository https://texlive.info/tlgpg/ --persistent-downloads install --reinstall tlgpg
Password:
start load https://texlive.info/tlgpg/
finish load https://texlive.info/tlgpg/
location-url https://texlive.info/tlgpg/
total-bytes 770172
end-of-header
tlgpg.universal-darwin I - 18 769604 ??:?? ??:?? - - -
tlgpg I - 23 568 00:00 00:00 - - -
end-of-updates
running mktexlsr ...
done running mktexlsr.
tlmgr: package log updated: /usr/local/texlive/2026basic/texmf-var/web2c/tlmgr.log
tlmgr: command log updated: /usr/local/texlive/2026basic/texmf-var/web2c/tlmgr-commands.log
Does the output change if you set TEXLIVE_PREFER_OWN to 1? Or TEXLIVE_COMPRESSOR to /usr/local/texlive/2026basic/tlpkg/installer/xz/xz.universal-darwin? Maybe you have another xz on your system, installed at the OS level, that tlmgr is using, since system decompressors are preferred by default.
The message you get comes (I think) from the test
if (!member($decompressorType, @{$::progs{'working_compressors'}})) {
return(0, "unsupported container format $decompressorType");
in TLUtils.pm line 2745 ff, checking whether xz belongs to working_compressors.
working_compressors, is turn, is defined, I think, on lines 2996 ff
my @working_compressors;
for my $defprog (sort
{ $Compressors{$a}{'priority'} <=> $Compressors{$b}{'priority'} }
keys %Compressors) {
# do not warn on errors
if (setup_one(($isWin ? "w32" : "unix"), $defprog,
"$bindir/$defprog/$defprog.$platform", "--version",
$tlfirst)) {
push @working_compressors, $defprog;
# also set up $::{'compressor'} if not already done
# this selects the first one, but we might reset this depending on
# TEXLIVE_COMPRESSOR setting, see below
defined($::progs{'compressor'}) || ($::progs{'compressor'} = $defprog);
}
}
$::progs{'working_compressors'} = [ @working_compressors ];
Looking at setup_one and setup_system_one a few lines later, my impression is that
(1) one xz program is chosen, coming from texlive or the system depending on $tlfirst which is related to TEXLIVE_PREFER_OWN, or TEXLIVE_COMPRESSOR is used in case it is defined, and then
(2) the output of this xz --version determines whether this xz is considered working or not.
So it seems that the xz that is used in your case is considered not working.
As usual, I'm not a programmer so this is mostly guesswork, possibly entirely wrong.
Bruno