Архив

Posts Tagged ‘самораспаковывающийся архив’

Саморазархивирующиеся архивы для UNIX

1 июня, 2010 4 комментария

Когда ты поставляешь софт под UNIX, редко бывает ситуация, когда на стороне заказчика в группе сопровождения вообще нет людей, знакомых с UNIXом. Так или иначе, стиль этой операционной системы заставляет работать с командной строкой и знать хотя бы базовые команды. Тут порой недостаточно просто «кликнуть на файл с дистрибутивом». Не буду говорить, как это хорошо или плохо для заказчика — это его выбор, но для нас, поставщиков, это удобно. Удобно, когда «с той стороны» есть люди, которым достаточно сказать типа возьмите tar-архив, разверните в такой то директории, проверьте права и замените такие-то бинарники.

Но порой нужно таки сделать «а-ля» коробочную установку в стиле «взял один файл-архив, запустил и получил результат». Ситуация усугубляется, когда все это надо делать под разными сортами UNIXа. Конечно, есть вариант написать этого зверя на Java. На ней можно сделать установщик еще и графическим. Нужно только, чтобы эта Java была у заказчика, то есть опять тема простоты уходит. Нужно что-то простое и легковесное.

Небольшой анализ привел меня к makeself. В двух словах — это саморазархивирующиеся shell-скрипты. То есть вы готовите процедуру установки, сводите все к наличию каталога со всеми необходимыми файлами, и, если нужно, скриптом, которые надо запустить после разархивации. Все как у так называемых SFX (self extract) модулей для WinRAR, например. Прелесть в том, что в итоге вы получаете одиночный файл, который является абсолютно стандартным shell-скриптом, работающим в большом количестве типов UNIX, и который также содержит внутри себя архив с вашими файлами. Все, что нужно сделать на стороне клиента, это запустить этот файл.

Допустим, вы подготовили ваш дистрибутив в каталоге /home/sandbox/intallation. Также у вас есть скрипт ./setup, который необходимо запустить после разархивации для локальной настройки, например. Все что вы делаете:

makeself.sh /home/sandbox/installation megasoft-0.0.1.sh «Mega Software 0.0.1» ./setup

Данная команда создаст файл magesoft-0.0.1.sh, в который упакуется содержимое каталога /home/sandbox/intallation и скрипт ./setup. Теперь все, что надо сделать на стороне клиента, это запустить это файл командой:

. ./megasoft-0.0.1.sh

Скрипт разархивирует собственное содержимое и запустит ваш скрипт setup, который сможет окончательно настроить установку.

makeself позволяет использовать для компрессии стандартные средства UNIX на выбор — compress, gzip, bzip2. Также содержимое архива дополнительно защищается контрольными суммами: MD5 или CRC. Это может быть полезно, если вы не используете компрессию, а целостность данных проверять все же хотите.

Список же поддерживаемых типов UNIX для текущей версии 2.1 весьма внушителен:

* Linux (all distributions)
* Sun Solaris (8 tested)
* HP-UX (tested on 11.0 and 11i on HPPA RISC)
* SCO OpenUnix and OpenServer
* IBM AIX 5.1L
* MacOS X (Darwin)
* SGI IRIX 6.5
* FreeBSD
* UnicOS / Cray

Напомню ссылку на makeself еще раз — http://megastep.org/makeself/



Источник: easy-coding