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

Polytropon <[email protected]> Mon, 31 Jul 2017 15:30:30 +0200
Newsgroups gmane.os.freebsd.questions.german
Organization EDVAX
Message-ID <[email protected]>
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 [email protected]
with "unsubscribe de-bsd-questions" in the body of the message