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

Когда ты поставляешь софт под 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

Данная команда создаст файл megasoft-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/


Оригинальный пост | Disclaimer

Комментарии