GitHubにおけるパッケージの削除および復元のサポート
GitHubでは、必要なアクセス権がある場合、以下を削除できます。
- プライベートパッケージ全体
- パッケージの全バージョンでダウンロード数が 5000 以下の場合、パブリック パッケージ全体
- プライベートパッケージの特定のバージョン
- パッケージ バージョンのダウンロード数が 5,000 以下の場合、パブリック パッケージの特定のバージョン
注:
- パッケージのいずれかのパージョンでダウンロード数が 5,000 を超えている場合は、パブリック パッケージを削除できません。 この場合は、GitHub サポートまでお問い合わせください。
- パブリックパッケージを削除する場合、そのパッケージに依存するプロジェクトを破壊する可能性があることに注意してください。
GitHubでは、以下の場合にパッケージ全体またはパッケージバージョンを復元できます。
- 削除後30日以内にパッケージを復元する。
- 同じパッケージ名前空間が現在も使用可能であり、新しいパッケージに使用されていない場合。
パッケージAPIのサポート
GitHub Packages では、personal access token (classic)を使用した認証のみがサポートされています。 詳しい情報については、「personal access tokenの作成」を参照してください。
REST APIを使用してパッケージを管理できます。 詳しくは、GitHub Packages API に関するページをご覧ください。
注: GitHub Actions ワークフローで REST API を使用してパッケージを削除および復元する機能は、現在パブリック ベータ版であり、変更される可能性があります。
詳細なアクセス許可がサポートされるレジストリでは、GitHub Actions ワークフローで GITHUB_TOKEN
を使用し、REST API を使ってパッケージを削除または復元できます。 トークンには、パッケージに対する admin
アクセス許可が必要です。 ワークフローによってパッケージが発行される場合は、ワークフローが格納されているリポジトリに既定で admin
ロールが付与されます。 ワークフローによって発行されていない既存のパッケージについては、GitHub Actions ワークフローを使用して REST API を使ってパッケージを削除または復元できるように、リポジトリに admin
ロールを付与する必要があります。 詳細については、「パッケージへのワークフローのアクセスの確保」を参照してください。
特定のレジストリでは、GraphQL を使ってプライベート パッケージのバージョンを削除することができます。
詳細なアクセス許可をサポートするレジストリとともに GitHub Packages GraphQL API を使うことはできません。 リポジトリがスコープされたアクセス許可のみをサポートし、GraphQL API で使用できるレジストリについては、「GitHub Packages のアクセス許可について」をご覧ください。
パッケージの削除や復元に必要な権限
詳細なアクセス許可をサポートするレジストリでは、パッケージをユーザーまたは組織にスコープ指定するか、リポジトリにリンクすることを許可できます。
https://ghcr.io/OWNER/PACKAGE-NAME
または https://npm.pkg.github.com/OWNER/PACKAGE-NAME
に保存されたパッケージに保存されているコンテナー イメージなど、リポジトリとは別の詳細なアクセス許可を持つパッケージを削除するには、パッケージへの管理者アクセス権が必要です。 詳細については、「GitHub Packages のアクセス許可について」を参照してください。
リポジトリからアクセス許可を継承するパッケージの場合、リポジトリに対する管理者アクセス許可があれば、パッケージを削除できます。
一部のレジストリは、リポジトリがスコープ指定されたパッケージのみをサポートします。 そのようなレジストリの一覧については、「GitHub Packages のアクセス許可について」をご覧ください。
パッケージのバージョンを削除する
GitHub 上のリポジトリがスコープ指定されたパッケージのバージョンを削除する
リポジトリがスコープ指定されたパッケージのバージョンを削除するには、パッケージを所有するリポジトリに対する管理者アクセス許可が必要です。 詳細については、「必要なアクセス許可」を参照してください。
- GitHub.com で、リポジトリのメイン ページへ移動します。 1. ファイルの一覧の右側にある [パッケージ] をクリックします。
3. パッケージを検索して選択してください。
- パッケージのランディング ページの右上にある [パッケージ設定] をクリックします。
- 左側の [バージョンの管理] をクリックします。
- 削除するバージョンの右側で、 をクリックした後、 [バージョンの削除] を選択します。
- 削除を確認するために、パッケージ名を入力し、 I understand the consequences, delete this version をクリックします。
GraphQL を使用してリポジトリがスコープ指定されたパッケージのバージョンを削除する
特定のレジストリでは、GraphQL を使ってプライベート パッケージのバージョンを削除することができます。
詳細なアクセス許可をサポートするレジストリとともに GitHub Packages GraphQL API を使うことはできません。 リポジトリがスコープされたアクセス許可のみをサポートし、GraphQL API で使用できるレジストリについては、「GitHub Packages のアクセス許可について」をご覧ください。 代わりに REST API を使用する方法については、「GitHub Packages API」をご覧ください。
GraphQL API の deletePackageVersion
ミューテーションを使ってください。 read:packages
、delete:packages
、repo
のスコープとともに personal access token (classic) を使う必要があります。 personal access tokens (classic) について詳しくは、「GitHub Packages について」をご覧ください。
以下の例では、MDIyOlJlZ2lzdHJ5UGFja2FnZVZlcnNpb243MTExNg
の packageVersionId
を使用して、パッケージ バージョンを削除する方法を示します。
curl -X POST \
-H "Accept: application/vnd.github.package-deletes-preview+json" \
-H "Authorization: bearer TOKEN" \
-d '{"query":"mutation { deletePackageVersion(input:{packageVersionId:\"MDIyOlJlZ2lzdHJ5UGFja2FnZVZlcnNpb243MTExNg==\"}) { success }}"}' \
HOSTNAME/graphql
GitHub Packages に公開したすべてのプライベート パッケージをバージョン ID と併せて見つけるには、repository
オブジェクトを通じて packages
コネクションを使うことができます。 read:packages
と repo
スコープを含む personal access token (classic) が必要になります。 詳細については、packages
コネクションまたは PackageOwner
インターフェイスを参照してください。
deletePackageVersion
ミューテーションの詳細については、「deletePackageVersion
」を参照してください。
GraphQLを使用してパッケージ全体を直接削除することはできませんが、パッケージのすべてのバージョンを削除すれば、パッケージはGitHub Enterprise Cloud上に表示されなくなります。
GitHub上でユーザのスコープが付いたパッケージのバージョンを削除する
ghcr.io
にある Docker イメージなどで、GitHub 上のユーザーのスコープが付いたパッケージの、特定のバージョンを削除するには、以下のステップに従ってください。 パッケージ全体を削除するには、「GitHub 上でユーザーのスコープが付いたパッケージ全体を削除する」を参照してください。
パッケージのバージョンを削除できるユーザーを確認するには、「必要なアクセス許可」を参照してください。
- GitHub で、個人アカウントのメイン ページに移動します。
- GitHub.com の右上隅にあるプロファイル写真をクリックし、 [自分のプロファイル] をクリックします。
- プロファイル ページの右上にある [パッケージ] をクリックします。
3. パッケージを検索して選択してください。
- パッケージのランディング ページの右上にある [パッケージ設定] をクリックします。
- 左側の [バージョンの管理] をクリックします。
- 削除するバージョンの右側で、 をクリックした後、 [バージョンの削除] を選択します。
- 削除を確認するために、パッケージ名を入力し、 I understand the consequences, delete this version をクリックします。
GitHub上のOrganizationスコープのパッケージのバージョンの削除
ghcr.io
にある Docker イメージなどで、GitHub 上の組織のスコープが付いたパッケージの、特定のバージョンを削除するには、以下のステップに従ってください。
パッケージ全体を削除するには、「GitHub 上で組織のスコープが付いたパッケージ全体を削除する」を参照してください。
パッケージのバージョンを削除できるユーザーを確認するには、「パッケージの削除や復元に必要な権限」を参照してください。
- GitHubで、Organizationのメインページにアクセスしてください。
- Organization 名の下で、 [パッケージ] をクリックします。
3. パッケージを検索して選択してください。
- パッケージのランディング ページの右上にある [パッケージ設定] をクリックします。
- 左側の [バージョンの管理] をクリックします。
- 削除するバージョンの右側で、 をクリックした後、 [バージョンの削除] を選択します。
- 削除を確認するために、パッケージ名を入力し、 I understand the consequences, delete this version をクリックします。
パッケージ全体を削除する
GitHub上でリポジトリのスコープが付いたパッケージ全体を削除する
リポジトリのスコープが付いたパッケージ全体を削除するには、パッケージを所有するリポジトリの管理者権限が必要です。 詳細については、「必要なアクセス許可」を参照してください。
- GitHub.com で、リポジトリのメイン ページへ移動します。 1. ファイルの一覧の右側にある [パッケージ] をクリックします。
3. パッケージを検索して選択してください。
- パッケージのランディング ページの右上にある [パッケージ設定] をクリックします。
- [危険なゾーン] の Delete this package をクリックします。
- 確認メッセージを読み、パッケージ名を入力してから、 I understand, delete this package. をクリックします。
GitHub上でユーザのスコープが付いたパッケージ全体を削除する
パッケージを削除できるユーザーを確認するには、「必要なアクセス許可」を参照してください。
- GitHub で、個人アカウントのメイン ページに移動します。
- GitHub.com の右上隅にあるプロファイル写真をクリックし、 [自分のプロファイル] をクリックします。
- プロファイル ページの右上にある [パッケージ] をクリックします。
3. パッケージを検索して選択してください。
- パッケージのランディング ページの右上にある [パッケージ設定] をクリックします。
- 左側の [オプション] をクリックします。
- [危険なゾーン] の Delete this package をクリックします。
- 削除を確認するために、パッケージ名を入力し、 I understand the consequences, delete this package をクリックします。
GitHub上でOrganizationのスコープが付いたパッケージ全体を削除する
パッケージを削除できるユーザーを確認するには、「必要なアクセス許可」を参照してください。
- GitHubで、Organizationのメインページにアクセスしてください。
- Organization 名の下で、 [パッケージ] をクリックします。
3. パッケージを検索して選択してください。
- パッケージのランディング ページの右上にある [パッケージ設定] をクリックします。
- 左側の [オプション] をクリックします。
- [危険なゾーン] の Delete this package をクリックします。
- 削除を確認するために、パッケージ名を入力し、 I understand the consequences, delete this package をクリックします。
パッケージを復元する
以下の場合、削除したパッケージまたはバージョンを復元できます。
- 削除後30日以内にパッケージを復元する。
- 同一のパッケージ名前空間がまだ使用可能であり、新しいパッケージで再使用されていない。
たとえば、リポジトリ octo-repo-owner/octo-repo
のスコープが付いていた、octo-package
という名前の Rubygem パッケージを削除した場合、パッケージ名前空間 rubygem.pkg.github.com/octo-repo-owner/octo-repo/octo-package
がまだ使用可能で、かつ 30 日が経過していない場合にのみ、そのパッケージを復元できます。
削除されたパッケージを復元するには、以下のアクセス許可の要求のいずれかを満たす必要もあります。
- リポジトリをスコープとするパッケージ: 削除されたパッケージを所有するリポジトリの管理権限を持っている。
- ユーザー アカウントのスコープが付いたパッケージ: 個人アカウントが削除したパッケージを所有している。
- 組織をスコープとするパッケージ: パッケージを所有する組織内で削除されたパッケージに対する管理権限を持っている。
詳細については、「必要なアクセス許可」を参照してください。
パッケージが復元されると、そのパッケージは以前使用していたものと同じ名前空間を使用します。 同一のパッケージ名前空間が使用可能でない場合、パッケージを復元できません。 この場合、削除したパッケージを復元するには、まず削除したパッケージの名前空間を使用する新しいパッケージを削除する必要があります。
Organization内のパッケージを復元する
削除されたパッケージは、そのパッケージが組織の所有するリポジトリ内にあったか、組織アカウントをスコープとする詳細な権限を持っていたなら、組織アカウントの設定を通じて復元できます。
組織でパッケージを復元できるユーザーを確認するには、「必要なアクセス許可」を参照してください。
- GitHub.com で、Organization のメイン ページへ移動します。 1. Organization 名の下で、 [設定] をクリックします。
- 左側の [パッケージ] をクリックします。
- Deleted Packages の、復元するパッケージの隣にある [復元] をクリックします。
- 確認のため、パッケージ名を入力し、 I understand the consequences, restore this package をクリックします。
ユーザアカウントのスコープが付いたパッケージを復元する
パッケージが所有するリポジトリにあったか、個人アカウントのスコープが付いていた場合、削除されたパッケージを個人アカウント設定から復元できます。 詳細については、「必要なアクセス許可」を参照してください。
-
任意のページで、右上隅にあるプロファイルの画像をクリックし、次に[設定]をクリックします。
-
左側の [パッケージ] をクリックします。
-
Deleted Packages の、復元するパッケージの隣にある [復元] をクリックします。
-
確認のため、パッケージ名を入力し、 I understand the consequences, restore this package をクリックします。
パッケージのバージョンを復元する
パッケージのランディングページから、パッケージのバージョンを復元できます。 パッケージを復元できるユーザーを確認するには、「必要なアクセス許可」を参照してください。
- パッケージのランディングページに移動します。
- 右側の [パッケージ設定] をクリックします。
- 左側の [バージョンの管理] をクリックします。
- 左上の [バージョン] ドロップダウン メニューで、 [削除済み] を選択します。
- 復元する削除済みパッケージのバージョンの横にある [復元] をクリックします。
- 確認のために、 I understand the consequences, restore this version をクリックします。