Я перечитал по этому вопросу, и я думаю, что это - большой запуск, но я ищу больше понимания.
Я записал приложение с помощью Python 2.6 и Django 1.2.1. Я хотел бы развернуть это приложение в системе, которой не установили Python 2.6 или Django. Сама система не имеет многих вещей установленными - sqlite3, pysqlite2, gcc, и т.д. Система действительно имеет Python 2.4.3, как бы то ни было.
Каков был бы самый нормальный способ создать RPMs Python 2.6, Django и моего приложения самого (стандарт приложение Django) так, чтобы каждый мог быть установлен отдельно для обеспечения обновлений различных компонентов?
Я не знаю много о создании источника RPMs, но я подозреваю, что это - легко доступная информация. Если бы существуют какие-либо особенно хорошие ресурсы для создания источника RPMs, я ценил бы их также.
Системой является Обновление ESX 4 1, если это имеет значение.
Спасибо!
ОБНОВЛЕНИЕ: мне также никогда не приходило в голову, что распределительные яйца Python или даже использующий setup.py являются эффективным решением распространения контента. Я интересовался бы слушанием об этом также.
Пакеты Python обычно распространяются с помощью setuptools / distribute . Обычно вы можете установить каждый пакет Python (и его зависимости) с помощью easy_install <имя_пакета>
(необязательно с определенным номером версии). Я бы порекомендовал вам использовать setuptools в качестве нашего основного метода распространения, потому что:
Хороший ресурс для чтения: Развертывание с распространением . Он ориентирован на Flask (еще один веб-фреймворк), но простая замена «Flask» на «Django» поможет:)
Другой инструмент Python, который отлично подходит для распространения и развертывания вещей, - это fabric , который вы можете использовать в дополнение к распространению (или без него, как хотите).С помощью Fabric вы можете, например, загрузить и установить свое приложение (включая зависимости) одновременно на N серверов, управлять несколькими серверами разработки, тестирования и производства и обновлять их все одновременно с помощью одной команды.
Эта статья может помочь вам начать работу с Fabric: Развертывание с помощью Fabric
И, кроме того, я бы также рекомендовал вам опубликовать свой репозиторий (или создать зеркало существующего) на github или bitbucket для людей, которые хотят получить последние исходные коды вручную и после этого установить приложение с помощью python setup.py install
. Сценарий установки setup.py является частью дистрибутива, о котором я упоминал ранее.
Уже есть RPM для python 2.6 и django доступны - так что их, по крайней мере, (относительно) легко получить и установить через RPM. Для создания RPM для вашего проекта есть описание некоторых деталей с использованием Distutils , в котором подробно рассказывается о том, что вам нужно в файле спецификации и что вы вызываете, чтобы это произошло.
Также есть примечание о создании RPM из python в StackOverflow по адресу Создание Python RPM , в котором также есть несколько деталей.
По опыту, упаковка самого python как RPM - самая сложная задача, поэтому я определенно рекомендую воспользоваться тем, что уже есть. Для нескольких программ, в которых я видел это, у нас есть Makefile (да, старая школа), запускающий команду setup.py bdist_rpm на сервере непрерывной интеграции, делая RPM доступным в результате этой сборки и немедленно доступным на сервере CI-сервер.
Помимо всех обычных проблем, возникающих при упаковке кода Python, проекты Django имеют несколько других проблем, которые необходимо решать:
Мне пришлось решать эти проблемы для упаковки Transifex, и я рекомендую вам изучить различные биты, которые были установлены, чтобы заставить его работать:
/usr/share/
execfile()
для загрузки настроек из /etc/