跳转到主要内容

蛋索引代理

项目描述

collective.eggproxy软件包

什么是collective.eggproxy ?

collective.eggproxy是PyPI的一个智能镜像。

它仅在类似easy_install或zc.buildout的程序请求时收集PyPI上的软件包。换句话说,与一些像rsync一样行为的镜像不同,collective.eggproxy只会获取你需要的内容。

首次运行collective.eggproxy时,它会下载pypi索引并构建一个链接页面。当软件请求特定软件包、版本等时,collective.eggproxy如果需要,则会下载它并存储在本地。

如何使用collective.eggproxy ?

安装后,你可以像这样将其作为一个独立服务器启动

$ mkdir /tmp/eggs
$ eggproxy_run

代理将在本地的8888端口上可用。默认情况下,所有软件包都将下载到/var/www。如果此目录不存在(或者在Windows上),你需要配置它,具体方法将在下一节中解释。

从那里,你可以像这样在easy_install中使用它

easy_install -i https://127.0.0.1:8888/ -H "*localhost*" iw.fss

iw.fss软件包将被下载、存储在本地并提供给easy_install。

在zc.buildout中,只需在buildout部分定义索引值

[buildout]

index = https://127.0.0.1:8888/
allow-hosts = *localhost*

就是这样!

高级配置

collective.eggproxy可以使用如下配置文件

[eggproxy]
eggs_directory = /path/to/our/cache
index = http://pypi.python.org/simple

# Update information for files older than 24h
update_interval = 24
# Port number where proxy will run
port = 8888
# always_refresh is off by default. Setting it to 1 forces eggproxy to
# always attempt a pypi connection. Slower but fresher.
always_refresh = 0
# timeout is only needed for always_refresh: it sets a socket timeout.
timeout = 3

除了eggs_directory以外的所有选项都是可选的。

collective.eggproxy在三个位置查找

  • 在你的主目录中的eggproxy.conf。在Windows上,这也很有用,因为/etc/不存在。

  • 从二进制文件看到的../etc/eggproxy.conf,你可以用它来设置buildout(请参阅下面的buildout文档)。

  • /etc/eggproxy.conf.

使用Paste运行代理

你需要一个paste配置文件

$ paster make-config collective.eggproxy myconfig.ini

请随意编辑默认配置。此配置将覆盖eggproxy.conf文件。

然后使用paster来运行应用程序

$ paster serve configfile.ini

并测试它

$ easy_install -i https://127.0.0.1:8888/ -H "*localhost*" iw.fss

在buildout中安装collective.eggproxy

通过在buildout中安装它来快速设置collective.eggproxy。优点是所有内容都包含在一个目录中。你可以使用以下buildout配置作为示例

[buildout]
parts = console_scripts configuration

[console_scripts]
recipe = zc.recipe.egg
eggs = collective.eggproxy

[configuration]
recipe = collective.recipe.template
input = etc/eggproxy.conf.in
output = etc/eggproxy.conf

这将把eggproxy_run和eggproxy_update脚本放入bin/目录。在buildout内部添加一个名为etc/的子目录,并包含一个eggproxy.conf.in文件

[eggproxy]
eggs_directory = ${buildout:directory}/var/cache
#update_interval = 24
#index = http://pypi.python.org/simple
#port = 8888

collective.recipe.template将将其转换为etc/eggproxy.conf,并带有正确的设置

在Apache后面使用代理

你还可以使用collective.eggproxy与Apache一起使用。你需要为Apache使用mod_python 3.3。它不会与之前的版本一起工作。

Debian Etch用户:Etch提供3.2,因此Etch的用户必须从“Lenny”(测试)中获取源包,并使用dpkg-buildpackage重新构建。请参阅本文件中的相关部分以获取一些帮助。

http://servername/pypi的Apache设置可以是

Alias /pypi "/path/to/pypi"
<Directory "/path/to/pypi">
    Order allow,deny
    Allow from all
    SetHandler mod_python
    PythonFixupHandler collective.eggproxy.apache_handler::fixup_handler
    PythonInterpreter main_interpreter
    PythonOption URLPrefix /pypi
    PythonPath "sys.path+['/path/to/collective.eggproxy']"
</Directory>

Apache必须能够写入“/path/to/pypi”!(通常Apache用户是www-data)。为了更新代理的egg信息,你必须将脚本eggproxy_update添加到该用户的crontab中。

Debian Etch上的mod_python更新

从debian "lenny"源快速构建说明

$ sudo apt-get build-dep libapache2-mod-python
$ sudo apt-get install fakeroot

访问http://packages.debian.org/sources/lenny/libapache2-mod-python并获取以下扩展名的文件

  • .dsc

  • .orig.tar.gz

  • .diff.gz

$ wget http://ftp.de.debian.org/debian/pool/main/liba/libapache2-mod-python/libapache2-mod-python_3.3.1-3.dsc
$ wget http://ftp.de.debian.org/debian/pool/main/liba/libapache2-mod-python/libapache2-mod-python_3.3.1.orig.tar.gz
$ wget http://ftp.de.debian.org/debian/pool/main/liba/libapache2-mod-python/libapache2-mod-python_3.3.1-3.diff.gz
$ tar xpvzf libapache2-mod-python_3.3.1.orig.tar.gz
$ cd mod_python-3.3.1/
$ gzip -dc ../libapache2-mod-python_3.3.1-3.diff.gz |patch -p1
$ chmod +x debian/rules
$ dpkg-buildpackage -rfakeroot -b
$ cd ..

你应该有以下文件

  • libapache2-mod-python_3.3.1-3_i386.deb

  • libapache2-mod-python-doc_3.3.1-3_all.deb

最后一步是调用dpkg

$ sudo dpkg -i libapache2-mod-python_3.3.1-3_i386.deb

开发

SVN仓库是Plone集体: https://svn.plone.org/svn/collective/collective.eggproxy/trunk

变更日志

0.5.1 (2009-10-19)

  • 已将SVN URL添加到README中。[reinout]

0.5 (2009-10-19)

  • 发布修复(导致“0.4dev-r1234”发布的setup.cfg)。没有功能更改。

0.4 (2009-10-19)

  • 修复与Python 2.6的兼容性问题。新Python版本不允许使用config.add_section('DEFAULT')(见: http://bugs.python.org/issue1781 和 ConfigParser文档)。由Stéphane Klein提供的补丁。

  • 更新维护者电子邮件地址。[reinout]

0.3.1 (2009-04-28)

  • 修复尽管设置了ALWAYS_REFRESH,但索引页面未更新的问题。原因:未重新处理的已下载的URL。[reinout]

0.3 (2009-03-16)

  • 更新了buildout更改和always_refresh更改的文档。[reinout]

  • 尝试将../etc/eggproxy.conf作为配置位置,以帮助buildout设置。[reinout]

  • 添加always_refresh(和超时)选项,以确保始终尝试实际的PyPI连接,以确保其新鲜性。[reinout]

  • 添加端口选项到配置。[reinout]

  • 不将包名转换为小写

  • 改进WSGI应用

  • 添加测试

0.2.0 (2008-09-22)

  • 作为collective.eggproxy的初始版本。该软件包以前称为iw.eggproxy (https://ingeniweb.svn.sourceforge.net/svnroot/ingeniweb/iw.eggproxy)

  • 包索引/下载文件:跳过在本地系统中安装的模块(导致复制目录而不是下载文件)

  • 修复更新脚本因无效/过时的包名而崩溃的问题

  • 覆盖PackageIndex,以便我们获取所有版本、所有平台上的egg发行版

  • 修复生成的索引中的损坏标签

0.1.0 (2008-06-06)

  • 由IngeniSkel创建的初始版本

贡献者

作者:Bertrand Mathieu(在Ingeniweb时)[b_mathieu]

当前维护者:Reinout van ReesThe Health Agency

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源代码分发

collective.eggproxy-0.5.1.tar.gz (21.5 kB 查看哈希值

上传时间: 源代码

由以下机构支持