【问题标题】:What to do if a Composer-loaded dependency repo doesn't exist anymore?如果 Composer 加载的依赖 repo 不再存在怎么办?
【发布时间】:2014-02-16 02:57:30
【问题描述】:
目前几乎整个基于 packagist.org 的依赖加载都依赖于基于 GitHub 的存储库。但是 GitHub 用户有可能删除公共仓库,这就引出了一个问题:
如果必要的 Composer 加载依赖项不再存在(或被破坏等删除)怎么办?是否有档案可以提供长期服务?
Afaik packagist.org 尚未托管任何数据,GitHub 也不保留已删除或重命名的存储库的公共副本。
【问题讨论】:
标签:
php
git
github
composer-php
packagist
【解决方案1】:
虽然如果您使用流行的第三方组件不太可能发生这种情况,但您的开发/生产空间中会有一个副本,因此如果它出现故障,您可以创建一个新的存储库并上传该库的副本。
如果第三方组件不是很流行并且您担心它的连续性,您可以分叉它以防万一
【解决方案2】:
这就是 Satis 发挥作用的地方。使用 Satis,您可以从“packagist.org”创建所需包的本地副本,还可以为在线找到的所有版本创建本地下载的 ZIP 版本。
这带来了托管在本地网络中的额外好处,因此访问它时速度要快得多,并且当您的在线连接中断或 Github 遇到问题或其他任何情况时,您都可以使用本地副本。
这些本地创建的版本是您自己备份和处理的,如果您从它们安装一些东西,该位置将保留在 composer.lock 文件中(它注册任何 ZIP 下载的 URL,这不是Github API URL,但您的本地 HTTP 服务器托管 Satis 文件)。
使用 Satis,您可以进一步确保在本地环境中需要时可以访问您使用的每个软件。维护所需的所有软件包列表、不时运行 Satis 更新、拥有托管所有内容的本地 HTTP 服务器以及在您创建的每个 composer.json 文件中添加您的 Satis 存储库需要一点成本。请注意,如果他们无权访问您的 Satis 托管文件,最后一步将无法使用您的软件 - 这是一个封闭的用户组解决方案。