make-Fehler

Seemann

Greenhorn
Hallo FreeBSD-Freunde!

Angefangen hat es, als ich über die Ports etwas installieren wollte; nach kurzem arbeiten brach die Aktion mit mehreren Fehlermeldungen ab. OK, vergessen, die Ports upzudaten. So getan - zuerst mit portsnap, und als dann die Installation noch immer nicht funktionierte, die kompletten Ports wieder gelöscht und mit Subversion neu installiert. Seit dem ging plötzlich nichts mehr; make bricht sofort mit folgender Fehlermeldung ab:
Code:
"/usr/ports/Mk/bsd.port.mk", line 1038: Unknown directive
make: fatal errors encountered -- cannot continue
bsd.port.mk hat an dieser Stelle folgenden Code:
Code:
...
LANG=      C
LC_ALL=    C
.export    LANG LC_ALL   # das ist entsprechende Zeile 1038 
...
(Wollte zuerst die Zeile farblich od. stilistisch hervorheben, das geht aber im Codefenster leider nicht, also dann halt als Kommentar) :(

Jedenfalls muß ich gestehen, daß ich mit den Ports nicht wirklich fit bin. Aber wie dem auch sei, verwundert es mich, daß plötzlich ein Codefehler vorliegt. Zum testen habe ich diverse andere Programme versucht, über die Ports zu installieren und jedesmal der selbe Fehlerabbruch.
Da make kein Paket ist, kann ich es auch nicht mit Hilfe von pkg einfach neu installieren, und einfach die betreffende Zeile zu entfernen, getraue ich mich offengestanden auch nicht so ohne vorherige Abklärung.

Wenn hier mir jemand erläutern könnte, was für´n ,,Bockmist" ich da gebaut habe, wäre es echt super.


Gruß
Seemann
 
Wie die locale eingestellt wird, das erklärt das FreeBSD Handbook:
https://www.freebsd.org/doc/handbook/using-localization.html
Wichtig: wenn die Konfigurationsdatei für die Datenbank in der /etc/login.conf verändert wird, dann muss die Datenbank dafür auch anschließend mit root Rechten aktualisiert werden mit:
Code:
cap_mkdb /etc/login.conf

Falls die Umgebungsvariable für LC_ALL auf etwas anderes gesetzt wurde als "C", dann kann es sein, dass einige Ports dies beim Bau so gar nicht mögen. Da helfen dann Einträge in der /etc/make.conf:
Code:
#----------------------------------------------------------------------------
# If Ports need MAKE_ENV  LANG=C LC_ALL_C
#----------------------------------------------------------------------------
LANGUAGE_ENV_C+=games/frozenbubble
.for port in ${LANGUAGE_ENV_C}
.if !empty(.CURDIR:M*/${port})
MAKE_ENV=         LANG=C LC_ALL=C
.endif
.endfor
Die Liste, in der dort im Beispiel nur games/frozenbubble aufgeführt ist, lässt sich je nach Bedarf beliebig erweitern.
 
Danke schön Fusselbär für die ausführliche Info!
Das erklärt nun, warum make an dieser Stelle streikt. Das war mir natürlich nicht klar, als ich das System verdeutschte :ugly:


FreeBSD-Gruß
Seemann
 
Zurück
Oben