Artifactory 作曲家 packages.json 404

Artifactory composer packages.json 404

我正在使用 artifactory,对 npm 解决方案没有任何问题。但是,我已经使用“设置我”说明设置了作曲家,即安装了 ~/.composer/config.json~/.composer/auth.json 文件。现在,当我尝试执行作曲家安装时出现以下错误:

$ dcomp install
Loading composer repositories with package information


[Composer\Downloader\TransportException]
The "https://myartifactory.jfrog.io/artifactory/api/composer/php-local/packages.json" file could not be downloaded (HTTP/1.1 404 Not Found)


install [--prefer-source] [--prefer-dist] ...

我在 auth.json 中配置的用户是管理员用户,我已经将一个包推送到 Artifactory 中。此外,我注意到 url 包含复数 packages.json 而不是单数 package.json,所以我假设这是人工制品配置本身的问题,而不是我上传的包。

为了让 Artifactory 成功索引作曲家包,您还需要确保每个包都指定了版本。

有 3 种方法可以实现:

  1. 在包composer.json文件中包含版本属性
  2. 在包本身上设置 composer.version 属性。
  3. 通过 UI.
  4. 部署时使用版本字段

您可以通过单击刚刚上传的存档在 UI 中轻松测试它,然后转到属性选项卡并添加 属性 例如:

composer.version 例如 1.0.0.

当您第一次在 Artifactory 中创建 PHP composer 存储库时,它还没有存储库索引(package.json 文件)。只有在您部署第一个包后才会创建索引。
Artifactory 可能无法读取您部署的包的包元数据。在这种情况下,假设这是存储库中唯一的包,则不会计算索引。
为了验证情况是否如此:

  1. 浏览 Artifactory 中的 php-local 存储库 UI
  2. 检查是否存在 .composer/packages.json 文件(相对于存储库根目录)。如果不存在,则表明 Artifactory 无法计算存储库索引
  3. Select你部署的包,切换到 Composer Info 选项卡
  4. 检查您是否可以看到正确的包版本。如果您看到“未找到版本”- 获取版本时出现问题(可能是因为它未包含在 composer.json 文件中)
  5. 在 artifactory 日志文件中查找类似于以下内容的错误:

Failed to persist package metadata for 'php-local/my-package.zip'. Unable to read the package version from the extracted composer.json file

如果是这种情况,您可以通过以下方式解决问题:

  1. 将名为 composer.version 的 属性 添加到您的 composer 包中,并将其值设置为正确的包版本。您可以通过从 UI 中选择包文件,切换到“属性”选项卡并添加新的 属性
  2. 如果此操作正确,您应该能够在 Composer 信息选项卡中看到正确的版本,并且正在生成 packages.json 文件

如果所有这些都没有帮助并且仍然没有生成 packages.json 文件,则可能是另一个错误阻止了 Artifactory 生成它。

通过以下方式尝试 re-generating 存储库索引:

  1. 转到 Artifactory 中存储库的根目录 UI
  2. 右键单击存储库的根目录并选择“重新计算索引”
  3. 索引应该在后台生成
  4. 如果仍未生成索引,请在人工日志文件中搜索任何相关的错误消息

最后,可以尝试的另一种选择是部署不同的作曲家包并查看其行为是否相同。

正如一些评论者所观察到的,我遇到的问题是:未生成索引。

对我来说,解决方法是使用 .zip 压缩文件而不是 .tar.gz 来上传作曲家包。我无法告诉您为什么压缩包不起作用,尤其是考虑到 Artifactory 的文档明确提到 tar.gz,但看起来 .zip 是可行的方法。