Google Analytics

суббота, 14 мая 2011 г.

Проблема с Zip-архивами в Linux

Была у меня одна проблема в любимой ОС(она у меня одна - это Linux), и этой проблемой были популярные среди пользователей альтернативной ОС(Windows, той самой, которая для домохозяек:)) архивы в формате Zip. Дело в том, что вместо нормального названия файла появляются кракозябры, если в имени файла были не ASCII-символы(кирилица, или любые другие нелатинские буквы). Дело в том, что формат Zip не имеет стандарта на кодировку нелатинских символов. Архиватор сжимает файлы с кодировкой, являющейся стандартной в системе. В Windows вообще с кодировкой получается что-то странное, и во истину мистическое... Для распаковки файлов Zip в Linux приходилось использовать скрипт примерно такого содержания(скрипт не мой, товарища backbone с форума gentoo):

#!/bin/bash
unzip "$1"
convmv --notest -r -f cp-1252 -t cp-850 .
convmv --notest -r -f cp-866 -t utf-8 .
При переходе на Archlinux метод почему-то перестал работать. Пришлось заняться поиском нового метода. Им стал такой скрипт:
#!/bin/bash
unzip -o -O cp866 "$1" 

Этот скрипт я написал, играясь с опциями кодировки имён файлов. И он даже работает. Но потом я нашёл лучшее решение, чем создание подобных скриптов для распаковки архивов Zip.

Это решение - программа The Unarchiver, созданная для MacOS X и Linux. Программа создавалась с учётом проблем с нелатинскими национальными кодировками. Пару слов об этом с сайта проекта:"It can also handle filenames in foreign character sets, created with non-English versions of other operating systems. I personally find it useful for opening Japanese archives, but it should handle many other languages just as well."

Поддерживаемые форматы: Zip, Tar-GZip, Tar-BZip2, RAR, 7-zip, LhA, StuffIt и некоторые другие. смотрим дополнительную информацию о программе на http://wakaba.c3.cx/s/apps/unarchiver.html и http://code.google.com/p/theunarchiver/

Программа написана на Objective-C, и ещё не добавлена во многие репозитарии дистрибутивов Linux. Поэтому устанавливаем данную программу при помощи yaourt:

$ yaourt -S unarchiver

Команда подходит только для Archlinux.

Для остальных дистрибутивов прийдётся собирать пакет ручками.

Это очень увлекательное и познавательное занятие:)

Вот за это я и полюбил Archlinux, что в нём сборка и установка нового ПО настолько простая и автоматизированная благодаря авторам PKGBUILD'ов.

После установки программы становятся доступными утилиты командной строки: unar и lsar. Знакомые с наименованием утилит в Unix люди уже наверно догадались, что первая утилита распаковывает архив, а вторая выдаёт листинг списка файлов из архива.

Впервые распаковка архивов Zip, сжатых в Windows с нелатинскими именами файлов, и Rar v3 осуществляется свободным ПО. И корректно работает с нелатинскими символами в именах файлов. Жаль, что данная программа ещё не доступна во многих дистрибутивах из стандартных репозиториев, и пока не интегрирована её поддержка в популярные GUI-оболочки для работы с архивами. Попробуйте эту программу, и ваши проблемы с архивами Zip в Linux исчезнут. Узнал я об этой программе на OpenNET, заглядывайте туда и вы всегда будете в курсе новостей из мира СПО. Есть ещё мой любимый LOR, но там хорошо троллить на разные околониксовые темы, а новости там частенько запаздывают:)

2 комментария:

proton комментирует...

Недавно столкнулся с такой проблемой. Спасибо за совет.

lucentcode комментирует...

Рад, что сочли полезной данную информацию. Спасибо за отклик.