Мне нужно определить среду выполнения для моей разработки. Первая идея, конечно, не изобретать велосипед. Я скачал 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?