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

From: Marc Santhoff <M.Santhoff(at)web.de>
Date: Sun, 30 Jul 2017 18:08:00 +0200

On So, 2017-07-30 at 16:55 +0200, Polytropon wrote:
> 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.

OK.

> 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?

Nein, das ist aus dem Gedächtnis rezitiert der ungefähre Text. Die
Auslassungpunkte stehen für einen kompletten Pfad mit Dateinamen. Der
Dateiname enthält typische, deutsche Sonderzeichen, also Umlaute,
Esszett. Sorry for confusion... ;)

> > 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.

EOK.

>
> > 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.

Klar, ist bekannt. Auch die Unterschiede zwischen den Shells. Systemjobs
benutzen zumindest was FreeBSD angeht doch aber hoffentlich alle sh?

Was anderes ist mir noch nicht begegnet, sind ja auch Warnungen iirc im
Handbuch.

> 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).

Das ist das Problem, kein login sondern ein cronjob. Und es macht
(bisher) nur tar, genauer bsdtar Ärger. Irgendwo las ich, libarchive
hätte die Funktionen dafür, vielleicht sollte ich mal gtar installieren
und damit testen. Fragt sich, welche Nebenwirkungen das hat.

Für jeden tar-job immer gleich die Umgebungsvariablen vorweg setzen
geht, aber ich vergesse das garantiert.

> > 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. :-)

OK, also passiert die Umsetzung an der Konsole oder eben durch die
tools.

> 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... ;-)

Hmm. Ich administriere nicht täglich und ich brauche ein laufendes
System. Der Server, den ich grade außer Betrieb genommen habe, war ein
P1/166MHz unter FreeBSD7. Es gibt gewisse Widrstände gegen
veränderung. :D

Ich befürchte Umstellungsprobleme, obwohl die mittlerweile schon eine
Weile vorbei sein könnten. Und den (eigentlich überflüssigen) Aufwand,
alle Dateinamen zu ändern, mag ich ohne handfesten Grund einfach nicht
leisten.

Danke sehr,
Marc

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 - 18:08:35 CEST

search this site