metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2009-10-20 08:18 pm

Разработка под Линукс. Просто?

Вот ощутил, так сказать, на собственной шкуре чо такое разработка под Линукс.

Простая задача: собрать чужой проект, чтобы можно было отладить мою дотнет-часть, с ним взаимодействующую.

Проект состоит из аддона к rdesktop, который вытаскивает виртуальный канал с виндового терминального сервера в виде двух fifo и работающей с этими fifo проги на питоне.
У авторов вся последовательность сборки и запуска задокументирована. Там множество вуду-действий, типа "настроить правила для udev, чтобы пользователь мог видеть подключаемые устройства", но б-г с ним.

Значит, rdesktop собирается нормально. Зачем они его собирают - не знаю, но так написано. Аддон к rdesktop собирается тоже нормально. fifo делаются вручную. Затем надо запустить питоновую прогу, для чего они делают EXPORT PYTHONPATH=$PWD/src:$PYTHONPATH и затем запускают питон с именем проги. Этот этап уже не работает. Если запустить питон и сделать import sys и print sys.path - в путях нужный путь есть. strace тем не менее показывает что скрипт питон открывает без путей вообще.

Ладно, думаю, разберемся позже, запускаю с полным путем. И тут начинается. Во первых, требуется google.protobuf, в инструкции не упомянутый. Качаем. Собираем бинарник. Запускаем питоном setup.py, вроде инсталлируется. Запускаем. Начинает требовать питоновые модули, упомянутые в инструкции.
Первый модуль python-pyaudio. В репозитории нет. Ищем гуглом. Есть deb. Качаем, ставим.
Второй модуль python-pyinotify. В репозитории есть. Ставим.
Третий модуль python-pyspeex. Нету. Ищем. Качаем исходники. Пытаемся ставить. Требует pyrex (какой-то модуль для интеграции C и Python). Ищем в репозитории. Есть. Ставим. Тянет за собой питон 2.4 (текущий используемый - 2.5.2). Запускаем опять билд pyspeex - ебубух, "cannot assign float to short" и получается на выходе только файл speex.c с содержимым типа "#error не используйте этот файл, в нем жабы черви и змеи"
В общем, уже как бэ и поздно, и мозг уже не соображает - потом буду разбираться дальше, или же напишу авторам, чтобы сами собирали свой шрот и не компостировали мозг.

В итоге мы имеем несколько часов потраченных на билд только одного мелкого куска системы.
И пример к чему приводит любимая методика "слепить из <говнаповторно использовать наработки сообщества".

Кстати, прототип этой хрени, без питонов, на чистом С, собрался и условно "заработал". Но судя по исходному коду, авторам надо безжалостно отрывать жопу (полное отсутствие обработки ошибок). То что это прототип - не оправдание, нормальный программист физически не может писать код, не обрабатывающий все мыслимые и немыслимые ошибки.

[identity profile] sheep2k.livejournal.com 2009-10-20 09:06 pm (UTC)(link)
Под винды тоже полно софта, который хрен соберёшь без плясок, даже с помошью прилагающихся файлов проекта под студию, например. Даже захардкоженые пути к библиотекам и инклюдам в проекте - не самое страшное.

[identity profile] fas-tm.livejournal.com 2009-10-20 09:18 pm (UTC)(link)
Так я не отрицаю. Поэтому написал что к самому Linux как бэ претензий нет.
Претензии к методологии разработки и вменяемому инженерному мышлению.
Я лично порвал бы в клочья поставщика если рядом с серваком нашел бумажку типа:
- Выточить правую направляющую рельсу из железнодорожной шпалы
- Отверстие с недостающим индикатором залепить жвачкой
- При работе сервера обмахивать веерами так как для установки охлаждения у нас нет лицензии.
- etc.

[identity profile] sheep2k.livejournal.com 2009-10-21 06:34 am (UTC)(link)
А вообще я тут с утра подумал и понял, что претензии к линуксу всё же есть.

Вот пример. Почти из реальной жизни :-)
Поставляем мы софт, скажем, на си и питоне и куче разных сторонних либах. Что мы делаем под виндой: складываем всё наше хозяйство в один пакет (архив) вместе с нашими либами, сторонними либами, с которыми надо собирать, паченым нами питоном (у нас было дело, только с руби) и всем-всем, что необходимо для правильной сборки нашего продукта.
Заказчик, согласно нашей доке, минимально правит конфиг, настраивает пути, если надо и гарантировано собирает наш продукт. Всё локально, ничего в системе не ломается, ничего искать в гугле и доставлять не надо. Красота, за исключением размера всего этого, но размер - это мелочи.

Как сделать такое под линуксом я себе представляю довольно смутно. Хотя, подозреваю, что тоже можно. Хотя это будет уже совсем не linux-way :-)

[identity profile] vp.livejournal.com 2009-10-21 06:38 am (UTC)(link)
Вот о чем и речь!

Как сделать такое под линуксом?

[identity profile] tonal.myopenid.com (from livejournal.com) 2009-10-21 07:20 am (UTC)(link)
Ровно так же.
Нужно перед передачей заказчику попробовать поставить всё по своей же инструкции на чистую систему. :)
И лучше, если это будут делать не разрабы а кто-то другой.

Сразу всплывёт какие пакеты недавно ставили и что пропатчивали.
После нескольких итераций - когда по имеющейся инструкции систему ставит первая отловленная уборщица - можно отправлять. :)

Re: Как сделать такое под линуксом?

[identity profile] sheep2k.livejournal.com 2009-10-21 09:16 am (UTC)(link)
Перед передачей заказчику всё тестируется на "голой" либо виртуальной машине, либо на нормальной, если таковая имеется, это само собой.
Кстати этим часто пренебрегают многие разработчики, а потом и всплывает, ой, а OpenSSH оказывается в системе у заказчика не установлен... и т.д. :-)

Речь о том, что я слабо представляю, как в линуксе может быть две разных версии libc6 к примеру. Бывает, что софт из официального репозитория начинает конфликтовать с версиями библиотек. Впрочем, скорее всего это решается, тут лично у меня просто пробел в знаниях.

[identity profile] fas-tm.livejournal.com 2009-10-21 07:26 am (UTC)(link)
Я для Unix делаю по другому поставку на комплекс заказчика.
Собираю готовую рабочую систему со всеми плюшками... тещу ее.
Потом снимаю полный дамп и заливаю его на LiveDVD.
Туда же пихаю скрипт который разворачивает дамп системы на голые веники сервака.
Впихнуть LiveCD, запустить скрипт, поправить конфиги значительно более проще чем рассказывать как собирать и отдавать на волю случая.

[identity profile] axiger.livejournal.com 2009-10-20 10:33 pm (UTC)(link)
+1 Вот буквально следующий пост в ленте - те же проблемы под виндой:
http://voidex.livejournal.com/31718.html