pypi源镜像工具:bandersnatch

Python部落组织翻译,禁止转载,欢迎转发

用途

bandersnatch能够制作完整的pypi源镜像.


安装

下面的说明会把bandersnatch可执行文件放在放在一个virtualenv虚拟环境下面,虚拟环境中的相对路径为bandersnatch/bin/bandersnatch.

注意

bandersnatch需要Python2.7或者2.6

pip安装

下面这几条命令安装最新的稳定发布版

snatch01.png

zc.buildout安装

下面命令安装当前的开发版,使用"hg up <version>"命令,然后重新运行buildout命令来选择一个指定版本.

snatch02.png


配置

运行bandersnatch mirror -- 它会在/etc/bandersnatch.conf下为你创建一个空的配置文件.

按照你的需求修改/etc/bandersnatch.conf

重新运行命令bandersnatch mirror.它会为你构建一个镜像,同步当前pypi里面所有的软件包,大概300G(2016-10),这可能花费几天时间.

定期运行命令bandersnatch mirrror进行增量更新.


Web服务器

配置你的Web服务器,把一个路径映射到镜像的web/子目录下.对于nginx,配置大概是这样

snatch03.png

注意,将nginx返回的页面编码设置为utf-8是一个好主意.即便你不设置,index页面也能显示,只不过人眼看的话会有一些乱码.

如果你的路径中有unicode字符,让web服务器以utf-8编码去查询路径.nginx默认就是这样的,但是不确定别的服务器是否如此.


定时任务

你需要设置一个定时任务,来让镜像自动同步.如果你制作的是一个公共使用的源,你还需要另一个定时任务来把访问信息同步回主pypi.

下面是一个配置文件/etc/cron.d/bandersnatch的样例

snatch04.png

这里假设你已经安装了logger, 它能把命令的输出转化成系统日志记录.


维护

除了同步的软件包以外,bandersnatch在本地存储的状态数据并不多.通常情况下,同步出错你就再运行一次bandersnatch,它就会自动修复上次运行的错误.

如果你删除了状态文件,那下下次运行的时候bandersnatch就要重新从pypi同步每个软件包的状态

snatch05.png

全量同步比较耗时,花费时间多少取决于pypi主服务器的性能,网络延时和带宽.


英文原文:http://python.freelycode.com/contribution/detail/516

译者:诗书塞外


 

2月15日11:00到13:00网站停机维护,13:00前恢复
iPy智能助手 双击展开
查看更多聊天记录
(Ctrl+回车)换行