Как запустить ваш собственный PYPI сервер
2008-03-22 00:00Из практики известно, что реальная польза от разнообразных репозиториев ПО появляется тогда, когда появляется возможность создавать не только централизованные, но и локальные репозитории, расчитанные на использование ограниченным кругом лиц. С точки зрения редакции (хи-хи) это имеет, в основном, психологический аспект: разработчикам психологически тяжело перейти к тому, что бы сделать доступными свои (кривые) коды всему миру. Хотя, конечно, чисто прагматические цели также имеют место. В любом случае, возможность создать личный репозиторий всегда становится важной точкой в его развитии.
Мы публикуем перевод статьи, рассказывающей о том, как уже сейчас можно создать свой собственный аналог PYPI, известного также как "cheeseshop".
Как запустить ваш собственный, приватный PyPI сервер
PloneSofwareCenter 1.5 в настоящее время интенсивно разрабатывается и его релиз еще не выпущен, но существующий код работает уже достаточно хорошо для использования его в качестве сервера, сходного с PyPI. Это может быть полезно для компаний, разрабатывающих програмное обеспечение на python и нуждающихся во внутреннем, централизованном хранилище egg-пакетов. Мы (Ingeniweb) используем этот подход что бы работать над заказными проектами. Предлагаемое руководство объясняет как установить сервер PloneSoftwareCenter, если вы хотите иметь возможность легко адаптироваться к тому, что будет следующей версией работающей plone.org через несколько месяцев (но, разумеется, вы используете этот код на свой собственный риск).
Зачем нужен приватный PYPI?
Пусть у вас есть несколько пакетов на python и вы хотите работать с ними также, как на Cheeseshop. Другими словами, работать с ними используя easy_install, zc.buildout и т.п.
Но эти пакеты - являются внутренними разработками вашей компании и по каким-то причинам не могут быть опубликованы для свободного доступа.
Простейший путь - сохранить egg-пакеты в папке какого-либо сетевого хранилища, но distutils и setuptools предлагают множество удобных команд, позволяющих автоматически собирать и заливать пакеты на PyPI или любой сервер, предоставляющий API PyPI.
Как? PloneSoftwareCenter!
Сообщество Plone предоставило замечательный инструмент для управление egg-пакетами. Этот инструмент PyPI-совместим, иными словами, с ним можно взаимодействовать как с cheeseshop используя программы, запускаемые из командной строки.
Как пример, вы можете посмотреть раздел продуктов на plone.org, который работает на основе PSC.
Шаги установки
Благодаря zc.buildout, PloneSoftwareCenter (PSC) прост в установке. Тем не менее, пока нет бинарного дистрибутива, несколько составляющих придется компилировать самостоятельно.
Шаг 1: предварительные требования
Счастливые пользователи Windows могут скачать этот архив: http://release.ingeniweb.com/third-party-dist/python , распаковывать его и запустить "install.bat", который установит python 2.4 вместе с набором дополнительных программ и установит переменную среды PATH.
Пользователям linux, следует убедиться, что установлен gcc, make и subversion. Затем нужно установить easy_install и PIL, примерно такими командами:
$ wget http://peak.telecommunity.com/dist/ez_setup.py $ python ez_setup.py $ easy_install http://release.ingeniweb.com/third-party-dist/PILwoTk-1.1.6.4.tar.gz
(от редакции: есть интересная статья про использование easy_install)
Шаг 2: установка PSC
Создайте директорию в вашей системе, назвав ее softwarecenter;
Войдите в нее и скачайте коды PSC командой SVN:
$ svn co http://svn.plone.org/svn/collective/Products.PloneSoftwareCenter/buildout/trunk .
Запустите buildout следующими командами, это займет некоторое время на скачивание всех элементов PSC:
$ python bootstrap.py $ bin/buildout
Запустите сервер:
$ bin/instance start
Шаг 3: настройка PSC
Теперь создадим вебсайт на основе Plone, использующий PloneSoftwareCenter.
- Откройте браузер и перейдите на страницу http://localhost80/manage . Логин и пароль, обычно, admin/admin;
- В левой части страницы находится выкидное меню, выберете в нем пункт “Plone Site”, затем нажмите кнопку "add";
- В появившейся форме наберите в поле id строку "plone" и нажмите кнопку "enter";
- Перейдите на страницу http://localhost80/plone/prefs_install_products_form;
- Отметте “PloneSoftwareCenter” на левой стороне страницы и нажмите кнопку “Install”;
- Перейдите на страницу http://localhost80/plone ;
- В меню "Add new...", нажмите на "software center”;
- В появившейся форме, в поле Title, введите "Catalog";
- Выберете "Use Classifiers to display Categories (with Topic :: )" в пункте **Classifiers*;
- Нажмите кнопку "Save".
Ваш Software Center настроен и доступен как http://localhost80/plone/catalog .
Шаг 4: настройка на стороне клиента
Теперь посмотрим как сделать настройки на стороне клиента, что бы использовать только что созданный Software Center:
Установите iw.dist:
$ easy_install iw.dist
Создайте файл .pypirc в вашей домашней директории со следующим содержимым:
[distutils] index-servers = pypi local [pypi] username:YOUR_PYPI_LOGIN password:YOUR_PYPI_PASSWORD [local] repository:http://localhost80/plone/catalog/ username:admin password:admin
Конечно, если вы находитесь на другой машине, то вместо localhost нужно использовать имя, по которому машина, содержащая PSC, зарегистрирована в DNS;
Пакет iw.dist добавит две новых команды в distutils: mregister и mupload. Эти команды улучшают регистрацию и загрузку пакетов, так, что бы distutils работала с несколькими серверами. Пакет должен вскоре войти в Python 2.6.
Шаг 5: давайте использовать это!
Теперь, в distutils доступны две новые команды, mregister и mupload, которые дают возможность использовать либо ваш PSC либо PYPI.
Чтобы загрузить egg-пакет в PSC, нужно использовать команду:
$ python setup.py mregister sdist bdist_egg mupload -r local
Чтобы загрузить egg-пакет в PyPI:
$ python setup.py mregister sdist bdist_egg mupload -r pypi
Если ключ -r пропущен, то будет использован PyPI.
Если нужно указать использование PSC в zc.buildout или easy_install, можно указать http://localhost80/plone/catalog/simple как ссылку для поиска или значение индекса:
[buildout] find-links = http://localhost80/plone/catalog/simple
или:
$ easy_install -f http://localhost80/plone/catalog/simple my.egg
От редакции
Оригинал статьи: http://tarekziade.wordpress.com/2008/03/20/how-to-run-your-own-private-pypi-cheeseshop-server/ , там же есть некоторое обсуждение, общая суть которого сводится к обсуждению некоторого альтернативного ПО: haufe.eggserver, который уже весь из себя под zope3.4 (насколько я понял), что является несомненным плюсом. Статью про установку haufe.eggserver попробуем написать позднее :).