[perl] шедевральный образчик индусокода

Barbie29

вытянуто из официального инсталятора тузлы DimDim (dimdim.com) вот код: http://muromec.org.ua/media/files/wall/dimdiminstall_offline...
ПОСЛЕ НИЖЕСЛЕДУЮЩЕГО КОДА ПОРВАЛО НА КЛОЧКИ!

#!/usr/bin/perl
use strict;
system("echo Starting the main script");
system("echo Checking for perl version");

my $hostedlocation = "./dimdimrepository/";

my $perl = system("perl -version >> dimdimextract.log");
if($perl != 0)
{
system("echo Perl not available in your system");
system("echo Installing perl");
`chmod +x ActivePerl-5.6.1.638-i686-linux.rpm`;
`rpm -ivh ActivePerl-5.6.1.638-i686-linux.rpm`;
}
system("echo Calling Pre-install process for dimdim installation");

а что там дальше - вообще издохнуть в страшных муках можно, установщик Гнома, ОпенОффис и черти чего там начинает ставить

klyv

:grin: кажется, в юмор :)

doublemother

Ну вывод текста при помощи system - это да. Хотя и не так брутально, как проверка перловым скриптом наличия на машине перла

valodyr

А вы не думали, что этот скрипт тупо предполагалось в бинарник превратить каким-нибудь perlcc?

doublemother

А его не проще было бы написать сразу на сях и скомпилить, чем танцевать с perlcc? И работал бы побыстрее, ага.

SCIF32

почему сразу не на ассемблере?
зы
если ни с чем не танцевать, то такое пишут на sh.

doublemother

Потому что зачем доводить до абсурда? perlcc сконвертирует ваш код в сёвый и скомпилит его, конвертация будет скорее всего далеко не оптимальной, так почему бы не написать сразу на сях, благо сложного в данном коде ничего нету.
Ну, тут говорилось про бинарник. Может, люди хотят сокрыть свой страшный код от посторонних глаз.

2354570

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

conv3rsje

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

doublemother

Если нужна разумность - то естественно на шелле, а если конвертировать зачем-то в бинарник, лучше всё-таки на сях.

pitrik2

а какая разница на чем оно написано?
как оно вообще может само ставить перл?
откуда она знает какой пакет перла подойдет?

2354570

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

Papazyan

Все-таки нехорошо вот так просто ставить перл без разрешения. Надо хотя бы спросить, желаете ли установить перл автоматически или хотите потрахаться сами?

pitrik2

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

psihodog

Надо хотя бы спросить, желаете ли установить перл автоматически или хотите потрахаться сами?
Угу, чтобы слушать потом многочисленные багрепорты от костюмеров: "Я захотел потрахаться, а у меня не встаёт!"? :grin:

Marinavo_0507

Какой самому трахаться?
Это же винда: где гамак, где лыжи?

Papazyan

Какая венда? Побойся бога!

Anna74

Это же винда: где гамак, где лыжи?
Потому что ActivePerl? :)

`chmod +x ActivePerl-5.6.1.638-i686-linux.rpm`;
`rpm -ivh ActivePerl-5.6.1.638-i686-linux.rpm`;

Anna74

Какой пакет подойдёт - наверное, это знают разработчики приложения.
ну не могут они знать какой у меня линь
Они знают какая - они ниже это тоже проверяют и переустанавливают. :)
и вдруг у меня перл лежит в другом месте но я случайно забыл его в PATH указать? терь мне захламлять комп лишним перлом?
лишний перл не бывает, разработчики это точно знают

Barbie29

`chmod +x ActivePerl-5.6.1.638-i686-linux.rpm`;
а вы мне обхясните, значем делать chmod то?!

Fragaria

Ну если это твой единственный вопрос, то тебе пора в Индию :grin: :grin: :grin:

Barbie29

я не понимаю, почему сразу нельзя сделать ./ActivePerl-5.6.1.638-i686-linux.rpm
:confused: :confused:

Fragaria

Шантипракаш Рафатович, вы? :shocked:

kruzer25

Видимо, сначала они так и собирались сделать, для этого и chmod написали?

Barbie29

ya-ya, даст ист факинг инкридибл, амазинг, холи щит!

Fragaria

Ты бы попробовал сначала, прежде чем писать, а? Схуяли система должна запустить неисполняемый файл? Да и кстати даже если там стоит +x, то файл от этого всё равно исполняемым не станет - это не ELF, не a.out и не шелл-скрипт с указанием программы-обработчика.

vall

ну вообще-то линухе есть штука под названием binfmt, можно заставить "запускаться" любую хрень
возможно где-то и rpm`ки "запускаются"

Vlad77

Скорее разработчик верил, что rpm хавает только "исполняемые" пакеты. Отчего-то у меня это не вызывает шокирующей рекции :crazy:

Fragaria

Ну в любом случае, даже если где-то RPM и являются "исполняемыми", это не стандартное поведение и рассчитывать на то, что это сработает на любой наперёд заданной системе, нельзя.

Fragaria

Почитал остальной код. Пиздец какой-то.... Он по сути чуть ли не всю систему ставит заново, причём указывает dbpath в отдельную папку, отличную от дефолтной. Я бы руки оборвал таким программистам. Если уж так нужны зависимости - ну упакуй ты свою программу в тот же RPM!

Barbie29

ну дык йобтить. педорасы еще те

pitrik2

Ты бы попробовал сначала, прежде чем писать, а? Схуяли система должна запустить неисполняемый файл?
эээ
кажись ты пеартура не понял
я так понимаю он имел ввиду вот что:
1) сначала они написали chmod+x и ./
2) потом запустили прогу и ./ не сработал
3) они тогда ./ заменили на rpm -ivh, а первую строчку про +x стереть забыли

Anna74

А у них оно точно в ./ лежало?

kruzer25

Схуяли система должна запустить неисполняемый файл?
Ты невнимательно прочитал?

kruzer25

Именно!
Оставить комментарий
Имя или ник:
Комментарий: