forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.UNIX.BSD

Ответ
 
Опции темы Опции просмотра
  #51  
Старый 02.04.2018, 21:01
Alex Korchmar
Guest
 
Сообщений: n/a
По умолчанию Re: tar: Can't translate pathname to UTF-8

Alex Korchmar написал(а) к Eugene Grosbein в Apr 18 19:41:30 по местному времени:

From: Alex Korchmar <noreply@linux.e-moe.ru>

Eugene Grosbein <Eugene.Grosbein@f1.n5006.z2.fidonet.org> wrote:

AK>> что-то скопировать оттуда таром, и пытаюсь найти хоть один архиватор,
AK>> работающий во freebsd не с единственно-правильной кодировкой.
AK>> Пока, увы, ноль.
EG> А не мог бы ты перестать страдать XY-фигнёй и честно рассказать,
EG> чего ты хочешь в итоге получить и как именно ты это делаешь
сейчас уже ничего не хочу - кроме как стереть бнопняные файлы с ненабираемыми
на клавиатуре и непоказываемыми ни в какой кодировке именами (пока руки не
дошли)
А хотел сперва банально распаковать tar, созданный на чужой системе. Не знаю,
как и какой.
Судя по "schili extensions" - bsd tar, возможно, очень старый.

Выяснилось, что это невозможно в принципе, уже в момент создания архива его
содержимое безвозвратно испорчено рукожопой перекодировкой.
Попутно - что нынешний bsd tar перекодирует все подряд, сообразно своему
пониманию, что именно перекодируется, без возможности его явно отменить.

~/test> touch 1251/`echo 'афаййей' | iconv -t cp1251`
~/test> touch utf8/`echo 'афаййей' | iconv -t utf8 `
~/test> tar -cvf test *
a 1251
a 1251/ЮТЮИИЕИ
a utf8
a utf8/(нетерминальные символы)
a афаййей

никаких предупреждений при этом не выдается. (предупреждения из subj
выдадутся, если запускать tar с локалью utf8. Не смотря на эти предупреждения,
такой архив как раз будет подлежать восстановлению. Архив, созданный в
не-utf8 локали, испорчен необратимо.)


> Alex

--- ifmail v.2.15dev5.4
Ответить с цитированием
  #52  
Старый 02.04.2018, 23:31
Eugene Grosbein
Guest
 
Сообщений: n/a
По умолчанию Re: tar: Can't translate pathname to UTF-8

Eugene Grosbein написал(а) к Alex Korchmar в Apr 18 03:01:22 по местному времени:

02 апр. 2018, понедельник, в 17:41 NOVT, Alex Korchmar написал(а):

AK>>> что-то скопировать оттуда таром, и пытаюсь найти хоть один архиватор,
AK>>> работающий во freebsd не с единственно-правильной кодировкой.
AK>>> Пока, увы, ноль.
EG>> А не мог бы ты перестать страдать XY-фигнёй и честно рассказать,
EG>> чего ты хочешь в итоге получить и как именно ты это делаешь
AK> сейчас уже ничего не хочу - кроме как стереть бнопняные файлы с ненабираемыми
AK> на клавиатуре и непоказываемыми ни в какой кодировке именами (пока руки не
AK> дошли)
AK> А хотел сперва банально распаковать tar, созданный на чужой системе. Не знаю,
AK> как и какой.
AK> Судя по "schili extensions" - bsd tar, возможно, очень старый.


AK> Выяснилось, что это невозможно в принципе, уже в момент создания архива его
AK> содержимое безвозвратно испорчено рукожопой перекодировкой.

Ты же не знаешь, где и как создан tar, так почему ты считаешь, что он внутри
испорчен - только потому, что лично ты ниасилил его развернуть?

AK> Попутно - что нынешний bsd tar перекодирует все подряд, сообразно своему
AK> пониманию, что именно перекодируется,

Перекодирует в соответствии со документированной спецификацией формата,
про что ты просто не удосужился почитать. На фряхе это собственно man tar,
который ссылается на man libarchive-formats. По дефолту при создании tar
используется restricted pax format:

The pax interchange format converts filenames to Unicode and
stores them using the UTF-8 encoding. Prior to libarchive 3.0,
libarchive erroneously assumed that the system wide-character
routines natively supported Unicode. This caused it to mis-
handle non-ASCII filenames on systems that did not satisfy this
assumption.

AK> без возможности его явно отменить.

Неправда. tar --format ustar -cf test.tar создаёт tar-файл
с именами внутри "как есть". То же самое будет для
tar --format gnutar, в соответствии со спецификациями обоих
форматов.

AK> ~/test> touch 1251/`echo 'афаййей' | iconv -t cp1251`
AK> ~/test> touch utf8/`echo 'афаййей' | iconv -t utf8 `
AK> ~/test> tar -cvf test *
AK> a 1251
AK> a 1251/ЮТЮИИЕИ
AK> a utf8
AK> a utf8/(нетерминальные символы)
AK> a афаййей

Опять приходится догадываться, что локаль у тебя KOI8-R,
четко сообщать условия тестирования ты почему-то не считаешь нужным.

Как я уже несколько раз повторял, визуализация на терминале
не повторяет байтов, сохранённых в самом архиве, хотя и может
с ними совпасть в зависимости от разных факторов типа
формата tar и текущей локали.

Eugene
--- slrn/1.0.2 (FreeBSD)
Ответить с цитированием
  #53  
Старый 02.04.2018, 23:40
Eugene Grosbein
Guest
 
Сообщений: n/a
По умолчанию Re: tar: Can't translate pathname to UTF-8

Eugene Grosbein написал(а) к Alex Korchmar в Apr 18 03:18:48 по местному времени:

02 апр. 2018, понедельник, в 17:41 NOVT, Alex Korchmar написал(а):

AK> Архив, созданный в не-utf8 локали, испорчен необратимо.

Опять же неправда, так как в "чистой" локали koi8-r всё работает:

$ set | egrep 'LANG|LC_'
LANG=ru_RU.KOI8-R
$ mkdir -p test/1251 test/utf8
$ cd test
$ touch 1251/`echo 'афаййей' | iconv -f koi8-r -t cp1251`
$ touch utf8/`echo 'афаййей' | iconv -f koi8-r -t utf8`
$ touch 'афаййей'
$ find . -type f
./афаййей
./utf8/п╟я└п╟п╧п╧п╣п╧
./1251/ЮТЮИИЕИ
$ tar -cvf test.tar *
a 1251
a 1251/ЮТЮИИЕИ
a utf8
a utf8/п\260я\204п\260п\271п\271п\265п\271
a афаййей
$ mkdir ../test2 && cd ../test2
$ find . -type f
./афаййей
./1251/ЮТЮИИЕИ
./utf8/п╟я└п╟п╧п╧п╣п╧


Специально проверил: md5 от сортированного вывода find в исходном
каталоге test и в test2 совпадают.

Но у тебя, помнится, не чистая локаль - что-то в KOI8-R,
что-то нет и тогда, возможно, какой-то баг и вылазит.

Eugene
--- slrn/1.0.2 (FreeBSD)
Ответить с цитированием
  #54  
Старый 02.04.2018, 23:50
Eugene Grosbein
Guest
 
Сообщений: n/a
По умолчанию Re: tar: Can't translate pathname to UTF-8

Eugene Grosbein написал(а) к Eugene Grosbein в Apr 18 03:23:30 по местному времени:

02 апр. 2018, понедельник, в 16:17 NOVT, Eugene Grosbein написал(а):

EG> И в "дереве фри" нет и не было утилиты для создания zip,

Вот тут ошибся - tar на фре умеет создавать zip, так как он
просто обёртка над libarchive. Собственно, в man tar есть пример:

tar -a -cf archive.zip source.c source.h
creates a new archive with zip format

Eugene
--
Поэты - страшные люди. У них все святое.
--- slrn/1.0.2 (FreeBSD)
Ответить с цитированием
  #55  
Старый 03.04.2018, 00:51
Eugene Grosbein
Guest
 
Сообщений: n/a
По умолчанию Re: tar: Can't translate pathname to UTF-8

Eugene Grosbein написал(а) к All в Apr 18 03:51:15 по местному времени:

03 апр. 2018, вторник, в 02:18 NOVT, Eugene Grosbein написал(а):

AK>> Архив, созданный в не-utf8 локали, испорчен необратимо.

EG> Опять же неправда, так как в "чистой" локали koi8-r всё работает:
EG> $ set | egrep 'LANG|LC_'
EG> LANG=ru_RU.KOI8-R

А вот что происходит, если выставить твою "локаль",
которую ты в этом треде показывал:

$ set | egrep 'LANG|LC_'
LANG=
LC_ALL=
LCCOLLATE=ruRU.UTF-8
LCCTYPE=ruRU.UTF-8
LC_MESSAGES=C
LC_MONETARY=C
LC_NUMERIC=C
LC_TIME=C
$ find . -type f | sort
./1251/ЮТЮИИЕИ
./utf8/п╟я└п╟п╧п╧п╣п╧
./афаййей

$ tar -cvf test.tar *
a 1251
a 1251/\340\364\340\351\351\345\351tar: 1251/ЮТЮИИЕИ: Can't translate pathname
'1251/ЮТЮИИЕИ' to UTF-8

a utf8
a utf8/\320\260\321\204\320\260\320\271\320\271\320\265\320\271tar:
utf8/п╟я└п╟п╧п╧п╣п╧: Can't translate pathname 'utf8/п╟я└п╟п╧п╧п╣п╧' to UTF-8

a \301\306\301\312\312\305\312tar: афаййей: Can't translate pathname 'афаййей' to UTF-8

Не сумев преобразовать сырой UTF-8 из (видимо) ASCII в UTF-8,
оно кладёт внутрь tar-файла сырой UTF-8 как есть:

$ dd if=test.tar bs=1 skip=3096 count=25 2>/dev/null | iconv -f utf-8 -t koi8-r
path=utf8/афаййей

И такой tar в "чистой" локали, к примеру, KOI8-R разворачивается прекрасно,
без каких-либо искажений.

И даже если его разворачивать в указанной выше "локали":

$ tar -xvf ../test/test.tar
x 1251/
x 1251/\340\364\340\351\351\345\351
x utf8/
x utf8/\320\260\321\204\320\260\320\271\320\271\320\265\320\271
x \301\306\301\312\312\305\312

И это опять-таки лишь проблемы визуализации:

$ find . -type f
./афаййей
./1251/ЮТЮИИЕИ
./utf8/п╟я└п╟п╧п╧п╣п╧

Всё на месте.

Eugene
--- slrn/1.0.2 (FreeBSD)
Ответить с цитированием
  #56  
Старый 03.04.2018, 05:41
Victor Sudakov
Guest
 
Сообщений: n/a
По умолчанию tar: Can't translate pathname to UTF-8

Victor Sudakov написал(а) к Alex Korchmar в Apr 18 08:19:38 по местному времени:

Dear Alex,

02 Apr 18 14:37, Alex Korchmar wrote to me:

AK>>> у него нет таких ключей. "кодировки" windows/dos - это для
AK>>> перекодирования файлов, а не их имен.
VS>> И в страшном сне не приснится мне архиватор, который вздумает
VS>> перекодировать файлы (в смысле их содержимое).
AK> во времена pkzip (аналогом которого является info*) было востребовано.
AK> Оно еще и crlf на lf заменять умеет.

Когда-то и в FTP был ascii режим, кто об этом помнит.

VS>> По крайней мере если сделать "unzip -t -O cp1251 1.zip"
AK> у меня как была бнопня, так и осталась.

VS>> $ echo $LANG
VS>> ru_RU.KOI8-R
AK> кодировка_терминала. Плевать он хотел на LANG.

Какого терминала, как архиватор может ее узнать? Терминал в приведенном примере вообще был PuTTY, и Remote Character Set в данной сессии стоял KOI8-R.

Victor Sudakov, VAS4-RIPE, VAS47-RIPN
--- GoldED+/BSD 1.1.5-b20160322-b20160322
Ответить с цитированием
  #57  
Старый 03.04.2018, 12:40
Alex Korchmar
Guest
 
Сообщений: n/a
По умолчанию Re: tar: Can't translate pathname to UTF-8

Alex Korchmar написал(а) к Victor Sudakov в Apr 18 11:23:57 по местному времени:

From: Alex Korchmar <noreply@linux.e-moe.ru>

Victor Sudakov <Victor.Sudakov@f49.n5005.z2.fidonet.org> wrote:

AK>> кодировка_терминала. Плевать он хотел на LANG.

VS> Какого терминала,
твоего.Чтобы понять - это он у тебя сам что-то перекодировал, или нет.
unzip из портов, как я убедился, ничего сам не перекодирует, не умеет.


> Alex

--- ifmail v.2.15dev5.4
Ответить с цитированием
  #58  
Старый 03.04.2018, 12:50
Alex Korchmar
Guest
 
Сообщений: n/a
По умолчанию Re: tar: Can't translate pathname to UTF-8

Alex Korchmar написал(а) к Eugene Grosbein в Apr 18 11:27:27 по местному времени:

From: Alex Korchmar <noreply@linux.e-moe.ru>

Eugene Grosbein <Eugene.Grosbein@f1.n5006.z2.fidonet.org> wrote:

EG> Ты же не знаешь, где и как создан tar, так почему ты считаешь, что он внутри
EG> испорчен - только потому, что лично ты ниасилил его развернуть?
ну асиль, асиль - ты мне уже второй месяц рассказываешь, как оно все
должно быть, только нихрена что-то ни один совет не работает.

EG> Опять приходится догадываться, что локаль у тебя KOI8-R,
любая отличная от utf8

EG> не повторяет байтов, сохранённых в самом архиве, хотя и может
символы utf8 - терминальные. В отличие от того, что в этом архиве.

> Alex

--- ifmail v.2.15dev5.4
Ответить с цитированием
  #59  
Старый 03.04.2018, 12:50
Alex Korchmar
Guest
 
Сообщений: n/a
По умолчанию Re: tar: Can't translate pathname to UTF-8

Alex Korchmar написал(а) к Eugene Grosbein в Apr 18 11:30:31 по местному времени:

From: Alex Korchmar <noreply@linux.e-moe.ru>

Eugene Grosbein <Eugene.Grosbein@f1.n5006.z2.fidonet.org> wrote:

EG> Опять же неправда, так как в "чистой" локали koi8-r всё работает:
ты уверен что это - "все работает"?

EG> a utf8/п\260я\204п\260п\271п\271п\265п\271
а вот это - точно юникод? А не "юникод, перекодированный как восьмибитная
кодировка".

EG> Но у тебя, помнится, не чистая локаль - что-то в KOI8-R,
LCCTYPE - koi, LANG не установлен, не думаю что LCMESSAGES может на это
влиять.

> Alex

--- ifmail v.2.15dev5.4
Ответить с цитированием
  #60  
Старый 03.04.2018, 12:50
Alex Korchmar
Guest
 
Сообщений: n/a
По умолчанию Re: tar: Can't translate pathname to UTF-8

Alex Korchmar написал(а) к Eugene Grosbein в Apr 18 11:31:01 по местному времени:

From: Alex Korchmar <noreply@linux.e-moe.ru>

Eugene Grosbein <Eugene.Grosbein@f1.n5006.z2.fidonet.org> wrote:

EG> Вот тут ошибся - tar на фре умеет создавать zip, так как он
EG> просто обёртка над libarchive. Собственно, в man tar есть пример:
EG> tar -a -cf archive.zip source.c source.h
учитывая, что оно перекодирует до запихивания в архив, от такого зипа
пользы не больше чем от тара.

> Alex

--- ifmail v.2.15dev5.4
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 17:25. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot