вторник, 1 мая 2012 г.

Ubuntu, File Roller и крякозяблы в именах файлов

В Ubuntu для работы с RAR-архивами традиционно используются две программы: rar и unrar. Обе поддерживаются стандартным гномовским менеджером архивов - File Roller-ом. Первая, rar, предназначена для создания и распаковывания rar-архивов, но, к сожалению, не всегда справляется должным образом со второй задачей. В частности проблемы возникают при распаковке архивов созданных в Windows, где имена файлов/папок содержат русские буквы. Также, судя по постам в интернете, проблемы возникают и с зашифрованными архивами. Поэтому для распаковки, лучше всего воспользоваться программой unrar, вторым коммерческим продуктом создателя формата. Эта утилита прекрасно распаковывает rar-архивы, но, как следует из ее названия не предназначена для их создания. Для любителей всего свободного существует другая, но также несколько ограниченная версия распаковщика - unrar-free. Под свободной здесь понимается то, что проприетарный формат RAR и его основной закрытый функционал был исследован и реализован при помощи реверс-инжиниринга.


Для тех, кто, как я, предпочитает пользоваться графическим интерфейсом, в частности менеджером File Roller одновременное использование rar для упаковки и unrar для распаковки не представляется возможным. Если в системе установлен rar, наличие unrar просто игнорируется. Я даже глянул в исходники File Roller-а, чтобы убедиться в этом. Во всех местах, связанных с извлечением данных присутствует такой код:

if (have_rar ())
       fr_process_begin_command (comm->process, "rar");
else
       fr_process_begin_command (comm->process, "unrar");


Итог: Для приемлемой работы с RAR-архивами можно воспользоваться полумерой: установить unrar и удалить rar. Нужно лишь отказаться от создания RAR-архивов (в мире Linux это чуждый формат), в пользу другого, например zip.