# Running latex via RunProcess or ExternalEvaluate fails in Ubuntu 18.04 due to ZLIB_ 1.2.9' not found

I want to compile some latex documents programmatically. But one error is spoiling my whole pipeline that works in Windows.

## How to reproduce:

Install texlive on Ubuntu 18.04 where MMA 11.3 is already installed.

sudo apt-get install texlive-xetex
which xelatex


/usr/bin/xelatex

Now the xelatexcommand works fine on terminal. But when one tries to run it from MMA it fails with a library incompatibility issue.

We can see mathematica forcing dependency.

RunProcess[$SystemShell, All, "ldd /usr/bin/xelatex"]  The StandardOutput of RunProcess shows the error. Pastebin of the whole output. /usr/bin/xelatex: /usr/local/Wolfram/Mathematica/11.3/SystemFiles/Libraries/Linux-x86-64/libz.so.1: version ZLIB_1.2.9' not found (required by /usr/lib/x86_64-linux-gnu/libpng16.so.16) linux-vdso.so.1 (0x00007fffc36b7000) Similar question here: 18653 Same error comes when I tried using Python/Node via ExternalEvaluate. Here iare the specific examples. ### Node.js session = StartExternalSession[<|"System" -> "NodeJS", "SessionProlog" -> "const execSync = require('child_process').execSync;"|>]; ExternalEvaluate[session,"code = execSync('xelatex');"]["data"] // ByteArray // ByteArrayToString  ### Python session = StartExternalSession[<|"System" -> "Python", "Version" -> "3.6", "SessionProlog" -> "from subprocess import PIPE, run"|>]; fac = "command = ['ls','-a'] result = run(command, stdout=PIPE, stderr=PIPE,universal_newlines=True) print(result.returncode, result.stdout, result.stderr)"; ExternalEvaluate[session, fac]  Try pwd or ls -a in place of xelatex everything will work fine and we will see the shell output as we see in an ordinary terminal. 1. I have tried copying the libz.so.1 from /lib/x86_64-linux-gnu to /usr/local/Wolfram/Mathematica/11.3/SystemFiles/Libraries/Linux-x86-64 but that brings some symbol error but the 'ZLIB_1.2.9' not found error vanishes. 2. I tried installing arara (install arara : sudo apt install texlive-extra-utils) to replace ghe usage of xelatex command in my program with arara. Same problem came back when calling arara from RunProcess, though Ubuntu terminal worked fine. Without this piece of latex automation I can't port my code in Ubuntu 18.04 (one of the most popular Linux dist). It will be interesting to know if this above nightmare happens also on Ubuntu 16.04. # Update Based on the great comment xelatex could be brought to work. RunProcess[$SystemShell, All, "/usr/bin/xelatex "<>texFile<>".tex
exit", ProcessEnvironment -> <|"libz.so.1" -> "/usr/lib64/libz.so.1"|>]


### General solution/rule of thumb?

How to solve those above StartExternalSession and ExternalEvaluate?

Also some other commands that work on terminal fails for example the latex automation tool arara. When trying arara in the following it gives another error.

RunProcess[$SystemShell,All,"arara "<>texFile<>".tex" ProcessEnvironment-><|"libz.so.1"->"/usr/lib64/libz.so.1"|>]  <|ExitCode->1,StandardOutput->,StandardError->lstat(./kpsewhich) failed ... ./kpsewhich: No such file or directory kpsewhich: ../../../texk/kpathsea/progname.c:316: remove_dots: Assertion ret' failed. Error: Unable to access jarfile |> I could solve the above error by using ProcessEnvironment-> <|"libz.so.1"->"/usr/lib64/libz.so.1","PATH" -> Environment["PATH"]|>  What is the general method to handle this kind of issues and how to fix the StartExternalSession, is there any analog of ProcessEnvironment there ? • Does RunProcess[$SystemShell, All, "ldd /usr/bin/xelatex", ProcessEnvironment -> <|"libz.so.1" -> "/usr/lib64/libz.so.1"|>] help ? – b.gates.you.know.what Jun 9 '18 at 11:39
• @b.gatessucks nice it does help in the above command. Can you make this an answer please. Also any idea how the same process environment trick can be done for r ExternalEvaluate? I have added ExternalEvaluate example code for both Node and Python. Also I failed to run arara via RunProcess using this trick. But managed to get xelatex` working. Thx a lot!! – PlatoManiac Jun 9 '18 at 13:26
• Let's see if there are more comprehensive answers. – b.gates.you.know.what Jun 9 '18 at 13:41