跳转到主要内容

一个简单、轻量级的Python包索引(也称为Cheeseshop)克隆。

项目描述

概述

EggBasket 是一个提供类似Python包索引(也称为Cheeseshop)服务的Web应用程序。它允许您维护自己的本地Python包仓库,以满足您的安装需求。

它使用TurboGears Web框架、GenshiSQLAlchemy 实现。

功能

  • 可以作为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选项进行更改。

使用distutilseasy_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_urleggbasket.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 的文档。

项目详情


下载文件

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

源分布

EggBasket-0.6.1b.zip (256.4 kB 查看哈希值)

上传时间

EggBasket-0.6.1b.tar.bz2 (126.3 kB 查看哈希值)

上传时间

构建分布

EggBasket-0.6.1b-py2.5.egg (154.3 kB 查看哈希值)

上传时间

支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误记录StatusPageStatusPage状态页面