一个简单、轻量级的Python包索引(也称为Cheeseshop)克隆。
项目描述
概述
EggBasket 是一个提供类似Python包索引(也称为Cheeseshop)服务的Web应用程序。它允许您维护自己的本地Python包仓库,以满足您的安装需求。
它使用TurboGears Web框架、Genshi 和 SQLAlchemy 实现。
功能
可以作为setuptools/easy_install的包索引和仓库使用。
支持distutils的upload协议。
具有简单的基于角色的权限系统,可以授予/拒绝用户组对服务器功能(例如包上传)的访问权限。
仅需要SQLite作为数据库系统(包含在Python 2.5中)。
能够读取和显示以下分发包格式的元数据(源和二进制)
.egg、.tar、.tar.bz2、.tar.gz、.tgz、.zip
其他任何文件格式都可以配置为在软件包的发行文件下列出(默认情况下,这包括上述列出的文件类型以及.exe、.rpm和.tar.Z文件)。
可以在包含软件包目录的目录内,仅通过初始化数据库并启动服务器即可运行,无需任何配置(请参阅“使用方法”)。
待办事项
测试阶段中
添加对MD5校验和的支持。
添加更多上传处理中的错误和完整性检查。
为主软件包列表添加分页功能。
1.0版本发布后
缓存软件包列表和元数据。
改进基于DBmechanic的管理界面,用于添加用户和组以及设置配置值(默认情况下已禁用)。
添加对GPG签名的支持。
致谢
本应用程序是对haufe.eggserver Grok应用程序的重新实现(几乎没有任何共享代码),并做了一些改进。
安装
要从Cheeseshop安装EggBasket,请使用easy_install。
[sudo] easy_install EggBasket
这需要安装setuptools软件包。如果您还没有这样做,请下载ez_setup.py脚本并运行它以安装setuptools。
如果您想获取EggBasket的最新开发代码,可以从Subversion仓库检出。
$ svn co svn://chrisarndt.de/projects/EggBasket/trunk EggBasket
使用方法
EggBasket服务器
您的所有软件包都应该位于一个共同的根目录下,每个软件包都有一个与发行版本相同的子目录。子目录应包含所有可用版本的软件包的egg文件和源存档。软件包目录将在使用上传命令时由应用程序创建(请参阅以下内容)。
打开终端,切换到包含软件包的目录,如果您尚未这样做,请使用以下命令初始化数据库:
eggbasket-server --init [<config file>]
使用以下命令启动应用程序服务器:
eggbasket-server [<config file>]
您还可以使用eggbasket.package_root设置在配置中设置软件包根目录的位置,并在任何您想要的地点启动服务器。
如果命令行中没有指定配置文件,则将使用egg中包含的默认配置文件。默认配置文件也可以在源分布中找到,并根据您的环境进行修改。
服务器需要在其启动目录中具有写入权限,或者您需要更改配置中的数据库和访问日志路径,以便服务器可以写入它们。当然,如果服务器没有权限创建任何缺少的软件包目录或写入现有目录,则软件包上传也无法工作。
要停止服务器,只需在终端中按Control-C或终止进程。
您可以通过在Web浏览器中打开URL http://localhost:3442/ 来查看软件包索引。默认端口号3442可以通过设置配置文件中的server.socket_port选项进行更改。
使用distutils和easy_install与EggBasket一起使用
您可以通过指定服务器的URL并使用-i选项来指示easy_install从您的软件包存储库搜索和下载软件包。例如:
easy_install -i http://localhost:3442/ PACKAGE_NAME
此外,可能需要使用-H选项限制从哪些主机下载到您的EggBasket服务器。例如:
easy_install -H localhost:3442 -i http::/localhost:3442/ PACKAGE_NAME
您还可以在配置中将 eggbasket.rewrite_download_url 或 eggbasket.rewrite_homepage_url 设置为 True,这样 EggBasket 将会替换每个软件包在软件包元数据视图中的下载 URL 或主页 URL,替换为 EggBasket 服务器上软件包分发文件列表的 URL。
您可以使用 distutils 的 upload 命令将软件包上传到您的仓库,例如
python setup.py bdist_egg upload -r http://localhost:3442/upload
此命令将在服务器上请求您的用户名和密码。您可以将这些信息以及仓库 URL 存储在您的 .pypirc 文件中。有关更多信息,请参阅 distutils 文档。
当然,您也可以手动在文件系统中将软件包分发文件复制到您的仓库,或者使用 scp 等工具上传到适当的位置。应用程序将自动找到并列出新文件,无需像原始 PyPI 那样“注册”。
权限
EggBasket 使用简单的基于角色的权限系统来授权/限制对服务器功能的访问。以下是定义的权限及其含义列表
viewpkgs - 用户可以查看所有软件包的列表
viewfiles - 用户可以查看软件包的分发文件列表。
viewinfo - 用户可以查看软件包分发文件的元数据。
download - 用户可以下载软件包的分发文件。
upload - 用户可以上传软件包的分发文件。
overwrite - 用户可以覆盖现有的软件包分发文件。
delete - 用户可以通过网络界面删除软件包分发文件。
您可以通过向 eggbasket-server 命令添加 --init 选项来让 EggBasket 在数据库中创建初始管理员用户、组和权限
eggbasket-server --init [<config file>]
这将创建以下数据库对象和关系
上述列出的权限。
以下组(括号中包含权限)
匿名(viewpkgs, viewfiles, viewinfo, download)
认证(viewpkgs, viewfiles, viewinfo, download)
维护者(upload, overwrite, delete)
管理员
用户名为“admin”,属于“维护者”和“管理员”组的用户。
“匿名”和“认证”是特殊组,所有匿名(即未登录)或所有认证(已登录)用户都会自动属于这些组。
默认权限设置下,通过服务器上传受到限制,只有拥有“上传”权限的组的成员才能上传。配置页面只能由“管理员”组的成员访问。其他所有内容对所有用户(无论是否认证)都开放。
请注意,如果您想给所有用户(无论是否登录)赋予一定权限,您需要将此权限赋予“匿名”和“认证”组。标准权限设置已经为所有权限(除了“上传”)执行了这一操作。
有关背景信息,请参阅 TurboGears 关于 Identity 的文档。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。