Разработка под Линукс. Просто?
Вот ощутил, так сказать, на собственной шкуре чо такое разработка под Линукс.
Простая задача: собрать чужой проект, чтобы можно было отладить мою дотнет-часть, с ним взаимодействующую.
Проект состоит из аддона к 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
P.S. Личный опыт :)
no subject
no subject
Претензии к методологии разработки и вменяемому инженерному мышлению.
Я лично порвал бы в клочья поставщика если рядом с серваком нашел бумажку типа:
- Выточить правую направляющую рельсу из железнодорожной шпалы
- Отверстие с недостающим индикатором залепить жвачкой
- При работе сервера обмахивать веерами так как для установки охлаждения у нас нет лицензии.
- etc.
(no subject)
(no subject)
Как сделать такое под линуксом?
Re: Как сделать такое под линуксом?
(no subject)
no subject
http://voidex.livejournal.com/31718.html
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
Каждый раз это заканчивалось тем, что после очередного emerge --update --deep world иксы влились мистическим образом переставали работать.
Gentoo Ten LiveDVD 10 у меня даже под VBox`ом последним нее смог нормально загрузится - KDE какую-то ересь выписывает и падает. За то с музыкой.
(no subject)
(no subject)