For the compilation and installation, a script (one version for Plan9, another one for Unix like) is provided, and will automatically launch one step after the other, downloading, configuration and installation, asking to accept or change some user definable parameters.
In particular, it is possible to make an unprivileged installation (on systems implementing a privileged administrator/root user).
Details about sources available for download is also given.
RELEASE NOTES
- 2024-11-19: Compilation fixes for
Plan9/9front. Plan9/9front APE
sed(1) doesn't understand ranges and—at least under 9front and APE—
printf(1)
doesn't process the format. RISK has been modified to avoid these in order to work under Plan9/9front. Thanks to Elyes Kanzari for the problem report! - 2024-11-09: Compilation fixes for newer versions of gcc. Newer version(s) of gcc is/are treating as errors what were previously warnings about strict prototypes or missing prototypes. The CWEB utilities were written in order to be as portable as possible, including with old C compilers, and were omitting full prototypes, as well as the use of void when no parameters. This has been fixed, both in RISK—that may provide, on demand, ctangle—as well as kerTeX. Thanks to Antonio Olivares for reporting the problem!
- 2024-07-07 : Modification of risk_comp to circumvent a bug in Debian dash(1) system shell. This is only to fix for a compilation error due to a bug in Debian's dash. There is no change for the resulting installed kertex_T. Thanks to B. Atticus Grobe for report, tracing the offending code and testing the solution!
- 2024-05-21: Fix of a blunder in the handling of third parties packages (recipes). The POSIX.2 library used for handling what is related to packages can be updated separately from the core system, without rebuilding everything. Unfortunately, a blunder made the "updated" version available for download having the same release number as the good, in the distribution, but with a blunder; and, when updating, this "same" library overwrote the good one installed making recipes failing. It has been corrected and a whole release has been done. Warning! One has to download new versions of get_mk_install.sh or get_mk_install.rc! The reason has nothing to do with the previous problem: I had "upgraded" CWEB with a new version not anymore under Silvio Levy responsability; unfortunately, this version depends on a LaTeX file and, even more problematic, debugging of included cweb files doesn't work anymore. So I have reverted to the last Knuth and Levy versions, and there is not anymore a cweb tarball to unpack. Thanks to Romano for making the report about the former problem on 9front!
- 2024-05-21: LaTeX recipe updated. The LaTeX recipe has been updated to match what is current (including sources organisation) on CTAN as of today—the kergis.com cache has been updated as well. Thanks to Jack Lawler for reporting the error!
- 2024-02-16: Important informations concerning the new recipes (for LaTeX users). This has to do with the gestion of languages (Babel). See Managing additions to the kernel.
- 2024-02-14: Fix to recipe pl@fonts.sh. The directory name in the zip file has changed and the recipe has been thus fixed. Thanks to Antonio Olivares for the error report!
- 2024-02-01: Fix to recipe urw@fonts.sh. The Classico part was updated, and the list was incorrect. Thanks to Antonio Olivares for the report!
- 2024-01-29: Update to the extensions framework. An important update to the extensions framework has been made as well as updating the recipes for the current state of CTAN. There is no need to reinstall the system, but simply to update the pkg framework. See Managing additions to the kernel.
- 2023-08-01: kerTeX / MetaPost: fix for a fault introduced when simplifying the search for an input'ed file. When simplifying the search of an input'ed file, that was "stuttering" in case of failure—the first search already searched for all alternative, so retrying was yielding exactly the same result—I had suppressed an alternative branch of the code, useless for the result, but inside which an automatic variable was defined ensuring that it was then defined also in case of failure. The result was that, in case of failure to find the file, the automatic variable had a random value, in all probability different from zero and was interpreted as "true" while it should have been false. Coredump was following. Corrected. Thanks to Dirk-Wilhelm Peters for reporting the problem!
- 2023-08-01: kerTeX / Prote: file primitives behavior. The new file primitives are expected to behave like the input primitive i.e. to add a ".tex" extension if there is none. Prote modified to do so. Needed for new LaTeX.
- 2023-07-25: >kerTeX: CWEB update and armv8l parm addition. The CWEB utilities have been updated to the 4.9 version now maintained by Andreas Scherer, and support has been added for armv8l (v8 ISA for 32 bits version in little endian). One has to use the new version of get_mk_install since there is the addition of a separate sources tarball: the one for CWEB separately maintained. Thanks to Antonio Olivares for bug reports on Android!
- 2023-05-09:Fix for latex.sh on Plan9. Sed(1) on Plan9/9front doesn't handle characters classes. Thanks to Jack Lawler for the report and fix!
- 2023-05-08: get_mk_install.sh. The script now verifies that the user given (if distinct from the default) does exist—the installation does NOT create the user and group—and that he belongs to the group given.
- 2023-03-17: LaTeX: recipe updated in
order to allow to add various different languages hyphenation
patterns and exceptions, by Babel names.
By defining on the command line (or in the environment) the variable
SUPPORTED_LANGUAGES with a blank separated list of Babel
names, the hyphenation patterns and exceptions of these languages
are compiled in the format. The switch, afterwards, has to be done
with Babel normal macros. Exemple:
SUPPORTED_LANGUAGES="french ukenglish ngerman russian" $KERTEX_SHELL latex.sh install
will add hyphenation for french, english UK variant (an extension of D.E.K. `hyphen.tex', new german (post 1996) and russian, the related "user level" Babel related packages having to be added afterwards, via their dedicated kerTeX recipe. - 2023-03-05: kerTeX_M: fix for compilation on RHEL. On RHEL, the order of the objects linked, at least when one is called "lib.o", does matter. Thanks to B. Atticus Grobe! for the report.
- 2023-01-19: kerTeX 0.99.19.01: Increase the memory (BIG) for current LaTeX on CTAN. The current LaTeX version on CTAN needs more memory in TeX (the memory is a compile time defined constant). Thanks to Antonio Olivares for the report!
- 2022-11-06: Fix for the compilation of kerTeX_T on Plan9. A macro definition related to the POSIX version is needed in order to compile some system dependent code (for the implementation of one of the supplementary routines required by LaTeX). Reported by Skip Tavakkolia. Also, fix of a blunder, spotted by Martin Ruckert, in input.ch (but that had no functionnal implication—no need to upgrade just for that). Thanks to both for reporting!
- 2022-10-13: Fix to the LaTeX recipe for Plan9. Some commands added to the recipe recently were not matching Plan9 usage (rmdir, mv directories...) and the call to mf was done without ensuring that the binary was in the PATH/path. Fixed. Thanks to Chris Gorman for the report!
- 2022-09-26: Update of the LaTeX recipe . The recipe has been updated to add various files needed to process at least the bbold@fonts.sh dtx when adding the support of these fonts for LaTeX (compatibility?). Thanks to Antonio Olivares for reporting and testing!
- 2022-09-12: Update of the
LaTeX recipe (2022-06-01-PL5). The recipe has been updated
in order to work with the current version on CTAN. Note: if the name of
the files have been unchanged, a recipe will work even with a more
recent version on CTAN. In case of a change, the recipe will fail and
has to be then used with the KerGIS cache of the files matching the time
when the recipe was written:
$KERTEX_SHELL rcp.sh -p http install
. Thank you to Antonio Olivares for reporting the incompatible change. - 2022-09-08: kerTeX minor release. Support for FreeBSD fetch as HTTP client (it supports CTAN CDN mirror redirections)—one has to use the new version of get_mk_install.sh to select it at installation time). Also, improvement of mp2ps for isolated MetaPost figures.
- 2022-05-18: Two new LaTeX packages: exam and lcg. (Suggested for addition by Antonio Olivares...)
- 2022-04-28: LaTeX package. Another bug fixing: the search path for fonts (installed by this very recipe) was not specified; but the LaTeX ones are mandatory for the format; hence they were searched with the default paths (the kerTeX installation on the node) and found only when LaTeX has been previously installed, and not found in a fresh install. Fixed. Thanks to Antonio Olivares for the bug report!
- 2022-04-26: Connection problems for
recipes (pkg). The recipe latex.sh uses a server
address that is in fact a CDN, redirecting to HTTPS servers depending on
load and location. Two problems : some http clients (depending on the
host system) are not able to handle the redirections or
(ftp(1) on FreeBSD) do not handle HTTPS; et, secondly,
curl, that can handle both (but with some flags)
is rejected by some servers when identified as Curl... If the default
client does not manage to download, use for example lftp(1)
by declaring it this way:
sys_httpc=lftp sh latex.sh install
or update the pkg management in kerTeX by:
sh $KERTEX_LIBDIR/pkg/rcp/tools@pkg.sh install that will allow (or should...) to use curl as client (sys_httpc=curl). Finally, you can also replace in the latex.sh recipe the server line: http://mirrors.ctan.org/ by http://downloads.kergis.com/kertex/pkg/src/ that has been fed with a copy of the data required by latex.sh, and that doesn't use a CDN nor require HTTPS (it serves HTTPS too, but it is not a requirement). - 2022-04-21: latex.sh: bug fix; kerTeX 0.99.17.1: increase of BIG capacity for LaTeX. A blunder in the latex.sh was not installing all the fonts related files relative to psnfss. Fixed. Thanks also to Jack Lawler! for signaling a portability blunder in the recipe (unzip used instead of $PKG_UNZIP). Pour kerTeX: capacities had to be increased for LaTeX documents defining a lot of control sequences. Also correction of an error emitted when meeting an end of file without the line being ended by a end of line. Ease of use: some documents referred to epsf.tex as epsf.sty: links added. Thanks to Antonio Olivares for the reports!
- 2022-04-18: latex.sh: bug fixes . Graphics was included but not mentionned in KXPATH; psnfss was incompletely included, all the pfb definition fonts missing and the dvips maps as well. Corrected. Thanks to Antonio Olivares for the report!
- 2022-04-17: kerTeX 0.99.16.0: Prote default engine and LaTeX3 compatibility. Release of the stable version with Prote as default TeX engine (TeX, e-TeX compatibility; additional primitives required by LaTeX3, and input handling compatible with Web2C (TeXLive) version). Also: the curdir specification "./some/file/path" leads to the pathname being taken as is, without searching (the curdir is the process one; not the dirname of the first input script file). The latex.sh recipe has been updated to allow to compile and install the latest version on CTAN (LaTeX related recipes—the present ones should be compatible—will be updated progressively when time permits).
- 2022-03-25 :Prote (devel): implementation of supplementary methods for the input primitive. Prote—default engine now for TeX, eTeX and LaTeX—now accepts a double quoted argument (allowing spaces in the name) and a grouped argument subjected to various expansions as a file name definition for the input primitive. Explanations can be found in the input.pdf document on the dedicated Prote page. Thanks to Phelype Oleinik for the test file about the expected behavior of the implementation! (Note: the recipe for LaTeX is unchanged, waiting the verification that the double quotes dance does not hide any devil in a little corner.)
- 2022-03-07: Prote: dev version 0.99.15.9: allowing spaces in filenames at the general shared library level. The majority of the engines used nowdays with LaTeX allow to specify as input, filenames with spaces (while, in the original code, spaces where delimiters and were thus forbidden in filenames). In order to achieve this, the shared library used for file searching and opening by all the utilities (whether written in WEB/Pascal or in C) had to be adapted and all the WEB/CWEB change files and/or the C code modified for the new API. The modification of the TeX input primitive will come next. This is an alpha release.
- 2021-10-14: Prote has been successfully tested on NetBSD, FreeBSD, DragonFly and Android, on amd64, aarch64 and earmv7 machines. As usual, thanks go to Antonio Olivares for being instrumental in testing on a lot of different systems!
- 2021-10-11: Prote has been integrateg in the development version of kerTeX. This version is available for development by selecting dev when get_mk_install.sh (or get_mk_install.rc) asks for the version. Please see the Prote page on this site for more informations!
- 2021-09-21: Prote: new engine, TeX and e-TeX compatible, with extensions. In the same spirit as e-TeX, Prote is developed on TeX and e-TeX, being compatible with these and adding extensions. The first extensions are the latest LaTeX required primitives (missing in TeX and e-TeX). The engine will be incorporated soon in the kerTeX distribution.
- 2021-09-02: Security fix for TeX, METAFONT, MetaPost and e-TeX. A bug, in the handling of the filenames in extrem cases has been found, and the present correction at least ensures that when writing the log or dvi files, the extensions ".log" and ".dvi" are always present. If you have installed the LaTeX recipe, after upgrading, please re-install LaTeX so that the underlying engine is the updated one (e-TeX).
- 2021-06-27 : Fix for kerTeX_T:mp2ps. echo treats or not escaped characters (this is implementation defined in POSIX.2). With the Pi shell, escaped characters are interpreted leading to an incorrect generation of the TeX template. This is corrected—this is the only modification and if mp2ps is working on your system, there is no need to update. Thanks to Antonio Olivares for reporting!
- 2021-04-22: D.E. Knuth's 2021 tune-up incorporated. D.E. Knuth has revised the TeX, METAFONT and al. system in early 2021. KerTeX has been updated to latest versions, e-TeX and MetaPost being adapted to match also.
- 2021-04-07: Fixes for some babel recipes (pkg). The Babel's recipes belarusian, friulan, georgian, hungarian, italian, occitan, piedmontese, romansh and slovenian have been fixed for a harmless bug: there is no .ins generated so the processing of these shall not be called. Thanks to Antonio Olivares for the report!
- 2021-03-08: fixes for Plan9. Plan9 doesn't provide rmdir and mv renames/moves files but not directories. Fix in RISK, RISK version adjustement in kertex_M, fix for mp2ps in kertex_T, and fixes for the recipes (pkg) latex.sh and amstex.sh. Thanks to Gilman Ironworks for reporting!
- 2021-02-11: fix of RISK for Raspberry Pi OS. The dynamically shared libc needs a second static library chunk whose informations are given in a pseudo libc in /usr/lib/... that is actually a ld script. Searching first /lib/... finds the true libc file but then, when linking, some symbols are not resolved. Solution: modify the order of the search for raspbian. (Thanks to Antonio Olivares for the report of the failure with the new version of Raspberry Pi!)
- 2020-11-22: fix to latex.sh recipe. The new recipe now integrates required packages (ams, babel core, cyrillic, graphics, tools—and ec fonts) that were separate packages before. Hence, after installing the new version, the latex recipe automatically removes the obsolete packages it replaces. But the new files were installed in the very same directory as the resp. old package. Hence, it the old package was installed, removing it removed the new files that have overwritten the old... Fixed. Thanks to Antonio Olivares!
- 2020-11-22: RISK and kerTeX_T fixes. RISK fix for untested "cd try_dir" that might fail (Linux); RISK fix and kerTeX_T fix for static compilation under Linux based distributions (tested on Android). Thanks once more to Antonio Olivares for the reports!
- 2020-11-18: RISK fix for FreeBSD and russian and ukrainian recipes fixes. RISK: Search for clang and do not take c99 that accepts only POSIX options. Russian and ukrainian: batchfile definition for docstrip has to be kept as is. Thanks to Antonio Olivares for the reports!
- 2020-11-17: RISK fixes for OpenBSD and arm64. Fixes have been applied for compilation on OpenBSD; paramaters file has been added for arm64 (aarch64). Thanks to Asad Lodhia for reports and tests!
- For LaTeX (babel) language recipes. The autogeneration generation of files is done via docstrip, that is provided by LaTeX and hence has to be done by latex and not tex—docstrip is accessible by tex if and only if babel@tex has been added. Thanks to Antonio Olivares for reporting the error!
- carlisle@latex recipe added for miscellaneous style or macros files written by David Carlisle (scalefnt.sty for example).
The current published version is
stable: 0.99.23.00 (CWEB update). Please refer to
engineering (present; future) for a discussion about
the present state.
Since some details may differ from one version to the other (for
example, I have changed the name of the recipe for the base data),
please do retrieve the latest version of the
get_mk_install script!
- For Plan9: get_mk_install.rc;
- For the others: get_mk_install.sh;
- kerTeX sources to download.
Prerequisites
As explained in the summary, kerTeX aims to be a typographical system: it is hence an entity by itself that is installed—so to speak—like a hosted system on the O.S. you want to install it onto.
Because kerTeX aims to be as simple as possible as ubiquitous and as independent as possible, the only requirement from the O.S. is a libc (static or dynamic, implementing standard C—even if not C99). Here is the prerequisite for the "kernel".
For the administration and the maintenance of user data and extensions, a limited subset of POSIX.2 is a prerequisite too. One finds them, natively or via the O.S. packaging system, on all Unices; on Plan9 with APE; on MS Windows for example with msys2, not to mention SFU, Cygwin or, now, WSL—for MS Windows, all the possibilities providing a POSIX environment fallback, for our purpose, to the Unix type; at the moment, RISK has not been adapted to allow compilation with for example mingw (or Visual Studio) and usage natively with utils provided by Msys2; Todo for 1.0 release.
To be able to download sources of optional data (what is found on CTAN to be brief), a http client at the minimum is needed (this is not strictly necessary: the packaging framework understand the file:// URL). ftp on the BSD*, hget for Plan9, lftp or curl are supported.
For the compilation, 26MiB are necessary for the sources (that will be treated as read-only) and 30MiB at the minimum for the compilation proper with the RISK SAVE_SPACE—indeed, the compilation by itself needs half the amount; but a tarball is created gathering the compiled products and files copied verbatim from the sources, and this set is created in the compilation dir.
For installation, the base system requires at least 40MiB, being the sum of 26 MiB for the "kernel" and 10MiB for the compiled fonts and dumps.
Downloading, configuration and compilation
For the compilation, we use RISK (developed initially for KerGIS), and RISK itself, for configuration, uses a restricted subset of POSIX.2 utilities.
The R.I.S.K. framework allows a wide range of variations, including cross-compilation. This is done via Bourne shell variables definitions. The R.I.S.K. already known OSes have their parameters defined and it is easy to add another system.
Virtually, since the "kernel" only requires the lic, all the OSes can be supported.
Unprivileged installation (installation without requiring root/administrator privileged) is supported also.
But the more frequent case, the "equal" (not to say "identical") compilation: one compiles for the very same O.S. and very same machine where the compilation is done, a lot of things are simplified and two dedicated scripts have been written for this case.
One for Unix like systems (this includes MS Windows with Interix, Cygwin, WSL with Ubuntu etc.) : get_mk_install.sh the other for Plan9 : get_mk_install.rc.
Just download the correct script, run it and let the script guide you.
Unprivileged installation
(This doesn't concern Plan9 where by namespace handling and separation between file server, CPU and terminal, the problem is for the most solved.)
KerTeX by itself doesn't need any special privilege; hence it is possible to install it as a non privileged user. However, the installation will be totally unprivileged, without resorting to special rights and hence the following rules must be kept in mind:
- The user USER0 shall exist before installation (since we won't be able to create one) as well as the group GROUP0 to which USER0 shall belong;
- The script get_mk_install must be run as the unprivileged USER0;
- The directory TARGETOPTDIR under which RISK will install kerTeX shall exist and shall be writable by USER0 or GROUP0;
- In order for an user to be able to know where kerTeX is installed, an utility: which_kertex is provided that has to be placed somewhere in the PATH of the user. During an unprivileged installation, this utility is put under $TARGETOPDIR/bin/. Hence, afterwards, whether move the utility (perhaps switching to a privileged user) under a directory always present in PATH, or add the directory to PATH.
Problem and special cases
RISK prints messages in case of problems.
If configuration fails, this is most certainly because some required POSIX.2 utilities are not present ou because RISK doesn't find the libc in the directories it searches by default because the OS is of an unknown type to ti.
In this case, download and run rkguess.sh, that will search the hard way what is needed and will print what it has found or not. Re-run get_mk_install after adding the missing pieces (frequently ed(1); despite the fact that it is the only absolutely necessary editor, some Linux distribution don't provide it—or in some case provide a so-called program that is not a true ed(1), for example the Busybox version, that is sed(1) masquerading as ed(1)).
Further explanations are in README.
If you are blocked, send a message to the developer tlaronde @ polynum.com (please use your e-mail client with this address).
Downloads
Both the sources and the patches are gzip compressed and are provided with a GNUpg detached signature so that you can ensure that what you have actually retrieved matches what the release manager has put online.
At the moment, the release manager is Thierry LARONDE, and you can retrieve his public key from the keyserver pgp.mit.edu.
File | Date of publication | Size (in bytes) | Description | Signature |
---|---|---|---|---|
get_mk_install.sh | 2024-06-08 | 9101 | A script for an Unix like OS (including Mac OS X,
Android and Windows Interix), allowing unprivileged build, using
kerTeX local
sources (for example if modified) or retrieving them and the doc
(via ftp(1), lftp(1) or curl(1) depending on the systems), untaring, compiling,
installing and generating the dumps and fonts. Well, doing everything
detailed in the README automatically (asking you if it can proceed).
Run it in a dir with enough place for the unpacked sources (40 Mb
will do). Call it like this: $ sh get_mk_install.sh [my_conf] |
get_mk_install.sh.sig |
get_mk_install.rc | 2024-06-08 | 4932 | A script for Plan9, using kerTeX local sources (for
example if modified) or retrieving them and the doc (via ftpfs(4)),
untaring, compiling, installing and generating
the dumps and fonts. Well, doing everything detailed in the README
automatically (asking you if it can proceed). Run it in a dir with
enough place for the unpacked sources (40 Mb will do). Call it like
this: % rc get_mk_install.rc [my_conf] |
get_mk_install.rc.sig |
kertex.SlackBuild | 2018-08-22 | 11234 | An example of the R.I.S.K. compilation framework in an alien OS package framework. To be adapted by programmers. | kertex.SlackBuild.sig |
README | 2024-01-29 | 47478 | Description, instructions for the compilation, installation and "mise en oeuvre". | README.sig |
kertex_bundle.tar | 2024-11-18 | 11540480 | All the following sources. | kertex_bundle.tar.sig |
knuth_2021.02.10.tar.gz | 2024-06-08 | 5061597 | D.E. Knuth's sources. | knuth_2021.02.10.tar.gz.sig |
adobe_2011.12.31.tar.gz | 2020-07-11 | 316171 | Adobe published PostScript core fonts AFM. | adobe_2011.12.31.tar.gz.sig |
ams_3.04.tar.gz | 2020-07-11 | 3250337 | Supplementary mathematical fonts, or supplementary formats for CM fonts, published by the AMS. | ams_3.04.tar.gz.sig |
bibtex_0.99d.tar.gz | 2020-07-11 | 163902 | Oren Patashnik's BibTeX (version 0.99d). | bibtex_0.99d.tar.gz.sig |
etex_2.1.0.1.tar.gz | 2021-04-22 | 135570 | NTS team's e-TeX. | etex_2.1.0.1.tar.gz.sig |
risk_comp_1.20.99.6.tar.gz | 2024-11-18 | 186134 | Tools for the compilation and installation of the project. | risk_comp_1.20.99.6.tar.gz.sig |
licence_kerTeX_M.txt | 2011-12-19 | 7765 | kerTeX_M licence. | |
kertex_M_1.1.0.2.tar.gz | 2024-01-29 | 48863 | Tools for WEB-to-C translation. | kertex_M_1.1.0.2.tar.gz.sig |
licence_kerTeX_T.txt | 2012-01-01 | 12597 | kerTeX_T licence. | |
kertex_T_0.99.23.0.tar.gz | 2024-11-09 | 2368137 | Makefile prototypes ; "change files", supplementary programs and fonts non present in D.E. Knuth's sources. | kertex_T_0.99.23.0.tar.gz.sig |