Определение среды выполнения - PullRequest
2 голосов
/ 15 сентября 2009

Мне нужно определить среду выполнения для моей разработки. Первая идея, конечно, не изобретать велосипед. Я скачал macports, использовал easy_install, попробовал fink. У меня всегда были проблемы. Сейчас, например, я не могу скомпилировать scipy, потому что установщик MacPorts хочет загрузить и установить gcc43, но это не компилируется на Snow Leopard. Ошибка открыта для этой проблемы, но я в основном привязан к ним, чтобы моя среда выполнения была пригодной для использования.

Техника, которую я изучил некоторое время назад, заключалась в написании make-файла для загрузки и сборки исполняемых файлов / библиотек с четко определенными версиями библиотек и утилит. Это предшествует подходу MacPorts / fink / apt, но у вас гораздо больше контроля над ним, хотя вы должны делать все вручную. Конечно, это может стать кошмаром само по себе, если время выполнения увеличивается, но если вы обнаружите проблему, вы можете использовать patch и исправить проблему в загруженном пакете, а затем собрать его.

У меня есть несколько вопросов:

  • Какова ваша техника для подготовки четко определенной коллекции среды выполнения / библиотеки для вашей разработки?
  • Позволяет ли MacPorts / fink / что-либо такое же гибкое, как перепроверка, если что-то пойдет не так?
  • Учитывая мое решение для make-файла, когда мое программное обеспечение наконец-то будет доступно для загрузки, что вы посоветуете для решения потенциальных проблем между моей средой разработки и реальной платформой на компьютерах моего пользователя?

Редактировать : В частности, я не понимаю, что другие проекты не дают мне подсказок. Например, я только что скачал scipy, сложную библиотеку с множеством зависимостей. Разработчики должны иметь все настройки deps, прежде чем работать над этим. Несмотря на это, в SVN нет ничего, что создает эту среду.

Редактировать : Добавлена ​​награда за вопрос. Я думаю, что это важный вопрос, и он заслуживает того, чтобы получить больше ответов. Я буду рассматривать лучшие ответы с примерами из реальной жизни с особым вниманием к любым возникшим проблемам и их решению.

Дополнительные вопросы, чтобы вдохновить на Баунти:

  • Проводите ли вы тестирование в своей среде (чтобы проверить правильность установки, например, на компьютере интеграции)?
  • Как вы включаете свое окружение во время доставки? Если это C, вы статически связываете его или поставляете динамическую библиотеку, переделывая LD_LIBRARY_PATH перед запуском исполняемого файла? Как насчет той же проблемы для Python, Perl и других?
  • Вы придерживаетесь среды выполнения или обновляете ее с течением времени? Вы загружаете "магистральные" пакеты своих библиотек зависимостей или исправленную версию?
  • Как вы справляетесь с такими ситуациями, как: для библиотеки foo требуется python 2.5, но вы должны разрабатывать в python 2.4, поскольку библиотека не работает с python 2.5?

Ответы [ 2 ]

1 голос
/ 18 сентября 2009

virtualenv это хорошо, но он не может творить чудеса - например, если вы хотите использовать библиотеку, в которой просто ДОЛЖНЫ быть Python 2.4 и , то есть другую, которая абсолютно НЕОБХОДИМА 2.5, вам не повезло. Кроме того, virtualenv (или любой другой инструмент) не может помочь, когда есть совершенно новая версия ОС, а половина инструментов и c просто не поддерживают ее, как вы упомянули для Snow Leopard: некоторые проблемы просто невозможно решить (две библиотеки абсолютно противоречивые потребности в одной сборке), другим просто нужно терпение (пока все необходимые инструменты не будут перенесены в новую версию ОС, вам просто нужно придерживаться предыдущей версии ОС).

1 голос
/ 16 сентября 2009

Мы используем сценарий CMake, который генерирует Make-файлы, которые загружают (в основном через SVN) / конфигурируют / собирают все наши зависимости. Почему CMake? Multiplatform. Это работает довольно хорошо, и мы поддерживаем вызов scons / autopain / cmake. Поскольку мы работаем на нескольких платформах (Windows, MacOSX, несколько вариантов Linux), мы также поддерживаем различные флаги компиляции и т. Д. В зависимости от операционной системы. Обычно библиотека имеет конфигурацию по умолчанию, и если мы сталкиваемся с системой, которая требует специальной конфигурации, конфигурация заменяется специализированной конфигурацией. Это работает довольно хорошо. На самом деле мы не нашли готового решения, которое бы соответствовало нашей цели.

Как говорится, это PITA, чтобы запустить и запустить его - нужно повернуть множество ручек, когда вам нужно поддерживать несколько операционных систем. Я не думаю, что это станет кошмаром обслуживания, поскольку зависимости довольно исправлены (библиотеки регулярно обновляются, но мы редко вводим новые).

...