Создание инсталлятора для linux

Содержание
  1. Как создать самораспаковывающийся архив или инсталлятор в Linux
  2. Создание самораспаковывающегося архива
  3. Создание самораспаковывающегося инсталлятора
  4. Находки программиста
  5. вторник, 18 октября 2011 г.
  6. Простой инсталлятор для Linux средствами bash
  7. Пакеты для создания инсталляторов
  8. Re: Пакеты для создания инсталляторов
  9. Re: Пакеты для создания инсталляторов
  10. Re: Пакеты для создания инсталляторов
  11. Re: Пакеты для создания инсталляторов
  12. Re: Пакеты для создания инсталляторов
  13. Re: Пакеты для создания инсталляторов
  14. Re: Пакеты для создания инсталляторов
  15. Re: Пакеты для создания инсталляторов
  16. Re: Пакеты для создания инсталляторов
  17. Re: Пакеты для создания инсталляторов
  18. Re: Пакеты для создания инсталляторов
  19. Re: Пакеты для создания инсталляторов
  20. Re: Пакеты для создания инсталляторов
  21. Re: Пакеты для создания инсталляторов
  22. Re: Пакеты для создания инсталляторов
  23. Re: Пакеты для создания инсталляторов
  24. Re: Пакеты для создания инсталляторов
  25. Re: Пакеты для создания инсталляторов
  26. Re: Пакеты для создания инсталляторов
  27. Re: Пакеты для создания инсталляторов
  28. Re: Пакеты для создания инсталляторов
  29. Re: Пакеты для создания инсталляторов
  30. Re: Пакеты для создания инсталляторов
  31. Re: Пакеты для создания инсталляторов
  32. Re: Пакеты для создания инсталляторов
  33. Как создать самораспаковывающийся архив или инсталлятор в Linux
  34. Создание самораспаковывающегося архива
  35. Создание самораспаковывающегося инсталлятора

Как создать самораспаковывающийся архив или инсталлятор в Linux

В то время как обычный файл архива требует отдельной программы (например tar, gunzip) для извлечения контента из архива, самораспаковывающийся (SFX) архив сам является исполняемым, и может сам извлекать свой контент при запуске. Самораспаковывающийся инсталлятор делает то же самое, но при этом копирует извлекаемые файлы в соответствующие директории.
В этом руководстве я покажу, как создать самораспаковывающийся архив или инсталлятор в Linux.

Для этих целей вы можете использовать утилиту командной строки под названием makeself , которая представляет собой скрипт оболочки, создающий архив, сжатый с помощью TAR, и добавляющий к нему небольшой скрипт-заглушку в начале архива для инициации самораспаковки и управления установкой извлекаемых файлов.
Чтобы установить makeself в Linux, скачайте его архив с последней версией, и распакуйте скачанный архив, как показано ниже. После того, как архив распакуется, он создаст новую директорию с названием makeself-2.1.5. Скопируйте все скрипты в директорию /usr/bin.

Базовый синтаксис makeself.sh:

Аргумент «label» — это сообщение, которое выводится после окончания распаковки.
Аргумент «startup_script» задает стартовый скрипт/команду, которые выполняются после успешной распаковки архива. Это полезно при создании самораспаковывающегося инсталлятора. Обычно стартовый скрипт копирует/инсталлирует извлеченный контент в соответствующие целевые директории. Стартовый скрипт может быть расположен внутри директории пакета, чтобы скрипт был включен в самораспаковывающийся архив.

Некоторые другие полезные опции makeself.sh:

—gzip : использовать для сжатия gzip (используется по умолчанию);
—bzip2 : использовать для сжатия bzip2;
—nocomp : не использовать сжатие;
—notemp :извлекать файлы не во временную директорию, а в специальную новую поддиректорию, созданную в текущей директории;
—follow : следовать всем символьным ссылкам и файлам архива, которые связаны между собой символьными ссылками.

Создание самораспаковывающегося архива

Для создания самораспаковывающегося архива, содержащего все файлы из директории ./backup, используйте приведенную ниже команду. Здесь стартовая процедура не делает ничего, кроме того, что выводит сообщение «Extraction done».

Самораспаковывающийся архив «./backup.run» успешно создан.
Для извлечения файлов из архива просто запустите его:

Создание самораспаковывающегося инсталлятора

Если вы хотите создать самораспаковывающийся инсталлятор, вам необходимо подготовить отдельный стартовый скрипт, который будет инсталлировать извлекаемые файлы. Здесь я предполагаю, что директория программы расположена в ./program, поэтому поместим стартовый скрипт в эту директорию.

Затем сделаем стартовый скрипт исполняемым.

И наконец создаем инсталлятор со стартовым скриптом, как показано ниже:

Источник

Находки программиста

Решения конкретных задач программирования. Java, Android, JavaScript, Flex и прочее. Настройка софта под Linux, методики разработки и просто размышления.

вторник, 18 октября 2011 г.

Простой инсталлятор для Linux средствами bash

Если вам приходилось ставить JDK на вашу Linux-машину, то вы знакомы с этим способом развёртывания приложения. И, если теперь ваша замечательная новая программа должна отправиться к благодарным пользователям, то почему бы не облегчить им жизнь с помощью простого «инсталлятора»? Вот увидите, клиенты это оценят.

Читайте также:  Удалить файл используемый windows

Как это выглядит?
Предельно просто. Пользователь загружает .sh файл и запускает его. Скрипт не просто создаёт все директории и т.п., а ещё и извлекает «из себя» файлы приложения и раскладывает их куда нужно.

Как это сделать?
Сначала создаём скрипт, а потом с помощью команды cat добавляем в него архив с файлами.
Например install.sh:

  1. #!/bin/bash
  2. A_F=`readlink -e «$0» `
  3. DIR=`dirname «$A_F» `
  4. TMP_ARH= «tmp.tar.gz»
  5. cd $DIR
  6. echo «Creating temporary arhive $TMP_ARH»
  7. tail -n +15 «$0» > $TMP_ARH
  8. echo «Unpacking temporary arhive $TMP_ARH»
  9. tar xzf $TMP_ARH
  10. echo «Removing temporary arhive $TMP_ARH»
  11. rm -f $TMP_ARH
  12. echo «Installation is complete!»
  13. exit 0
  14. ######

Тут делаем следующее:

  • В строках 2-3 определяем директорию, в которой в данный момент находится скрипт, в строке 5 переходим туда. Все дальнейшие операции выполняем относительно этой директории.
  • В строке 4 задаём имя временного архива.
  • В строке 7 «отрезаем» бинарную часть нашего скрипта (в данном случае она начинается со строки 15), которую добавим к скрипту позже. Бинарную часть сохраняем как временный архив.
  • В строке 9 распаковываем архив в текущую директорию и удаляем его в строке 11
  • Завершаем выполнение скрипта в строке 13 (чтобы bash не решил выполнить и наши бинарные данные, расположенные ниже).

Источник

Пакеты для создания инсталляторов

Какие есть в природе для Linux?

Я знаю InstallShield, InstallAnywhere — эти Java-based, делают Swing-based интерфейс.

Всё это коммерческое, без исходников.

Re: Пакеты для создания инсталляторов

man dh_make. Инсталлятор, нах.

Re: Пакеты для создания инсталляторов

Это Debian, меня же интересует инсталлятор, способный работать на любом линуксе.

Интересуют способы распространения только precompiled binary программ, а не из исходников.

Re: Пакеты для создания инсталляторов

Инсталлятор от loki.

Re: Пакеты для создания инсталляторов

ещё checkinstall на коечто способен

Re: Пакеты для создания инсталляторов

Re: Пакеты для создания инсталляторов

Re: Пакеты для создания инсталляторов

> меня же интересует инсталлятор, способный работать на любом линуксе.

Но лучше все же собрать еще и rpm и deb, это не сложно.

Re: Пакеты для создания инсталляторов

Ах да, совсем забыл упомянуть важную вещь. Нужно, чтобы инсталлер был автономен и обладал графическим интерфейсом.

Это, собственно, главное требование.

Re: Пакеты для создания инсталляторов

Да, вот loki инсталлер очень похож на то что нужно. Спасибо.

Re: Пакеты для создания инсталляторов

Вообще посмотри как квейк3 или остальные игры инсталируются. Там по моему у них своя простенькая апликуха, типа указать путь. Потом наверно скрытный tar 🙂

Re: Пакеты для создания инсталляторов

> Это Debian, меня же интересует инсталлятор, способный работать на любом линуксе.

> Интересуют способы распространения только precompiled binary программ, а не из исходников

Хороший тон — сборка пакетов под наиболее ходовые дистрибутивы + архив со скриптом для установки. Так поступают Adobe, Opera, Skype и другие коммерческие производители ПО.

Программа-инсталлятор да ещё и с графическим интерфейсом — худший вариант.

Re: Пакеты для создания инсталляторов

> Программа-инсталлятор да ещё и с графическим интерфейсом — худший вариант.

А почему худший?

StarOffice, помнится, был с граф. интерфейсом.
JBuilder и NetBeans тоже с граф. инсталлятором.
Loki опять же.

Re: Пакеты для создания инсталляторов

Не понимаю, зачем дифференцировать тип инсталлера, если сама программа может работать на любом дистрибутиве.

Возьмите Sun JDK/JRE, но у них текстовый скриптовый инсталлер.

Re: Пакеты для создания инсталляторов

>А почему худший?

потому что я например ее не поставлю, и большинство пользователей тоже,

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

Читайте также:  Ноутбук не загружается операционная система windows

Re: Пакеты для создания инсталляторов

Программа будет максимально интегрирована с системой. Это сильно облегчает жизнь при обновлении, удалении и т.п.

Re: Пакеты для создания инсталляторов

>Не понимаю, зачем дифференцировать тип инсталлера, если сама программа может
>работать на любом дистрибутиве.

ответ очень прост: кроме твоей программы (о чудо!) на компьютере пользоватля установлены еще и сотня других программ, и если каждая будет с помощью графического инсталятора ставиться надо сразу повеситься.

Re: Пакеты для создания инсталляторов

StarOffice и т.п. ни разу не пример для подражания — линуксовые версии у них тупо копируют процесс инсталляции на винду.

Re: Пакеты для создания инсталляторов

Во во, нахрена этот инсталятор нужен. Мне нужен .deb остальное в топку. И неизвестные бинари запускать тоже мало народу будет, мало-ли что там.

Re: Пакеты для создания инсталляторов

потому что сисадмин не может легко растиражировать инсталл на машины офиса. Потому что программа будет стояит особняком вне базы пакетов. Потому что ее файлы теперь не защищены от перезаписывания файлами любого пакета. причин много — потому что графический нестандартный инсталлер это зло.

Re: Пакеты для создания инсталляторов

Re: Пакеты для создания инсталляторов

> потому что я например ее не поставлю, и большинство пользователей тоже,

Не аргумент. Вот я поставлю. Откуда вы знаете, что сделают большинство пользователей?

> потому что пакеты устанавливать, обновлять и удалять надо дистрибутивным менеджером,
> Программа будет максимально интегрирована с системой. Это сильно облегчает жизнь при обновлении, удалении и т.п.

Многие пакеты ведь устанавливаются из сырцов «make install», и крайне редко есть в Makefile директива uninstall. Так что, поскольку большинство людей устанавливают пакеты из source tarball, можно сказать что их-то машины и есть помойки.

В общем-то я согласен с этим доводом, но дистрибутивов существует очень много, да ещё и плодятся со страшной скоростью. Дык что же, мне нужно делать инсталлер для каждого? Если пользователь знает, как запускать установленную прогу, то его точно так же можно научить её удалять — запускать uninstall.

> и черт знает куда твоя программа поставиться, если еще твой инсталятор еще и привелегии рута захочет — сразу в топку.

Можно подумать, что тот же RPM говорит, куда пакет поставился. RPM как раз и хочет рутовых привелегий. (Или я не прав?) А если я хочу поставить пакет в свой /home? И почему «мой» инсталлер непременно должен хотеть рута?

> кроме твоей программы (о чудо!) на компьютере пользоватля установлены еще и сотня других программ, и если каждая будет с помощью > графического инсталятора ставиться надо сразу повеситься.

Не понял. Почему? Кстати, можно и batch-mode предусматривать.

> StarOffice и т.п. ни разу не пример для подражания — линуксовые версии у них тупо копируют процесс инсталляции на винду.

> Потому что ее файлы теперь не защищены от перезаписывания файлами любого пакета.

Интересно, как это файлы программы, установленной менеджером, могут быть защищены?

> Потому что программа будет стояит особняком вне базы пакетов.

Я согласен, это единственный весомый аргумент. Но опять же — никаких стандартов в смысле установки пакетов в линуксе нет. Невозможно предусматривать инсталлятор для каждой системы. А производство кучи инсталлеров для некоторых систем порождает массу проблем для изготовителя и support team.

Кроме того, я хочу, чтобы была возможность устанавливать пакет локально в свой home. Как же это увязывается с политикой глобализации с помощью системного менеджера?

Ну и как же быть с пакетами в source tarball?

Re: Пакеты для создания инсталляторов

> и черт знает куда твоя программа поставиться,

Кстати, этот аргумент — как раз в пользу кастомного инстоллера.
Как раз в нём-то и можно детально указать путь до установки.

Читайте также:  Windows file list tool

Re: Пакеты для создания инсталляторов

> поскольку большинство людей устанавливают пакеты из source tarball

наоборот, большинство пользуется package manager.

> А если я хочу поставить пакет в свой /home? И почему «мой» инсталлер непременно должен хотеть рута?

Ну поставишь ты в /home, а дальше? Стандартный способ добавить в PATH — сделать симлинк в /usr/local/bin — все равно требует рута.

Re: Пакеты для создания инсталляторов

> Ну поставишь ты в /home, а дальше? Стандартный способ добавить в PATH — сделать симлинк в /usr/local/bin — все равно требует рута.

Да ну, ещё чего. Есть же .profile в home для этих целей.

Re: Пакеты для создания инсталляторов

Ага. А у кого-то .bash_profile или еще что-нибудь. В .profile руками добавлять? Нафига тогда инсталлятор?

Источник

Как создать самораспаковывающийся архив или инсталлятор в Linux

В то время как обычный файл архива требует отдельной программы (например tar, gunzip) для извлечения контента из архива, самораспаковывающийся (SFX) архив сам является исполняемым, и может сам извлекать свой контент при запуске. Самораспаковывающийся инсталлятор делает то же самое, но при этом копирует извлекаемые файлы в соответствующие директории.
В этом руководстве я покажу, как создать самораспаковывающийся архив или инсталлятор в Linux .

Для этих целей вы можете использовать утилиту командной строки под названием makeself, которая представляет собой скрипт оболочки, создающий архив, сжатый с помощью TAR, и добавляющий к нему небольшой скрипт-заглушку в начале архива для инициации самораспаковки и управления установкой извлекаемых файлов.
Чтобы установить makeself в Linux, скачайте его архив с последней версией, и распакуйте скачанный архив, как показано ниже. После того, как архив распакуется, он создаст новую директорию с названием makeself-2.1.5. Скопируйте все скрипты в директорию /usr/bin.

$ wget http://megastep.org/makeself/makeself-2.1.5.run $ chmod 755 makeself-2.1.5.run $ ./makeself-2.1.5.run $ cd makeself-2.1.5 $ sudo cp *.sh /usr/bin

Базовый синтаксис makeself.sh:

makeself.sh [options] [directory_to_package] [sfx_archive_filename] [label] [startup_script] [optional_script_args]

Аргумент «label» — это сообщение, которое выводится после окончания распаковки.
Аргумент «startup_script» задает стартовый скрипт/команду, которые выполняются после успешной распаковки архива. Это полезно при создании самораспаковывающегося инсталлятора. Обычно стартовый скрипт копирует/инсталлирует извлеченный контент в соответствующие целевые директории. Стартовый скрипт может быть расположен внутри директории пакета, чтобы скрипт был включен в самораспаковывающийся архив.

Некоторые другие полезные опции makeself.sh:

—gzip : использовать для сжатия gzip (используется по умолчанию);
—bzip2 : использовать для сжатия bzip2;
—nocomp : не использовать сжатие;
—notemp :извлекать файлы не во временную директорию, а в специальную новую поддиректорию, созданную в текущей директории;
—follow : следовать всем символьным ссылкам и файлам архива, которые связаны между собой символьными ссылками.

Создание самораспаковывающегося архива

Для создания самораспаковывающегося архива, содержащего все файлы из директории ./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» успешно создан.
Для извлечения файлов из архива просто запустите его:

$ ./backup.run Creating directory backup Verifying archive integrity. All good. Uncompressing SFX archive for backup. Done

Создание самораспаковывающегося инсталлятора

Если вы хотите создать самораспаковывающийся инсталлятор, вам необходимо подготовить отдельный стартовый скрипт, который будет инсталлировать извлекаемые файлы. Здесь я предполагаю, что директория программы расположена в ./program, поэтому поместим стартовый скрипт в эту директорию.

$ vi ./program/install.sh #!/bin/sh if [ -d $HOME/bin ] then cp myprogram $HOME/bin/ fi

Затем сделаем стартовый скрипт исполняемым.

$ chmod 755 ./program/install.sh

И наконец создаем инсталлятор со стартовым скриптом, как показано ниже:

Источник

Оцените статью