Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » FreeArc: бесплатный open-source архиватор - Часть 3

Модерирует : gyra, Maz

Widok (23-11-2010 11:37): Лимит страниц. Продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106

   

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

FreeArc
бесплатный open-source архиватор для Windows и Linux,
сочетающий высокую степень сжатия и большой набор возможностей


Официальный сайт | Скриншоты | Лента новостей
Документация на консольную версию | Документация на GUI версию
Сообщество пользователей FreeArc | Вики | Трекер (рассылка по ошибкам)
Проект на SourceForge.net | SVN-репозиторий | Поддержка InnoSetup
Обсуждение на encode.ru (англоязычное)

Скачать последний релиз - FreeArc 0.666 от 20 мая 2010 г. Что нового: ускорение работы в 1.5-2 раза благодаря новой технологии многопоточного сжатия, распаковка архивов многих форматов используя технологии 7-zip, запуск файлов из архива, исправлены все проблемы интеграции с Explorer (подробнее)
 
Текущая альфа версия: 0.67 - загрузка | список исправлений | блог

FAQ по FreeArc

Подробное описание используемых алгоритмов
Почему он сжимает лучше и быстрее, чем 7-zip/rar...
Результаты тестов, подтверждающие его крутизну... | И немного о будущем...
Почему для использования 2+ гб памяти желательно установить 64-битную версию Windows
Планы дальнейшего развития
Что подразумевается под "интеграцией с Explorer"
Старая FreeArc wiki (включая описание формата архива)
Логотип - объявляется конкурс на иконки для FreeArc

Сторонние оболочки для работы с FreeArc:
  • wArc - простая и понятная программа управления архивами (требует .NET Framework 2.0)
  • PeaZip - менеджер архивов с поддержкой большого количества форматов, для Windows и Linux
     

    Родственные темы:
  • Inno Setup плюс внешние упаковщики - использование архивов FreeArc в инсталяторах
  • Пережатиe/Pекомпрессия/Oптимизация файлов для лучшего сжатия - "а как сжать ещё лучше?"
  • FreeArc и Unix - для альтернативно одарённых
     
    Другие архиваторы:
  • WinRAR
  • 7-zip

  • Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 19:15 07-09-2009 | Исправлено: Bulat_Ziganshin, 18:34 26-07-2010
    spectrumist



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Мне удалось запустить arc и freearc на 64bit, (unarc работает). Проблема была в том, что он пытался загрузить 64х битную libgmp.so.3, поэтому скачал 32х битную в /lib32, после чего запустились arc и freearc, но freearc при этом отписывает в консоль:
     
     
    libgvfscommon.so.0: cannot open shared object file: No such file or directory
    Failed to load module: /usr/lib/gio/modules/libgvfsdbus32.so
    /usr/lib/gio/modules/libgvfsdbus.so: wrong ELF class: ELFCLASS64
    Failed to load module: /usr/lib/gio/modules/libgvfsdbus.so

    Всего записей: 3 | Зарегистр. 31-08-2010 | Отправлено: 23:29 31-08-2010 | Исправлено: spectrumist, 00:35 01-09-2010
    Bulat_Ziganshin

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    spectrumist
    спроси тут

    Всего записей: 3401 | Зарегистр. 13-08-2007 | Отправлено: 23:32 31-08-2010
    Bulat_Ziganshin

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    new version:
     
        * 4x4, grzip: reliable error handling
        * Addons\LZMA-x64: external LZMA compressor that's compatible with internal one, allowing to use up to lzma:1g:max compression if you have enough RAM and 4x4:lzma for externals' multithreading
        * [External compressor:XXX] sections: noheader=0 for external analogs of internal compressors, <stdin> and <stdout> specifiers to work w/o tempfiles
        * ArcShellExt: "Archive operations" submenu for arbitrary files, configurable at "Explorer integration" page
        * --nodates: don't store filetimes in archive
        * unarc.dll: load facompress*.dll from the same directory as unarc.dll and unload them by UnloadDLL() (FreeArcExtract should not be called after UnloadDLL)
        * Addons\Delphi: one more example of unarc.dll usage
        * Linux: decreased thread priority for all (de)compression threads except for main one
     
     
     
    LZMA-x64 readme:

    Цитата:
    In order to use 64-bit external LZMA (de)compression, add contents of arc-lzma-x64[-filter].ini to arc.ini.
    Alternatively, you can use -cfg=arc-lzma-x64[-filter].ini option to change INI file for one command.
     
    Please note that ini files provide multitude of command settings, from file-to-file to stdin-to-stdout mode.
    With GUI FreeArc.exe, you can use only file-to-file mode as configured in arc-lzma-x64.ini.
    With console Arc.exe, you can use any mode, including the most efficient one,
    stdin-to-stdout mode as configured in arc-lzma-x64-filter.ini.
     
    Also mention that lzma-freearc-x64.exe supports only subset of the FreeArc LZMA codec parameters.
    Run lzma-freearc-x64.exe without parameters to see the list of options supported.
     
    Usage examples:
     
    FreeArc.exe create archive -cfg=arc-lzma-x64.ini -m=lzma:d1g -t
    Arc.exe create archive -cfg=arc-lzma-x64-filter.ini -m=lzma:d1g -t
    Arc.exe create archive -cfg=arc-lzma-x64-filter.ini -m=rep:1g+exe+delta+4x4:b64m:lzma:d64m

     
    More examples of external compressors taking benefits of <stdin> or <stdout> support:

    Код:
    [External compressor:bcj2]
    mem = 50
    packcmd   = 7za a -m0=BCJ2 -mmt=on -si $$arcpackedfile$$.7z <stdin>
    unpackcmd = 7za e -si -so $$arcpackedfile$$.7z <stdout>
    packedfile = $$arcpackedfile$$.7z
     
    [External compressor:srep]
    ;options  = l%d (minimal match length, default=512)
    packcmd   = srep {options} $$arcdatafile$$.tmp -   <stdout>
    unpackcmd = srep -d - $$arcdatafile$$.tmp          <stdin>
     
    [External compressor:slugx]
    cmem = 260
    dmem = 130
    packcmd   = {compressor} c <stdin> : <stdout> :
    unpackcmd = {compressor} d <stdin> : <stdout> :

     
    Please also test 4x4 (i.e. multithrreaded compression, archive updating, SFXes) very hard. i've finished rewriting this code, please check thoroughly whether it became really reliable

    Всего записей: 3401 | Зарегистр. 13-08-2007 | Отправлено: 01:41 01-09-2010 | Исправлено: Bulat_Ziganshin, 01:50 01-09-2010
    Profrager



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Bulat_Ziganshin

    Цитата:
    LZMA-x64 readme

    не ожидал так скоро) круто круто) А я то думаю для чего эта папочка LZMA-x64 в сорцах была..) Особенно порадовало, что теперь поддерживаются <stdin> и <stdout>..кстати можно же было бы сделать и для GUI варианта такое.. Мой винт теперь будет доволен меньше на него темп-файлов будут скидывать)
     
    Добавлено:

    Цитата:
    external LZMA compressor that's compatible with internal one
    т.е. распаковывать можно будет обычными средствами freearc'а? Без lzma-freearc-x64.exe?

    Всего записей: 888 | Зарегистр. 22-05-2010 | Отправлено: 08:33 01-09-2010 | Исправлено: Profrager, 08:37 01-09-2010
    Bulat_Ziganshin

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    т.е. распаковывать можно будет обычными средствами freearc'а? Без lzma-freearc-x64.exe?

    да, конечно. собственно что я сделал:
     
    1. откомпилял пример из lzma sdk 64-битным icl'ем (и запатчил под amd)
    2. убрал из него немного лишнего чтобы формат сжатых данных был как у моего внутреннего lzma (нормальный lzma.exe из SDK записывает 13 байт параметров в начало сжатого файла, у меня они хранятся в оглавлении архива)
    3. добавил поддержку header=0 в FreeArc - с этой настройкой он не записывает доп. заголовок перед данными, сжатыми этим внешним компрессором
    4. добавил <stdin> и <stdout> как обозначения того, что данная команда читает данные с stdin или пишет результат на stdout. к сожалению, в гуишном FreeArc.exe это почему-то не работает, я постараюсь разобраться
    5. если команда использует и <stdin> и <stdout>, то её stderr скрывается, так что на экране не остаётся вообще никакого мусора - всё точь-в-точь как при использовании внутренних алгоритмов
     
    в результате теперь при наличии достаточного объёма ОЗУ можно использовать lzma-x64 для сжатия со словарём 512-1024 мб в макс. режиме. или использовать 4x4:lzma на пару десятков гиг. и всё это будет распаковываться встроенным lzma - если хватит 32-битной памяти. а можно и внешним, в режиме фильтра временных файлов всё равно не будет
     
    что можно сделать ещё: внешний lzma должен воспринимать все те же параметры, что и внутренний, подчиняться всей той же механике ограничения памяти/словаря и вызываться автоматом для солид-блоков размером, скажем, от 50 мб. тогда пользователь сможет вообще не замечать - внутренний там алгоритм или внешний
     
    кстати, интересно сравнить с тем, что в планах партии было записано:

    Цитата:
    Compressor: лучше всего для толстых алгоритмов использовать внешние компрессоры. уже сейчас можно взять compressor.exe и использовать его подобным образом. в будущем же  compressor будет совместим по формату данных с внутренними алгоритмами так, что к примеру можно будет упаковать внешним lzma со словарём в 1 гиг, а распаковывать внутренним. понятно, будут 32 и 64-разрядные версии, причём компилироваться они будут ICC, что увеличит скорость на 10-20%.     fa будет автоматом соображать хватит ли ему наличной памяти для выполнения операции или лучше отдать её на откуп внешней программе. fa научится работать с внешними упаковщиками через stdin/stdout, что позволит использовать их так же удобно, как и внутренние алгоритмы - никакой записи на диск пормежуточных данных, актуальный индикатор прогресса и т.д.

    Всего записей: 3401 | Зарегистр. 13-08-2007 | Отправлено: 11:03 01-09-2010 | Исправлено: Bulat_Ziganshin, 11:08 01-09-2010
    gjf



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Bulat_Ziganshin

    Цитата:
    new version

    Прошу прощения, а чего тогда в шапке ссылки старые?

    ----------
    Тут могла бы быть Ваша реклама... или эпитафия

    Всего записей: 11401 | Зарегистр. 14-03-2007 | Отправлено: 11:59 01-09-2010
    Bulat_Ziganshin

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    new version  

    ищи в заголовке "Текущая альфа версия"

    Всего записей: 3401 | Зарегистр. 13-08-2007 | Отправлено: 12:00 01-09-2010
    gjf



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Bulat_Ziganshin
    Я так и думал, просто смутило, что "новость" написана
    Цитата:
    Отправлено: 00:41 01-09-2010 | Исправлено: Bulat_Ziganshin, 00:50 01-09-2010  

    А в "текущей альфа-версии

    Цитата:
    Отправлено: 18:15 07-09-2009 | Исправлено: Bulat_Ziganshin, 17:34 26-07-2010  

     
    Добавлено:
    Кстати, на линке на линукс-версию ошибка 404.

    ----------
    Тут могла бы быть Ваша реклама... или эпитафия

    Всего записей: 11401 | Зарегистр. 14-03-2007 | Отправлено: 12:13 01-09-2010
    Bulat_Ziganshin

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    я под одним именем файла выкладываю все альфы, поэтому заголовок и не редактируется
     
    линуксовую 0.67 я ещё не компилял.

    Всего записей: 3401 | Зарегистр. 13-08-2007 | Отправлено: 12:26 01-09-2010
    Profrager



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Bulat_Ziganshin

    Цитата:
    если команда использует и <stdin> и <stdout>, то её stderr скрывается, так что на экране не остаётся вообще никакого мусора - всё точь-в-точь как при использовании внутренних алгоритмов
    а прогресс выполнения консольного приложения контролируется через количество данных, переданных через stdin? Или каким образом?У меня помнится так не получилось реализовать, приходилось читать stdout/stderr дабы выудить оттуда текущий % операции

    Цитата:
    в результате теперь при наличии достаточного объёма ОЗУ можно использовать lzma-x64 для сжатия со словарём 512-1024 мб в макс. режиме. или использовать 4x4:lzma на пару десятков гиг. и всё это будет распаковываться встроенным lzma - если хватит 32-битной памяти. а можно и внешним, в режиме фильтра временных файлов всё равно не будет
    я доволен как слон)

    Цитата:
    кстати, интересно сравнить с тем, что в планах партии было записано:
    а это откуда цитата?

    Всего записей: 888 | Зарегистр. 22-05-2010 | Отправлено: 12:57 01-09-2010
    egor23



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Profrager

    Цитата:
    а это откуда цитата?

    из первой части топика
    http://forum.ru-board.com/topic.cgi?forum=5&topic=24319&start=660#17

    Всего записей: 3832 | Зарегистр. 03-11-2003 | Отправлено: 13:18 01-09-2010
    Bulat_Ziganshin

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    а прогресс выполнения консольного приложения контролируется через количество данных, переданных через stdin?

    программа, выполняемая ка фильтр, в этом плане мало чем отличается от встроенного алгоритма - у неё есть входные/выходные буера определённого размера и если она обрабатывает данные строго последовательно, то пока она не сожмёт условно говоря 55-й мегабайт, 57-й она читать не начнёт
     

    Цитата:
    а это откуда цитата?

    из history.txt. там верхняя половина - действительно история, а нижняя - идеи того, что надо сделать или исправить
     
    Добавлено:

    Цитата:
    из первой части топика
    http://forum.ru-board.com/topic.cgi?forum=5&topic=24319&start=660#17

    да, блин эту идею можно было реализовать ещё два года назад, когда у меня появилась 64-битная машина. там делов-то на полдня, и не было бы проблемы с упаковкой игрушек по максимуму

    Всего записей: 3401 | Зарегистр. 13-08-2007 | Отправлено: 13:23 01-09-2010
    Profrager



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Bulat_Ziganshin

    Цитата:
    у неё есть входные/выходные буера определённого размера и если она обрабатывает данные строго последовательно, то пока она не сожмёт условно говоря 55-й мегабайт, 57-й она читать не начнёт
    да это то понятно, меня как раз интересует контроль за входным буфером внешней программы. У меня получалось только записать сразу все входные данные в pipe, а как их кидать порциями и как контролить то, что прога уже прочитала все занесенные данные и надо записать в pipe еще порцию?

    Всего записей: 888 | Зарегистр. 22-05-2010 | Отправлено: 13:57 01-09-2010
    Bulat_Ziganshin

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lzma-freearc-x64.exe sources: http://freearc.org/download/testing/lzma-freearc-src.arc  
     
    Добавлено:
    скажем lzma читает/пишет данные небольшими кусками, килобайта по 32. у меня буфера по 256 кб. ОС нигде их не буферизует. у меня в программе выполняются два треда параллельно: один получает данные изнутри и кидает их в пайп к lzma, второй читает их из пайпа от lzma и передаёт дальше в программу. пока второй тред данные не прочитает, lzma просто не сможет пойти дальше. вероятно, у тебя просто не исчпользовалось два треда для одновременной работы с stdin и stdout программы

    Всего записей: 3401 | Зарегистр. 13-08-2007 | Отправлено: 14:01 01-09-2010
    THE GUILTY GOD



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ Я переписал скрипт на основе Need for Speed™ Undercover, но куда надо сбросить архивы freearc и как их запустить Я не понял.  
    Подскажите что мне делать и куда что вписывать

    Всего записей: 165 | Зарегистр. 24-06-2010 | Отправлено: 14:10 01-09-2010
    Profrager



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Bulat_Ziganshin
    спасибо, как буду дома посмотрю исходники. Но по описанию все же не понял как прога определяет, что lzma запрашивает данные в пайпе. Вот с помощью PeekMessage(или как-то так) я могу узнать есть ли данные в выходном пайпе от lzma, которые можно прочитать. С входным так же что-ли? Ладно, потом разберусь с этим)
    Кстати, а почему бы так же не отрубать stdout+stderr у внешних компрессоров, у которых задан stdin, ведь его прогресс будет известен, и выводить в консоль его надписи не обязательно. Или мож как-то опционально через arc.ini это задавать.

    Всего записей: 888 | Зарегистр. 22-05-2010 | Отправлено: 14:45 01-09-2010
    Profrager



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Bulat_Ziganshin
    аааа, хееелп. Замучился пытаться скомпилить facompress.dll только с распаковывающими функциями..
    Вот добавляю в common.mak, как ты говорил, FREEARC_DECOMPRESS_ONLY
    Код:
    DEFINES  = -DFREEARC_DECOMPRESS_ONLY -DFREEARC_WIN -DFREEARC_INTEL_BYTE_ORDER -DWIN32 -D_WINDOWS -D_UNICODE -DUNICODE
    в facompress.def вырезаю все ненужное, оставляю
    Код:
    EXPORTS
      UpdateCRC
      CalcCRC
      lzma_decompress
      dict_decompress
      rep_decompress

    В итоге после запуска compile-dll.cmd куча unresolved external symbol Что я еще не подправил?
     
    Добавлено:
    Убрал -DFREEARC_DECOMPRESS_ONLY, все скомпилилось
    правда в makefile-dll убрал ненужные мне obj файлы..но подозреваю, что от оставшихся линкуются и compress и decompress фукции..Как сделать, чтобы они не компилились, но все остальное работало?)
     
    Добавлено:
    Прям кино) добавил MultiThreading.obj к OBJS, все склепалось) 118'784 - уже хороший размер)

    Всего записей: 888 | Зарегистр. 22-05-2010 | Отправлено: 17:40 01-09-2010 | Исправлено: Profrager, 18:23 01-09-2010
    ndch

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Bulat_Ziganshin

    Цитата:
    * Multithreaded deflate compressor - fastest on the planet!

    конкретно это в каком режиме ?

    Всего записей: 6488 | Зарегистр. 31-08-2008 | Отправлено: 18:48 01-09-2010
    V2driver



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Bulat_Ziganshin каков минимальный размер словаря lzma (кб)????

    Всего записей: 462 | Зарегистр. 01-02-2010 | Отправлено: 19:40 01-09-2010 | Исправлено: V2driver, 21:56 01-09-2010
    Bulat_Ziganshin

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Bulat_Ziganshin каков минимальный размер lzma (кб)????

    что такое размер lzma?
     

    Цитата:
    конкретно это в каком режиме ?

    при сжатии в zip

    Всего записей: 3401 | Зарегистр. 13-08-2007 | Отправлено: 19:57 01-09-2010
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106

    Компьютерный форум Ru.Board » Компьютеры » Программы » FreeArc: бесплатный open-source архиватор - Часть 3
    Widok (23-11-2010 11:37): Лимит страниц. Продолжаем здесь


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru