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

From: Polytropon <freebsd(at)edvax.de>
Date: Mon, 31 Jul 2017 15:30:30 +0200

On Mon, 31 Jul 2017 09:29:52 +0200 (CEST), Oliver Fromme wrote:
> Hi,
>
> Marc Santhoff wrote:
> > Tag schon wieder,
> >
> > ich fasse mal zusammen:
> >
> > 1. Die Warnung von bsdtar ist wirklich nur eine Warnung, die Dateien
> > werden unverändert eingepackt.
>
> Was ich nicht verstehe: Wieso sollte tar versuchen, irgendwas
> nach UTF-8 zu konvertieren, wenn man das nirgendwo konfiguriert
> hat? Das Default-locale ist "C" (d.h. 7bit US-ASCII), *nicht*
> UTF-8.

Vielleicht is im System aber durch irgend etwas UTF-8 als
Locale gesetzt worden? Also an einer Stelle, wo es sich auch
auf cron-Jobs auswirken kann?

> Offenbar nimmt BSD-tar an, wenn kein locale gesetzt ist, aber
> trotzdem 8-Bit-Zeichen in Dateinamen vorkommen, dass diese
> in UTF-8 kodiert sind. Das mag zwar inzwischen in vielen
> Fällen tatsächlich zutreffen, aber halt nicht in allen (wie
> bei Dir). Ich persönlich fände es richtiger, sich an den
> Standard zu halten und nicht zu versuchen, zu "raten", was
> der Benutzer gemeint haben könnte.

Die Fehlermeldung gibt leider wenig Ansatzfläche her. :-(

> Die Lösung (bzw. Workaround) für Dich wäre natürlich, das
> locale korrekt zu setzen, also etwa zu beginn des Skripts
> diese Zeile:
> export LC_CTYPE=en_US.ISO8859-15
> Oder Du setzt es in der crontab (dann ohne das "export"),
> dann gilt es halt gleich für alle cron-Jobs.

Mit den $LC_*-Variablen hat man, wie schon geschrieben, eine
sehr feine Kontrolle darüber, wo man spracheinstellmäßig von
den systemseitigen Vorgaben abweichen möchte. $LC_ALL (bzw.
$LANG) ist da eher die "grobe Kelle" für alles und jeden. :-)

> Oder Du stellst gleich ganz auf UTF-8 um. ;-)

Ist das denn mittlerweile "der Standard"?

> PS: Das hilft jetzt nicht direkt, aber weil es zur Sprache kam:
> Das mit der Ellipsis war natürlich Unsinn. "..." hat weder als
> ASCII-Zeichenfolge noch als UTF8-Ellipsis-Zeichen irgendeine
> Sonderbedeutung für das Dateisystem.

Richtig, denn sowohl "..." als auch "…" sind gültige Dateinamen
und sollten problemlos in tar-Archiven erzeugt werden können.
Auch beim Auspacken findet beim Dateianlegen keine Interpreta-
tion statt - die 2 Byte für "…" werden im Dateisystem als Datei-
name hinterlegt, und ob man dann bei "ls" nun "…" sieht oder
"A-Tilde ein Viertel umgedrehtes Fragezeichen" oder "Klotz",
ist ja nicht Sache von tar.

> In Skripten würde ich auch dazu raten, *nicht* LANG oder LC_ALL
> zu setzen, wenn es nur um die Zeichencodierung geht. Dafür ist
> LC_CTYPE zuständig. Anderenfalls kann es passieren, dass z.B.
> ls(1), date(1) und andere Tools plötzlich ihre Ausgabe anders
> formatieren (oder gar auf Deutsch machen), was zu Problemen
> führen kann, wenn Skripte versuchen, deren Ausgaben zu parsen.

Sehr wichtiger Hinweis!

-- 
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 Mon 31 Jul 2017 - 15:30:39 CEST

search this site