Разработка под Линукс. Просто?
Вот ощутил, так сказать, на собственной шкуре чо такое разработка под Линукс.
Простая задача: собрать чужой проект, чтобы можно было отладить мою дотнет-часть, с ним взаимодействующую.
Проект состоит из аддона к 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 не используйте этот файл, в нем жабы черви и змеи"
В общем, уже как бэ и поздно, и мозг уже не соображает - потом буду разбираться дальше, или же напишу авторам, чтобы сами собирали свой шрот и не компостировали мозг.
В итоге мы имеем несколько часов потраченных на билд только одного мелкого куска системы.
И пример к чему приводит любимая методика "слепить из <говнаповторно использовать наработки сообщества".
Кстати, прототип этой хрени, без питонов, на чистом С, собрался и условно "заработал". Но судя по исходному коду, авторам надо безжалостно отрывать жопу (полное отсутствие обработки ошибок). То что это прототип - не оправдание, нормальный программист физически не может писать код, не обрабатывающий все мыслимые и немыслимые ошибки.
Простая задача: собрать чужой проект, чтобы можно было отладить мою дотнет-часть, с ним взаимодействующую.
Проект состоит из аддона к 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 не используйте этот файл, в нем жабы черви и змеи"
В общем, уже как бэ и поздно, и мозг уже не соображает - потом буду разбираться дальше, или же напишу авторам, чтобы сами собирали свой шрот и не компостировали мозг.
В итоге мы имеем несколько часов потраченных на билд только одного мелкого куска системы.
И пример к чему приводит любимая методика "
Кстати, прототип этой хрени, без питонов, на чистом С, собрался и условно "заработал". Но судя по исходному коду, авторам надо безжалостно отрывать жопу (полное отсутствие обработки ошибок). То что это прототип - не оправдание, нормальный программист физически не может писать код, не обрабатывающий все мыслимые и немыслимые ошибки.
no subject
(no subject)
no subject
Но Linux сам по себе ни при чем. К стенке ставить надо разработчиков которые ваяют это говнецо. Linux можно упрекнуть только в том что он поощряет и допускает такие действия жопоруких разработчиков.
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
Как сделать такое под линуксом?
Re: Как сделать такое под линуксом?
(no subject)
(no subject)
no subject
Подписался на комменты. Щас придут и скажут, что "это все нормально" или "вам надо было билдить под генту", что-нибудь в таком духе :)
(no subject)
(no subject)
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
запакетированные модули -- это скорее для удовлетворения зависимостей прочих пакетов, а не для разработки.
(no subject)
(no subject)
no subject
(no subject)
(no subject)
(no subject)
(no subject)
no subject
(no subject)
Re: Reply to your comment...
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
Re: Reply to your comment...
Ой, ребе, и не гойворите!
Тока что запустил некий супер-пупер софт для медицины. Наши тестят.
Он ащета на жабе писяный, но оторвать девелоперам хочется много что:
- зачем-то покоцали сам jboss, и ставить нужно только с их "редакцией"
- генерят ключи для LDAP так, что без ручного ввода пароля ldap (SERVCE !!!!) не стартует, т.е. всякие heartbeat и прочие HA фенечки ушли лесом
- процесс установки такой же - "танцы по красиво разложенным граблям"
Но поскольку оно у них под вендой такое же, я таки думаю, что лялих тут непричем - просто выросло новое поколение программистов. Бля...
no subject
у меня считанные программы на питоне работали сразу без пинков. то оно не с тем питоном запустится (в системе уже давно default 2.5, а оно ожидает 2.4, а в шебанге прописано просто /usr/bin/python), то запустится, но не заимпортирует модуль (да, пути все есть!), то упадёт где-то на середине
а всё от того, что народ прототипирует на питоне, а потом как к прототипу к своей программе и относится. не отлавливают баги должным образом, не обрабатывают исключения и тэдэ.
no subject
Про то, что все это якобы "поощряется архитектурой ОС" -- исключительно домыслы.
Если нужно иметь кучки заведомого говна в изолированном окружении, не ломающие систему, то нужно их и разрабатывать так, чтобы все складывалось в /opt/govnosoft, и все библиотеки смотрело и брало исключительно оттуда. Если говно сложено правильно и в полном наборе, то Linux даже позволит запустить его в chroot jail, чтоб уж точно ничего не поломалось.
Тут вся проблема в том, что разработчики предпочли пойти путем, которым ходить откровенно не умеют. И убедили заказчика в собственной компетенции.
Архитектура не виновата.
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
(no subject)
(no subject)
(no subject)