[tlbuild] Broken shebangs in TeX Live scripts

Bruno Voisin bvoisin at icloud.com
Wed Apr 13 17:19:19 CEST 2022


Reinhard Kotucha wrote:

> Is it difficult to install Bash on the systems you mentioned?  Are
> there package managers available which allow installation of free
> software as easily as on Linux?

bash is still part of macOS, and at the expected location. Here on the very latest beta (macOS Monterey 12.4 Beta):

	% which bash
	/bin/bash

But it is no longer the default shell (zsh is). I have read that bash might be removed at some point, but could not found any official Apple statement about this.

Apparently, it all comes down to a license issue. <https://dev.to/bphogan/use-modern-bash-shell-on-macos-22a6> writes

"macOS ships with an older version of the Bash shell, because newer versions use a license that makes it more difficult for Apple to integrate into their OS. In macOS Catalina, Apple changed the default shell to ZSH for this reason."

and mention the older version as 3.2.57(1)-release. Indeed, on macOS 12.4 Beta,

	% bash --version
	GNU bash, version 3.2.57(1)-release (arm64-apple-darwin21)
	Copyright (C) 2007 Free Software Foundation, Inc.

More worrying for the future is the planned removal of scripting languages. Python was removed in macOS 12.3, which forced TeX Live Utility (the Mac GUI to tlmgr, and more), largely written in Python, to embed a Python framework.

Next in line are Perl and Tcl. Right now you get:

	% tclsh

	WARNING: This version of tcl is included in macOS for compatibility with legacy software. 
	In future versions of macOS the tcl runtime will not be available by 
	default, and may require you to install an additional package.

and

	% perl -de1

	WARNING: This version of perl is included in macOS for compatibility with legacy software. 
	In future versions of macOS the perl runtime will not be available by 
	default, and may require you to install an additional package.

So the countdown has started already for those two!

There is a nice pre-built macOS Python package at <https://www.python.org>, but no such thing for Tcl at <https://www.tcl.tk> nor Perl at <https://www.perl.org>.

The approach used in TeX Live for Windows <https://tug.org/texlive/windows.html>, namely provide minimal Perl and Tcl setups inside TeX Live, in a way that does not affect PATH, seems promising.

Being part of the MacTeX team, I looked rapidly through the TeX Live source, to find info on how these setups are created (ie which perl and tcl packages are selected -- for example are LWP::UserAgent and Mozilla::CA included for Perl --, how they are built, how they are installed), to prepare for the future, see whether/how the approach could be adapted to macOS. But I couldn't find anything. Does anybody here know about this?

Finally, coming back to the original question, there are package managers on macOS. The two most popular ones are MacPorts <https://www.macports.org>, written in Tcl and installing to /opt/local, and Homebrew <https://brew.sh>, written in Ruby and installing to /usr/local on Intel Macs and /opt/homebrew on ARM Macs. There used to be Fink <https://www.finkproject.org>, which installed to /sw, but not much seems to be happening there these days.

Bruno Voisin




More information about the tlbuild mailing list.