如何通过 curl 从 GitLab 项目的通用包注册表中删除文件?
How do I delete a file from a GitLab project's generic package registry via curl?
The documented way 通过 curl
从 GitLab 项目的包注册表中删除文件似乎对我不起作用。
文档说
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/packages/:package_id/package_files/:package_file_id"
所以例如如果我想从 ID 为 12345678 的项目包注册表中名为“my-package”的通用包的 1.0.0 版中删除名为“myfile.ext”的文件,我认为这意味着命令应该是
curl --request DELETE --header "PRIVATE-TOKEN: <my_access_token>" "https://gitlab.example.com/api/v4/projects/12345678/packages/my-package/package_files/myfile.ext"
但对我来说这会产生
{"error":"package_id is invalid, package_file_id is invalid"}
我也尝试了该命令的几个近似变体,none 其中有效。具体来说,我对删除的URL和上传的URL之间的差异感到惊讶,即:
- 上传的URL不包含
package_files/
- 用于上传的 URL 确实在文件 ID 之前包含包版本,例如
1.0.0/
- 上传的 URL 确实包含
generic/
以表明包是通用的,就在包 id 之前
所以我尝试了这三件事的所有 8 种组合 including/excluding,但除了最初的组合之外,所有 7 种组合都产生了
{"error":"404 Not Found"}
我可以通过 curl
上传文件,并且可以通过 GitLab web UI 删除它。如何通过 curl
或更一般地从命令行删除它?
这表示对文档中 package_id
和 package_file_id
的含义存在误解。这些分别不是包名和文件名。相反,包和文件每个都有一个自动分配的数字字符串 ID,就像项目一样——尽管令人困惑的是,项目的 ID 显示在网络上 UI 而包和文件的 ID 却没有t.
您可以通过Packages API找到包和文件的id。也可以分别根据包和文件的网址来猜,在web UI.
使用正确的 ID,curl
删除命令会像记录的那样工作。
The documented way 通过 curl
从 GitLab 项目的包注册表中删除文件似乎对我不起作用。
文档说
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/packages/:package_id/package_files/:package_file_id"
所以例如如果我想从 ID 为 12345678 的项目包注册表中名为“my-package”的通用包的 1.0.0 版中删除名为“myfile.ext”的文件,我认为这意味着命令应该是
curl --request DELETE --header "PRIVATE-TOKEN: <my_access_token>" "https://gitlab.example.com/api/v4/projects/12345678/packages/my-package/package_files/myfile.ext"
但对我来说这会产生
{"error":"package_id is invalid, package_file_id is invalid"}
我也尝试了该命令的几个近似变体,none 其中有效。具体来说,我对删除的URL和上传的URL之间的差异感到惊讶,即:
- 上传的URL不包含
package_files/
- 用于上传的 URL 确实在文件 ID 之前包含包版本,例如
1.0.0/
- 上传的 URL 确实包含
generic/
以表明包是通用的,就在包 id 之前
所以我尝试了这三件事的所有 8 种组合 including/excluding,但除了最初的组合之外,所有 7 种组合都产生了
{"error":"404 Not Found"}
我可以通过 curl
上传文件,并且可以通过 GitLab web UI 删除它。如何通过 curl
或更一般地从命令行删除它?
这表示对文档中 package_id
和 package_file_id
的含义存在误解。这些分别不是包名和文件名。相反,包和文件每个都有一个自动分配的数字字符串 ID,就像项目一样——尽管令人困惑的是,项目的 ID 显示在网络上 UI 而包和文件的 ID 却没有t.
您可以通过Packages API找到包和文件的id。也可以分别根据包和文件的网址来猜,在web UI.
使用正确的 ID,curl
删除命令会像记录的那样工作。