Как создать самораспаковывающийся архив или инсталлятор в LinuxИсточник: rus-linux rus-linux
В то время как обычный файл архива требует отдельной программы (например tar, gunzip) для извлечения контента из архива, самораспаковывающийся (SFX) архив сам является исполняемым, и может сам извлекать свой контент при запуске. Самораспаковывающийся инсталлятор делает то же самое, но при этом копирует извлекаемые файлы в соответствующие директории. Для этих целей вы можете использовать утилиту командной строки под названием makeself, которая представляет собой скрипт оболочки, создающий архив, сжатый с помощью TAR, и добавляющий к нему небольшой скрипт-заглушку в начале архива для инициации самораспаковки и управления установкой извлекаемых файлов. Базовый синтаксис makeself.sh: makeself.sh [options] [directory_to_package] [sfx_archive_filename] [label] [startup_script] [optional_script_args]Аргумент "label" - это сообщение, которое выводится после окончания распаковки. Некоторые другие полезные опции makeself.sh: --gzip : использовать для сжатия gzip (используется по умолчанию); Создание самораспаковывающегося архиваДля создания самораспаковывающегося архива, содержащего все файлы из директории ./backup, используйте приведенную ниже команду. Здесь стартовая процедура не делает ничего, кроме того, что выводит сообщение "Extraction done". $ makeself.sh --notemp ./backup ./backup.run "SFX archive for backup" echo "Extraction done" Header is 403 lines long About to compress 1540 KB of data... Adding files to archive named "./backup.run"... ./ ./jpeg/ ./jpeg/1.jpg . . CRC: 2238411397 MD5: 0b0fd3a2ba08ffcec821b9cbaa11b70dСамораспаковывающийся архив "./backup.run" успешно создан. Создание самораспаковывающегося инсталлятораЕсли вы хотите создать самораспаковывающийся инсталлятор, вам необходимо подготовить отдельный стартовый скрипт, который будет инсталлировать извлекаемые файлы. Здесь я предполагаю, что директория программы расположена в ./program, поэтому поместим стартовый скрипт в эту директорию. $ vi ./program/install.sh #!/bin/sh if [ -d $HOME/bin ] then cp myprogram $HOME/bin/ fiЗатем сделаем стартовый скрипт исполняемым. $ chmod 755 ./program/install.shИ наконец создаем инсталлятор со стартовым скриптом, как показано ниже: $ makeself.sh ./program ./program.run "SFX installer for program" ./install.sh |