Как делают двоичные установщики Linux (.bin, .sh) работа?

Я думаю, что это то, что вы хотите: сделать MAKE_VERBOSE = 1 цель

62
задан Curt J. Sampson 26 June 2009 в 04:13
поделиться

4 ответа

По сути, это сценарий оболочки, добавляемый к некоторому сжатому архиву, например tar-архиву. Вы используете команду tail или sed на себе (переменная $ 0 в оболочке Bourne), чтобы удалить сценарий оболочки спереди и передать остальное своему unarchiver.

Например, создайте следующий сценарий как самораспаковывающийся :

#!/bin/sh -e
sed -e '1,/^exit$/d' "$0" | tar xzf - && ./project/Setup
exit

Приведенная выше команда sed удаляет все строки из первой строки файла до первой. который начинается с «выхода», а затем передает все остальное. Если сразу после строки «exit» начинается tar-файл, команда tar извлечет его. В случае успеха .

86
ответ дан 24 November 2019 в 16:38
поделиться

GNU sharutils:

http://www.gnu.org/software/sharutils/

- это набор инструментов для создания оболочки архивы и предоставляет некоторые дополнительные функции, которые могут быть полезны (например, контрольные суммы для обеспечения того, чтобы полезная нагрузка не была повреждена при транспортировке).

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

4
ответ дан 24 November 2019 в 16:38
поделиться

Вы можете проверить makeself.sh

из примечания авторов.

makeself.sh - это небольшой сценарий оболочки, который генерирует самораспаковывающийся архив tar.gz из каталога. Полученный файл выглядит как сценарий оболочки (многие из них имеют суффикс .run) и может быть запущен как есть. Затем архив распакуется во временный каталог, и будет выполнена дополнительная произвольная команда (например, сценарий установки).

Архивы Makeself также включают контрольные суммы для самопроверки целостности (контрольные суммы CRC и / или MD5).

Makeself. Сам скрипт sh используется только для создания архивов из каталога файлов. Результирующий архив на самом деле представляет собой сжатый (с использованием gzip, bzip2 или сжатия) архив TAR с небольшой заглушкой сценария оболочки в начале. Эта небольшая заглушка выполняет все шаги по извлечению файлов, запуску встроенной команды и удалению временных файлов, когда все закончится. Все, что пользователь должен сделать для установки программного обеспечения, содержащегося в таком архиве, - это "запустить" архив [то есть выполнить сценарий]

Я пытаюсь сохранить код этого сценария как можно более переносимым, т.е. не полагаться на какие-либо специфичные для bash функции и вызывает только команды, которые установлены в любой функционирующей UNIX-совместимой системе. Этот сценарий, а также создаваемые им архивы должны работать в любом варианте Unix, с любой совместимой оболочкой Bourne,

52
ответ дан 24 November 2019 в 16:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: