Самораспаковывающийся shell-скрипт
В этой статье описывается создание само-распаковывающегося shell скрипта в unix подобных операционных системах
Роаботая роаботу на роаботе
ДПоставлена зоадача была мне
ШЧтоб можно было Linux'ы настроить
И шчтобы все ну просто, прям ваообще.
Задача есть, надо исполнять, ага думаю, просто - ну ОК, значит это должен быть всего один файл и чтобы прям клац по нему и все, ГОТОВО! Ага, думаю ну окей, будет вам кнопка "зделать все зае[CENSORED]" Насяльника.
Итак создаваем начинать:
(PS: задача довольно таки тривиальная, но чтобы самому не забыть, да и вам подсказать, приходится все записывать):
Имеется несколько файлов с настройками, которые необходимо скопировать в каталог пользователя и потом провести еще какие-то манипуляции. То есть надо написать такой скрипт который будет брать файлы и копировать их куда нужно, стоп но это уже куча файлов, а нам надо один. Значит надо создать самораспаковывающийся SFX (SelF-eXtractable) скрипт содержащий в себе архив который после запуска будет распаковываться и потом производить какие-то еще дополнительные манипуляции.
Первое что нужно сделать - это создать архив с нужными файлами.
tar czf имя_архива.tar.gz папка
далее создадим скрипт script.sh
который будет распаковывать и производить нужные нам манипуляции.
#!/bin/bash
echo "Распаковка архива..."
SKIP=`awk '/^__TARFILE__/ { print NR + 1; exit 0; }' $0`
THIS=`pwd`/$0
tail -n +$SKIP $THIS | tar -xz
echo "Файлы извлечены."
# здесь можно прописать выполнение еще каких-то комманд
exit 0
# Строка ниже ДОЛЖНА БЫТЬ ПОСЛЕДНЕЙ в скрипте!!!
__TARFILE__
И последнее что необходимо сделать - это обьеденить скрипт с архивом .tar.gz и сделать его исполняемым.
cat script.sh archive.tar.gz > installer.sh
chmod +x installer.sh
Ну вот и все, для запуска получившегося инсталлятора нужно в терминале выполнить комманду:
./installer.sh
Надеюсь эта статься была кому нибудь полезна и спасибо за внимание.