makeglossaries: „sh: makeindex: command not found“

Erstellen von Index, Glossar, Symbolverzeichnis, einer Nomenklatur etc. mit MakeIndex oder Xindy


Benutzeravatar
dieg0
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Mo 20. Aug 2012, 01:05
Wohnort: Dresden
Kontaktdaten:

makeglossaries: „sh: makeindex: command not found“

Beitrag von dieg0 »

Hallo,

ich habe jetzt einen Mac OS X Clean-Install hinter mir und habe natürlich wieder MacTeX installiert. Läuft alles wieder wunderbar wie vorher, außer dass makeglossaries nicht geht.

Ich bekomme beim Ausführen von
/usr/texbin/makeglossaries %
das ich in TeXstudio bei den Benutzerbefehlen ergänzt habe, nur folgende Fehlermeldung:
Prozess gestartet: /usr/texbin/makeglossaries "Minimalbeispiel"

makeglossaries version 2.07 (2013-06-17)
added glossary type 'acronym' (alg,acr,acn)
makeindex -s "Minimalbeispiel.ist" -t "Minimalbeispiel.alg" -o "Minimalbeispiel.acr" "Minimalbeispiel.acn"

***Call to makeindex failed*** Possible cause of problem: Style name indicates makeindex, but may be in xindy format. Remember to use \setStyleFile to specify the name of the style file rather than redefining \istfilename explicitly. Check 'Minimalbeispiel.alg' for details

sh: makeindex: command not found

Prozess endete mit Fehler(n)
Das verwendete Minimalbeispiel ist dieses hier:
\documentclass[a4paper,parskip,toc=bib,automark]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[ngerman]{translator}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\KOMAoptions{fontsize=11pt}

\usepackage[acronym,nomain,translate,toc,nonumberlist,nopostdot]{glossaries}
\usepackage{glossary-mcols}
\renewcommand*{\glsmcols}{2}
\glossarystyle{mcoltree}
\makeglossaries

\newacronym[first={eq.}]{eq}{eq.}{Äquivalente}
\newacronym[first={RT}]{RT}{RT}{Raumtemperatur}
\newacronym[first={\textit{et al.}}]{etal}{\textit{et al.}}{\textit{et alii} (und andere)}
\newacronym[first={DIPEA}]{DIPEA}{DIPEA}{Diisopropylethylamin}
\newacronym[first={Me}]{Me}{Me}{Methyl}
\newacronym[first={DMF}]{DMF}{DMF}{\textit{N,N}-Dimethylformamid}
\newacronym[first={THF}]{THF}{THF}{Tetrahydrofuran}
\newacronym[first={DCM}]{DCM}{DCM}{Dichlormethan}
\newacronym[first={DC}]{DC}{DC}{Dünnschichtchromatografie}
\newacronym[first={NBS}]{NBS}{NBS}{\textit{N}-Bromsuccinimid}

\begin{document}
\deftranslation[to=German]{Acronyms}{Abkürzungsverzeichnis}
\glsaddall
\printglossary[type=\acronymtype]
\end{document}
Ich habe die TeX-Datei auch extra in ein Verzeichnis verschoben, das hinter einem Pfad ohne Leerzeichen ist. Sicher ist sicher.

Gebe ich im Terminal
which makeindex
ein, erhalte ich
/usr/texbin/makeindex
Das sollte also eigentlich auch passen.

Woran könnte das also liegen? Was kann ich noch machen, um die Ursache rauszufinden?

Ich würde mich über Hilfe sehr freuen.
Grüße,
dieg0

Noch so einer

Beitrag von Noch so einer »

Trotzdem wird makeindex offenbar von der Shell nicht gefunden.

Ist /usr/texbin im Suchpfad ($PATH) eingetragen? Anderenfalls wird es eventuell nur gefunden, wenn das aktuelle Arbeitsverzeichnis /usr/texbin ist (obwohl man eigentlich das aktuelle Arbeitsvereichnis gar nicht im Suchpfad haben sollte, aber das ist eine andere Frage, die mit TeX nichts zu tun hat).

Funktioniert denn ein direkter Aufruf
makeindex -s "Minimalbeispiel.ist" -t "Minimalbeispiel.alg" -o "Minimalbeispiel.acr" "Minimalbeispiel.acn"
im Terminal?

Benutzeravatar
dieg0
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Mo 20. Aug 2012, 01:05
Wohnort: Dresden
Kontaktdaten:

Beitrag von dieg0 »

Also der makeindex-Befehl wird gefunden. In $PATH ist der Pfad eingetragen:
echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/MacGPG2/bin:/usr/texbin
Und der Aufruf von makeindex direkt im Terminal klappt tatsächlich. :D
makeindex -s "Minimalbeispiel.ist" -t "Minimalbeispiel.alg" -o "Minimalbeispiel.acr" "Minimalbeispiel.acn"
This is makeindex, version 2.15 [TeX Live 2013] (kpathsea + Thai support).
Scanning style file ./Minimalbeispiel.ist.............................done (29 attributes redefined, 0 ignored).
Scanning input file Minimalbeispiel.acn....done (10 entries accepted, 0 rejected).
Sorting entries....done (34 comparisons).
Generating output file Minimalbeispiel.acr....done (30 lines written, 0 warnings).
Output written in Minimalbeispiel.acr.
Transcript written in Minimalbeispiel.alg.
Also wohl ein TeXstudio-Problem? Ich habe keine Ahnung, wie ich das Problem beheben soll. Aber immerhin kann ich vom Terminal aus das Abkürzungsverzeichnis erstellen. Da brauche ich mir also um meine Bachelorarbeit keine Sorgen machen. Notfalls schaue ich mich vielleicht nach einem anderen Editor um. Auf händisches Kompilieren über Kommandozeile bin ich aber nicht so scharf. :roll:

Danke erstmal für die Hilfe!

Noch so einer

Beitrag von Noch so einer »

Die interessante Frage dürfte sein, wie $PATH gesetzt ist, wenn makeglossaries von von TeXstudio aufgerufen wird. Du könntest dazu ein Script schreiben:
#!/bin/sh
printenv > printenv.log
Und das einmal an Stelle von makeglossaries aufrufen lassen. Das müsste dann ein Datei printenv.log erzeugen, in der das komplette Environment eingetragen ist. Darin kannst Du dann leicht Unterschiede zum normalerweise verwendeten Environment heraussuchen, so auch ob $PATH korrekt ist. Wenn $PATH korrekt ist, liegt es nicht an TeXstudio.

Oder Du editierst ganz pragmatisch makeglossaries (das ist ein Perl-Script) und änderst in der Funktion makeindex (zu erkennen an »sub makeindex«) die Zeilem
   my ($status, $warnings, $errno) 
     = &run_app('makeindex', $args, $trans, $quiet, $dontexec);
in
   my ($status, $warnings, $errno) 
     = &run_app('/usr/texbin/makeindex', $args, $trans, $quiet, $dontexec);
Dann sollte es eigentlich gefunden werden.

Theoretisch müsste für den Aufruf von Xindy eine entsprechende Änderung notwendig sein.

Allerdings übersteht die Änderung von makeglossaries das nächste Update des Pakets sicher nicht. Eine echte Lösung wäre deshalb vorzuziehen. Dazu müsste man aber erst einmal die eigentliche Ursache des Problems kennen. Eventuell kann der TeXstudio-Autor weiterhelfen, das Problem einzugrenzen.

Benutzeravatar
dieg0
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Mo 20. Aug 2012, 01:05
Wohnort: Dresden
Kontaktdaten:

Beitrag von dieg0 »

Ich habe das Skript mal von TeXstudio aus ausgeführt. Die Log-Datei sieht folgendermaßen aus:
GPG_AGENT_INFO=/Users/diego/.gnupg/S.gpg-agent:174:1
SHELL=/bin/bash
TMPDIR=/var/folders/lg/1s8d201908l7t8ds9j556r700000gn/T/
Apple_PubSub_Socket_Render=/tmp/launch-6Ezawq/Render
USER=diego
COMMAND_MODE=unix2003
SSH_AUTH_SOCK=/tmp/launch-zG4rRj/Listeners
Apple_Ubiquity_Message=/tmp/launch-eiXi3z/Apple_Ubiquity_Message
__CF_USER_TEXT_ENCODING=0x1F5:0:3
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/texlive/2012/bin/x86_64-darwin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/MacGPG2/bin:/usr/texbin

PWD=/Users/diego/Problem/Glossaries-Problem
LOCK_NAME_OVERRIDE_qtsingleapp_TeXstu_fd0a_1f5=/var/folders/lg/1s8d201908l7t8ds9j556r700000gn/T/qtsingleapp-TeXstu-fd0a-1f5-lockfile
SHLVL=1
HOME=/Users/diego
LOGNAME=diego
_=/usr/bin/printenv
Also „/usr/texbin“ taucht schonmal auf. Wenn ihr keine Ideen mehr habt, dann werde ich den Entwickler mal auf diesen Thread hier aufmerksam machen.

Benutzeravatar
dieg0
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Mo 20. Aug 2012, 01:05
Wohnort: Dresden
Kontaktdaten:

Beitrag von dieg0 »

Ich habe den texstudio-Entwickler angeschrieben und schnell die Antwort mit der Lösung des Problems erhalten. :D Hier die Mail vom Entwickler zum Fehler „sh: makeindex: command not found“:
Das bedeutet normalerweise, dass der Pfad nicht richtig gesetzt ist.

Unter Hilfe gibt es den Eintrag LaTeX-Installation überprüfen, um die Environmentwerte zu sehen (das ist besser als printenv, weil #!/bin/sh es wieder ändern könnte).

Dann kannst du unter "Additional Search Paths" auf der Erzeugen-Seite den fehlenden Pfad eintragen
Und unter dem oben erwähnten Punkt „Erzeugen“ -> „Zusätzliche Suchpfade“ in den Einstellungen habe ich entdeckt, dass ein nicht existierender Pfad zu einer MacTeX-2012-Installation angegeben ist. Die war aber auf meinem System nie installiert:
/usr/local/texlive/2012/bin/x86_64-darwin
Mit der kleinen Änderung von „2012“ zu „2013“
/usr/local/texlive/2013/bin/x86_64-darwin
klappt jetzt alles wieder wunderbar.

Unter „LaTeX-Installation prüfen“ sehe ich aber auch, dass eigentlich „/usr/texbin“ schon bei den Pfaden eingetragen ist, und „/usr/texbin“ zeigt auch auf „/usr/local/texlive/2013/bin/x86_64-darwin“, sodass alles ohne Probleme in texstudio funktionieren müsste. Tut es aber nicht, warum auch immer. Aber mit dem vollständigen, korrekten Pfad klappt jetzt auch makeglossaries. :wink:

Antworten