Make - Fehler 1

Liebe ExpertInnen,

vorab gleich nochmal die Frage aus dem letzten Posting: Gibt es in der Unix-Welt ein Verzeichnis der Fehlernummern? Oder ist das eh überflüssig, weil die Nummern nichts aussagen?

Zum konkreten Problem: Der make für Fontforge unter Cygwin liefert

...
make[1]: Leaving directory `/home/internet/fontforge/po'
mkdir -p /usr/local/bin
mkdir -p /usr/local/share/man/man1
mkdir -p /usr/local/share/fontforge
mkdir -p /usr/local/share/fontforge/pixmaps
/bin/sh ./libtool --mode=install /usr/bin/install -c -c fontforge/fontforge /usr
/local/bin
/usr/bin/install -c -c fontforge/fontforge /usr/local/bin/fontforge
/usr/bin/install: cannot stat `fontforge/fontforge': No such file or directory
make: \*\*\* [install\_prog] Fehler 1

Eine klare Ansage: No such file or directory. Nur - ich hätte halt gerne gewusst, wer warum ein solches Verzeichnis sucht. Wer weiß was?

Gruß Ralf

ps: „cannot stat“ übersteigt meine Englisch-Kenntnisse, leo hilft auch nicht weiter :frowning:

Eine klare Ansage: No such file or directory. Nur - ich hätte
halt gerne gewusst, wer warum ein solches Verzeichnis sucht.

Das makefile sucht die Datei und der Grund dafür sollte aus dem makefile hervorgehen. Da es der install-Befehl (in der aufgerufenen Form ein einfacher Kopierbefehl) ist, der scheitert, und da es sich bei der gesuchten Datei um ein executable Binary handeln müsste, ist anzunehmen, dass diese in einem vorherigen Schritt erzeugt wurde oder hätte erzeugt werden sollen.

ps: „cannot stat“ übersteigt meine Englisch-Kenntnisse, leo
hilft auch nicht weiter :frowning:

Wo Leo nicht hilft, hilft die Wikipedia nimmermehr. Bzw. eben doch: http://en.wikipedia.org/wiki/Stat_(Unix). „Cannot stat“ heisst nix anderes als „file not found, but programmer prefers gobbledigook instead of clear language“.

Du solltest deine Platte durchsuchen, ob irgendwo mit dem Datum des Compilerlaufs eine neue Datei ‚fontforge‘ erzeugt wurde und gegebenenfalls einfach das make-Script entspr. anpassen. Falls nicht, solltest du ein paar Schritt zurück machen und evtl. vorherige Meldungen prüfen, woran die Erzeugung gescheitert ist.

HTH

Moin,

Du solltest deine Platte durchsuchen, ob irgendwo mit dem
Datum des Compilerlaufs eine neue Datei ‚fontforge‘ erzeugt
wurde

dem ist nicht so.

Was sagt

ls -aFl /home/internet/fontforge/fontforge

Falls es nicht zu viel Mühe macht: Könntest Du mal einen Blick
aufs Protokoll werfen?

Hm, ich weiß nicht, wieviel Du schon herumgetestet hast, eventuell hilft „make clean“ und danach „configure“, „make“ , „make check“ und „make install“.

Ich kenne mich mit Cygwin nicht aus, aber bist Du vor dem „make install“ root geworden (Befehl: „su“)?

Gruß,

Sebastian

PS: ein Paketsystem einer Linux-Distribution ist schon verdammt komforfabel.

apt-get install fontforge

Fertig.

Hm, ich weiß nicht, wieviel Du schon herumgetestet hast,
eventuell hilft „make clean“ und danach „configure“, „make“ ,
„make check“ und „make install“.

Ds wird auf jeden Fall erforderlich sein. Das beiliegende Log bezieht sich nicht auf den originalen, sondern auf einen später aufgerufenen make-Lauf. Damit ist natürlich die relevante Fehlermeldung weg.

Ich kenne mich mit Cygwin nicht aus, aber bist Du vor dem
„make install“ root geworden (Befehl: „su“)?

Nicht bei cygwin. Dort sind die User-Rechte die des Windows-Benutzers, und der darf i. d. R. ins cygwin-Installationsverzeichnis schreiben.

PS: ein Paketsystem einer Linux-Distribution ist schon
verdammt komforfabel.

apt-get install fontforge

Das ist laut sourceforge-Doku bei fontforge unter cygwin nix anderes. Nur scheint die Doku dummerweise in diesem Punkt etwas veraltet und das binary-Paket irgendwann aus cygwin rausgeflogen.

Gruß

Ums kurz zu machen
Die aktuell ausgelieferte Version von fontforge kompiliert nicht ohne weiteres mit der aktuellen Version von gettext. Irgendwo fehlt ein Verweis auf eine Bibliothek. Abhilfe

eventuell hilft „make clean“ und danach „configure“, „make“ ,
„make check“ und „make install“.

make clean muss sein. Das ./configure kannst du dir sparen, solltest aber nicht: Auf die Ausgaben und Warnungen des Befehls achten! Wenn nachher irgendwas nicht funktioniert sag nicht, du seiest nicht gewarnt worden!

Den make-Befehl rufst du hingegen mit einem Prefix versehen auf:

env LDFLAGS=-lintl make

Damit sollte er sauber durchlaufen, die fontconfig/fontconfig.exe erstellt werden und auch der abschließende make install seinen Pflichten nachzukommen nicht mehr verweigern.

HTH

Hi Herrmann,

Wenn nachher irgendwas nicht funktioniert sag
nicht, du seiest nicht gewarnt worden!

klingt gut, dafür müsste ich das Zeug aber erstmal verstehen resp. Warnungen als solche erkennen :wink:

env LDFLAGS=-lintl make

Ergebnis wie zuvor, „cannot stat“ fontforge/fontforge.

Im Makefile finde ich zwar die Stelle, wo aus dem Verzeichnis kopiert werden soll ($(LIBTOOL) --mode=install $(INSTALL) -c fontforge/fontforge $(DESTDIR)$(bindir)), aber nicht die Stelle, wo etwas hineingeschrieben wird . Jetzt frag ich mich, ob ich Unix lernen oder doch Geld für einen Font-Editor in die Hand nehmen muss.

Gruß Ralf

Hallo,

Jetzt frag ich mich,
ob ich Unix lernen oder doch Geld für einen Font-Editor in die
Hand nehmen muss.

Letztlich mußt Du Dich selber entscheiden. Die Seiten von fontforge empfehlen ja, eine virtuelle Maschine zu nehmen und in der ein Linux aufzusetzen.

Vermutlich ist das - so der Rechner halbwegs leistungsfägig ist - nicht die schlechteste Idee. Dann kannst Du auch mal sehen, wie schick die Paketverwaltung läuft. Persönlich würde ich aus Gewohnheit und so Debian installieren, Ubuntu wäre sicherlich auch eine gute Wahl. Oder sonst irgendeine Distribution mit der jemand im Umkreis Erfahrung hat und die fontforge als Paket mitbringt.

Gruß,

Sebastian

Entweder machst du methodisch etwas falsch, oder du unterschlägst wesentliche Informationen.

Ergebnis wie zuvor, „cannot stat“ fontforge/fontforge.

Das ist das Ergebnis von ‚make install‘. Das aber ist herzlich uninteressant. Mit welcher Fehlermeldung endet der ‚make‘-Lauf? Wenn du nicht bereits im Versuchsaufbau einen Fehler hast, dauert der make-Lauf fünf oder mehr Minuten. Ist das so bei dir?

Gruß

1 Like

Entweder machst du methodisch etwas falsch

kann sein.

oder du unterschlägst wesentliche Informationen.

Will ich nicht hoffen.

Mit welcher Fehlermeldung endet der
‚make‘-Lauf?

Der „env …“ endet mit

ln: Symbolischen Verknüpfung "po/zh\_TW.po" konnte angelgt werden: File exists
make: [pos] Fehler 1 (ignoriert)
( cd po ; make )
make[1]: Entering directory `/home/Administrator/fontforge/po'
make[1]: Für das Ziel »all« ist nichts zu tun.
make[1]: Leaving directory `/home/Administrator/fontforge/po'
( cd fontforge ; make )
make[1]: Entering directory `/home/Administrator/fontforge/fontforge'
make[1]: Für das Ziel »all« ist nichts zu tun.
make[1]: Leaving directory `/home/Administrator/fontforge/fontforge'

Sieht für mich als Laien nicht sooo schlecht aus.

Wenn du nicht bereits im Versuchsaufbau

Was ist das denn schon wieder?

einen Fehler hast, dauert der make-Lauf fünf oder mehr
Minuten. Ist das so bei dir?

Kann ich jetzt nicht sagen, ich hab ganz von vorn angefangen und wieder die komplette Tour mit dem msgfmt bzw. gettext, Fehler 1 und Fehler 2 hinter mir.

Gruß Ralf

make[1]: Für das Ziel »all« ist nichts zu tun.

Diese Meldung ist typisch, wenn der make-Befehl aufgerufen wird, ohne dass die Zwischenergebnisse eines früheren Laufes bereinigt wurden. Im ersten Lauf werden (im Verzeichnis fontforge/fontforge) Objektdateien angelegt (Namensendung bei cygwin .mo oder .lo o. ä.). Stösst der make bei einem späteren Lauf auf eine korrespondierende Objektdatei, quittiert er mit obiger Meldung.

Damit ein zweiter Lauf aussagekräftige Ergebnisse liefern kann, müssen diese Dateien aus dem Weg geräumt werden. Das geschieht durch Aufruf von ‚make clean‘. Rufst du danach den make erneut auf, führt er wieder den vollständigen Prozess durch.

Wenn du die aktuellen Sourcen von sourceforge.com geholt hast und den dortigen Anweisungen gefolgt bist, sollte der Aufruf von

tar xvjf fontforge\_[Versionsnummer].tar.bz2 _#aus Erinnerung nachgebaut_
cd fontforge-[Versionsnummer]
./configure
make

in einer Fehlermeldung bezüglich einer Undefined reference: „_libintl_setlocale“ (alle Angaben aus dem Gedächtnis. Ich hab heute mittag in einer flüchtigen, längst wieder vergangenen virtuellen Maschine nachgestellt) enden.

Dann machst du ‚make clean‘`und dann noch mal ‚env LDFLAGS=-lintl make‘.

Im Zweifel kannst du auch das fontforge-Verzeichnis einfach noch mal löschen, und die Sourcen erneut entpacken. Damit ersparst du dir das ‚make clean‘ und hast auf jeden fall eine saubere Umgebung.

HTH

1 Like

Das wird ja immer länger :smile:
Erstmal vielen Dank für Deine Geduld.

Bis zu dem Stolperschritt

Undefined reference: „_libintl_setlocale“

bin ich genau so vorgegangen, hab dann allerdings vor dem ‚env
LDFLAGS=-lintl make‘ den make clean vergessen.

Immoment plagt mich eine andere Baustelle. Sobald ich zum Testen komme, melde ich mich nochmal.

Gruß Ralf

Mit „fontforge package“ habe ich die Seite
http://www.useragentman.com/blog/2011/02/27/installi…
ergurgelt und von deren Quelle das Package Fontforge
erfolgreich installiert.

Na immerhin, das erspart mir, das Szenario nochmals, diesmal sauber dokumentiert, nachzustellen.

Allerdings zeigt sich fontforge nicht mit seiner GUI, sondern
will ein Script haben:

Du kannst dem fontforge kein U für ein X vormachen:wink:. Entweder hast du die X-Window-Umgebung nicht sauber installiert, oder den Aufruf von startxwin vergessen… Kann auch sein, dass in dem von dir installierten Package aus irgendeinem Grund die X-Unterstützung nicht einkompiliert ist. Das halte ich zwar für unwahrscheinlich, weil das der Beschreibung bei useragentman widerspricht, lässt sich aber bei einem fertigen Package kaum prüfen.

Das ist der Vorteil des selbstkompilierens, da sagt dir im Zweifel der ./configure-Schritt nämlich von vorneherein, dass das mit dem X ein Satz mit nix wird, resp. du noch nachinstallieren musst. Am besten gehst du alle Schritte aus dem Blog noch mal nach. Vielleicht so mit abstreichen aller erledigten Punkte… (Aber nicht scrollen, nachdem du mit dem Filzi auf den Bildschirm geschrieben hast, sonst passt das nicht mehr).

Auch 'ne evtl ganz hilfreiche Übung: Installier irgend ein grafisches Spiel aus dem cygwin-Angebot (gnu-backgammon o.ä.). Wenn das tut, sollte auch fontforge tun.

HTH