понедельник, 17 октября 2011 г.

Cамораспаковывающийся архив для linux

Была необходимость собрать архив для линухов с майнкрафтом от буккита.
За основу взял http://linsovet.com/content/самораспаковывающийся-архив
но так как кирилицу в путях баш не знает, пришлось ваять на перле и вот что получилось:
#!/usr/bin/perl
# Получаем путь к пользовательскому десктопу
$DESKTOP = `xdg-user-dir DESKTOP`;
chomp $DESKTOP;
$sys = 'echo $USERNAME';
# Получаем имя юзверя
$USERNAME = `$sys`;
chomp $USERNAME;
# текст ярлычка на рабчем столе
$text = "
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[ru_UA]=gnome-panel-launcher
Exec=env LANG=ru_UA.UTF-8 java -Xincgc -Xmx1G -jar '/home/$USERNAME/.minecraft/minecraft.jar'
Name[ru_UA]=minecraft
Name=minecraft
Icon=/home/$USERNAME/.minecraft/logo.png
";
open(LOG, "> $DESKTOP/minecraft.desktop") or die;
if (!print LOG $text){
warn "Не могу создать файл\n";
}
close(LOG);
`chmod +x '$DESKTOP/minecraft.desktop'`;
$cmd = 'cd /home/'.$USERNAME.' && sed -e \'1,/^=END_OF_SCRIPT$/d\' '.$0.' | base64 -d | tar -xj';
`$cmd`;
exit;
=END_OF_SCRIPT
после cat myrch.tar.bz2 | base64 >> scriptname.pl
всё получилось как нельзя кстати, далее можно скрипт раздавать праведным линуксоидам)