подскажите как мне сделать следущее:
у меня есть
setup.sh
program.tar.gz
setup.sh распаковывает program.tar.gz и раскидывает по нужным папкам файлы...
хочеться написать скрипт который бы эти два файла склеивал и скрипт который эти файлы разделял.... таким образом получился бы самораспаковывающийся архив...
Вообщем хочеться как сделан .run файл у драйверов к nvidia'вским видеокартам =)
sfx архив
Модератор: Bizdelnick
-
TWINc
- Сообщения: 179
- ОС: Arch Linux Current
sfx архив
Registered Linux user number #434194
-
Andrew S
- Сообщения: 225
- Статус: экспериментатор
- ОС: Conrad-Gentoo
Re: sfx архив
склеивать так:
cat file1 file2 > file3
резать с помощью dd - читай man dd
cat file1 file2 > file3
резать с помощью dd - читай man dd
-
diesel
- Бывший модератор
- Сообщения: 5989
- ОС: OS X, openSuSE, ROSA, Debian
-
TWINc
- Сообщения: 179
- ОС: Arch Linux Current
Re: sfx архив
diesel
спасибо за split. там все понятно... теперь надо вот что сделать...
как мне узнать размер файла?
чтобы я смог его засунуть в переменную
спасибо за split. там все понятно... теперь надо вот что сделать...
как мне узнать размер файла?
чтобы я смог его засунуть в переменную
Registered Linux user number #434194
-
backslash
- Сообщения: 125
Re: sfx архив
как мне узнать размер файла?
чтобы я смог его засунуть в переменную
man stat
Пример скрипта, решающего поставленную в первом сообщении задачу ("самораспаковывающийся архив"), подробно разобран в книге Кернигана и Пайка "UNIX. Программное окружение" (известна также под другими названиями) - там он называется bundle.
Код: Выделить всё
#!/bin/sh
echo '#!/bin/sh'
echo '# Чтобы распаковать, запустите этот файл'
for i
do
echo "echo $i 1>&2"
echo "cat >$i <<'End of $i'"
cat $i
echo "End of $i"
doneИспользование:
Код: Выделить всё
$ bundle file1 file2 > junkРаспаковка:
Код: Выделить всё
$ chmod a+x junk && ./junkВажно: вначале разобраться, КАК работает bundle - и только потом использовать, при необходимости подправив "под себя". Строка 'End of file1' в середине файла file1 может создать серьезные проблемы.
-
diesel
- Бывший модератор
- Сообщения: 5989
- ОС: OS X, openSuSE, ROSA, Debian
Re: sfx архив
-
TWINc
- Сообщения: 179
- ОС: Arch Linux Current
Re: sfx архив
Всем спасибо за помощь!
Может быть кому нибудь пригодитсья... вот мой скрипт
make_pkg.sh
создать архив можно так
./make_pkg.sh Data [path]
установить как
./Data install [path]
извлечь
./Data extract
Может быть кому нибудь пригодитсья... вот мой скрипт
make_pkg.sh
Код: Выделить всё
#!/bin/bash
# скрипт создания самораспаковывающихся tar.gz архивов.
clear
echo "SmartSoftware package build utility"
echo "Version 1.0-sfx 2006"
# путь к папке с данными
archive="$1"
# путь установки
root_dir="$2"
if [ ${#root_dir} -eq 0 ]; then
root_dir="./"
fi
cd $archive
printf "Making tarball..."
find . -type f -print0 | xargs -0 tar rvf "$archive.tar" > /dev/null
printf "\t\tdone.\n"
printf "Making Gzipped tarball..."
gzip $archive.tar
printf "\t\tdone.\n"
mv $archive.tar.gz ../$archive.tar.gz
cd ..
filesize=`stat -c %s $archive.tar.gz`
echo "Archive filesize: $filesize bytes"
printf "Making SFX..."
# скрипт самораспаковки
printf "#!/bin/bash\n\
ec=1\n\
skip=$filesize\n\
ext_path=\"$root_dir\"\n\
if [ \${#2} -ne 0 ]; then\n\
ext_path=\$2\n\
fi\n\
mkdir -p \$ext_path > /dev/null\n\
case \"\$1\" in\n\
install)\n\
printf \"Installing $archive...\" \n\
tail -c \$skip \$0 | gzip -cd | tar -x --verbose --directory=\$ext_path \n\
echo \"done.\"\n\
ec=0\n
;;\n\
extract)\n\
printf \"Extracting $archive...\" \n\
tail -c \$skip \$0 > $archive.tar.gz \n\
echo \"done.\"\n\
ec=0\n
;;\n\
*)\n\
echo \"Usage: \$0 (install|extract)\"\n\
esac\n\
exit \$ec\n\
" > $archive.sfx
# конец скрипта;-)
cat $archive.tar.gz >> $archive.sfx
chmod a+x $archive.sfx
printf "\t\tdone.\n"
printf "Cleaning..."
rm $archive.tar.gz
printf "\t\tdone.\n"
printf "SFX Archive successfully created.\n\n"
# EOF :)создать архив можно так
./make_pkg.sh Data [path]
установить как
./Data install [path]
извлечь
./Data extract
Registered Linux user number #434194
-
elide
- Бывший модератор
- Сообщения: 2421
- Статус: Übermensch
- ОС: лялих
Re: sfx архив
ох и любите же вы придумывать велосипеды на квадратных калесах....
простой поиск в гугле по словам shell archive сразу находит команду shar, которая делает эти самые sfx shell archives, которые для своей распаковки требуют только /bin/sh, /bin/sed и /bin/echo....
простой поиск в гугле по словам shell archive сразу находит команду shar, которая делает эти самые sfx shell archives, которые для своей распаковки требуют только /bin/sh, /bin/sed и /bin/echo....
слава роботам!
-
diesel
- Бывший модератор
- Сообщения: 5989
- ОС: OS X, openSuSE, ROSA, Debian
Re: sfx архив
Ну команда вроде не стандартная(я ее нигде у себя не нашел), поэтому можно и велосипед
правда велосипед немного оригинальный получился 
-
backslash
- Сообщения: 125
Re: sfx архив
ИМХО, если готового решения в системе нет, а задача довольно простая, то логичней собрать велосипед из подручных материалов (сколько там строчек на шелле?), нежели выгугливать в интернете собранный. Здесь важно и время, и деньги (траф).
P.S. Signate, в Вашем скрипте, как мне кажется, было бы красивей использование here-documents (а так приходится backslash`ить (см. мой ник=)) всевозможные спецсимволы в выводе; man bash).
P.S. Signate, в Вашем скрипте, как мне кажется, было бы красивей использование here-documents (а так приходится backslash`ить (см. мой ник=)) всевозможные спецсимволы в выводе; man bash).
-
elide
- Бывший модератор
- Сообщения: 2421
- Статус: Übermensch
- ОС: лялих
Re: sfx архив
могу поспорить, что найти shar в гугле и скачать 14кб самой программы - гораздо быстрее, чем написать эту фигню самому. в дополнительные плюсы попадает гораздо лучая техническая реализация, надежность оттестированой за 16 лет программы и стандартность решения.
даже я, на своем ужасном 28.8 модеме нашел, стянул, собрал из сырцов в пакет и поставил shar меньше чем за 3 минуты.
могу поспорить, что при написании своего скрипта автор не вложился и в 20 минут.
и вообще, "Изобретение велосипеда - неуважение к труду того, кто велосипед изобрел первым" (с) alv.
даже я, на своем ужасном 28.8 модеме нашел, стянул, собрал из сырцов в пакет и поставил shar меньше чем за 3 минуты.
могу поспорить, что при написании своего скрипта автор не вложился и в 20 минут.
и вообще, "Изобретение велосипеда - неуважение к труду того, кто велосипед изобрел первым" (с) alv.
слава роботам!
-
backslash
- Сообщения: 125
Re: sfx архив
Этот спор ни к чему не приведет: кому-то удобнее/привычнее гуглить, кому-то - писать шелл-скрипты. Да и к тому же, здесь многое зависит и от конкретной задачи, и от конкретного человека.