Re: tar: can't translate pathname "..." to UTF-8

From: Polytropon <freebsd(at)edvax.de>
Date: Sun, 30 Jul 2017 16:55:59 +0200

On Sun, 30 Jul 2017 04:15:00 +0200, Marc Santhoff wrote:
> Moin,
>
> die Fehlermeldung im Subjekt bekomme ich auf einem frischen 10er System.
> Es handelt sich um draufkopierte Dateinamen mit Umlauten.

Das UFS-Dateisystem ist grundsätzlich Umlaut-agnostisch, d. h. es
kümmert sich nicht um Zeichencodierungen, sondern übernimmt die
Bytes so, wie sie sind.

Wenn ich mir die Meldung, die Du im Betreff zitierst, genau ansehe,
dann habe ich eine Idee, kann aber sein, daß ich da auf dem Holzweg
bin: Ist "..." eine Auslassung, oder soll das eine Ellipsis sein?
Vielleicht will tar die zu "Punkt Punkt Punkt" umwandeln, was aber
nicht geht, da der Punkt ja ein Sonderzeichen mit spezieller Pfad-
bedeutung ist. Aber da steht ja "to UTF-8", nicht "from", also sehe
ich da wahrscheinlich was, was gar nicht da ist, aber man weiß ja
nie. UTF-8 ist halt nicht trivial. :-)

Ist

        tar: can't translate pathname "..." to UTF-8

der _tatsächliche_ Meldungstext?

> An welcher Stelle kann ich zentral die locale-Einstellungen auf
> iso8859-15 setzen, damit das auch für Systemtasks wie cron jobs gilt?

Das kommt auf die jeweilige Shell an, oder Du nimmst eine zentrale
Stelle für das Setzen von Umgebungsvariablen.

> In .login_conf bzw. /etc/login.conf gilt das doch eigentlich eben nur
> für logins?

Für interaktive logins, soweit ich mich erinnere.

> Oder vielleicht /etc/profile als Stratdatei der sh?

Das gilt aber nur für die sh. Wenn Du csh benutzt, muß die Angabe
in .cshrc (lokal) oder /etc/csh.cshrc (global) stehen.

Das kann z. B. so aussehen:

        setenv LC_ALL de_DE.ISO8859-15

Oder so:

        setenv LC_COLLATE de_DE.ISO8859-15
        setenv LC_CTYPE de_DE.ISO8859-15
        setenv LC_MESSAGES en_US.ISO8859-15
        setenv LC_MONETARY de_DE.ISO8859-15
        setenv LC_NUMERIC de_DE.ISO8859-15
        setenv LC_TIME de_DE.ISO8859-15

Hier kannst Du auch selektiv mit de_DE und en_US arbeiten, wenn
Du bestimmte Sprachaspekte in unterschiedlichen Sprachen zu sehen
wünschst (z. B. deutsche Datumsangabe, aber englische Meldungs-
texte, Zeile 3 im Beispiel).

Eventuell ist noch $LANG (siehe "Vorrangschaltung" $LANG gegenüber
$LC_*) zu setzen, vielleicht auch $MM_CHARSET, $G_FILENAME_ENCODING
oder was für Deine jeweilige Desktop-Umgebung relevant ist. Ach,
und eine die verwendeten Umlaute unterstützende Schriftart muß
natürlich auch geladen sein.

Wenn Du den login.conf-Mechanismus benutzt, sollte es aber auch
möglich sein, diese Umgebungsvariablen für alle Shells zu setzen,
so daß tar die Werte aufgreift, egal, welche Shell den Prozeß
gestartet hat ("Weitervererbung der Umgebung an das Programm",
via getenv() beispielsweise).

> Mir ist nicht klar, wie dem Ssystem mitgeteilt wird, welche locale es
> für Dateinamen grundsätzlich benutzen soll.

Keine, denn dem System ist das prinzipiell egal. Nur die Darstellung
kann eben leiden, A-Tilde ein Viertel umgedrehtes Fragezeichen. :-)

PS.

Dumme Frage: Alle Welt benutzt UTF-8 und propagiert das auch so
als den aktuellen Standard. Warum benutzt Du ISO-8859-15? Ich
selbst benutze ISO-8859-1, weil ich knauserig bin und keine zwei
Byte für einen popeligen Umlaut verschwenden will... ;-)

-- 
Polytropon
Magdeburg, Germany
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sun 30 Jul 2017 - 16:56:04 CEST

search this site