Debian パッケージを管理する

このページでは、Apt リポジトリ内の Debian パッケージの追加、表示、削除について説明します。

始める前に

  1. ターゲット Apt リポジトリが存在しない場合は、新しいリポジトリを作成します。
  2. リポジトリにアクセスするように VM を構成します。
  3. (省略可)gcloud コマンドのデフォルトを構成します。
  4. メタデータ内のパッケージ名が Debian パッケージ名の標準を満たしているようにしてください。

パッケージの追加

リポジトリ モード: 標準

パッケージを追加するリポジトリに対する読み取りと書き込み権限が必要です。

Google Cloud CLI を使用してパッケージをリポジトリにアップロードすることも、Cloud Storage に保存されているパッケージをインポートすることもできます。Cloud Build を使用してパッケージをビルドする場合、このビルドは Cloud Storage にパッケージを保存してインポートできます。

非常に長いインポートまたはアップロードのオペレーションの場合は、gcloud CLI が API の呼び出しに使用するトークンの有効期限が切れる場合があります。追加するパッケージが非常に多い場合は、小さいバッチ単位で追加し、各アップロードまたはインポート オペレーションをより短時間で完了することを検討してください。 詳細については、OS パッケージのトラブルシューティングのドキュメントをご覧ください。

直接アップロード

gcloud artifacts apt upload コマンドを使用して、パッケージを Apt リポジトリにアップロードするには:

gcloud artifacts apt upload REPOSITORY \
    --location=LOCATION \
    --source=PACKAGES

次の値を置き換えます。

  • REPOSITORY は Artifact Registry のリポジトリ名です。
  • LOCATION は、リポジトリのリージョンまたはマルチリージョンのロケーションです。
  • PACKAGES はパッケージのパスです。

たとえば、パッケージ my-package.deb をロケーション us-central1 の Apt リポジトリ my-repo にアップロードするには、次を実行します。

gcloud artifacts apt upload my-repo \
    --location=us-central1 \
    --source=my-package.deb

Cloud Storage

  1. 次のいずれかの方法でパッケージを Cloud Storage にアップロードします。

    • パッケージを Cloud Storage バケットに直接アップロードする
    • Cloud Build でパッケージをビルドし、バケットに保存する
  2. 次のコマンドを実行します。

    gcloud artifacts apt import REPOSITORY \
        --location=LOCATION \
         --gcs-source=PACKAGES
    

    次の値を置き換えます。

    • REPOSITORY は Artifact Registry のリポジトリ名です。
    • LOCATION は、リポジトリのリージョンまたはマルチリージョンのロケーションです。
    • PACKAGES は、Cloud Storage 内のパッケージのカンマ区切りのリストです。ディレクトリからすべてのパッケージをアップロードするには、ディレクトリ ワイルドカード(*)を使用するか、再帰ディレクトリ ワイルドカード(**)を使用してすべてのサブディレクトリですべてのパッケージをアップロードします。

    たとえば、パッケージ package.rpmdirectory ディレクトリ内のすべてのパッケージを、バケット my-bucket からロケーション us-central1 の Apt リポジトリ my-repo にアップロードするには、次のコマンドを実行します。

    gcloud artifacts apt import my-repo \
       --location=us-central1 \
       --gcs-source=gs://my-bucket/path/to/package.deb,gs://my-bucket/directory*
    

アップロードまたはインポートのオペレーションが完了したら、Google Cloud コンソールまたは gcloud CLI を使用して、リポジトリ内のパッケージを表示して、それらが正常にアップロードされたことを確認できます。

多数のパッケージを含む大規模なリポジトリの場合、パッケージ インデックスが再生成され、新しいパッケージが Apt クライアントに表示されるまでに数分かかることがあります。

パッケージの表示

リポジトリ モード: 標準、リモート(プレビュー)

パッケージを表示するには、Artifact Registry 読み取りロールの権限が必要です。Artifact Registry はパッケージ内のファイルを一覧表示しません。

Google Cloud コンソールまたは gcloud を使用してパッケージとパッケージのバージョンを表示するには:

コンソール

  1. Google Cloud Console で [リポジトリ] ページを開きます。

    [リポジトリ] ページを開く

  2. リポジトリ リストで、適切なリポジトリをクリックします。

    [パッケージ] ページに、リポジトリ内のパッケージが一覧表示されます。

  3. パッケージをクリックして、そのパッケージのバージョンを表示します。

gcloud

リポジトリ内のパッケージを一覧表示するには、次のコマンドを実行します。

gcloud artifacts packages list [--repository=REPOSITORY] [--location=LOCATION]

場所

  • REPOSITORY はリポジトリの名前です。 デフォルト リポジトリを構成した場合は、このフラグを省略してデフォルトを使用できます。
  • LOCATION は、 リージョンまたはマルチリージョンの ロケーションです。 このフラグを使用して、特定のロケーションのリポジトリを表示します。デフォルト ロケーションを構成している場合は、このフラグを省略してデフォルトを使用できます。

パッケージのバージョンを表示するには、次のコマンドを実行します。

gcloud artifacts versions list --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION]

場所

  • PACKAGE は、パッケージの ID またはパッケージの完全修飾識別子です。
  • REPOSITORY はリポジトリの名前です。 デフォルト リポジトリを構成した場合は、このフラグを省略してデフォルトを使用できます。
  • LOCATION は、 リージョンまたはマルチリージョンの ロケーションです。 このフラグを使用して、特定のロケーションのリポジトリを表示します。デフォルト ロケーションを構成している場合は、このフラグを省略してデフォルトを使用できます。

パッケージのインストール

リポジトリ モード: 標準、リモート(プレビュー)

パッケージをインストールする前に、パッケージ管理システムとリポジトリが正しく構成されていることを確認してください。

リポジトリにパッケージをインストールするには:

  1. 使用可能なパッケージのリストを更新するには:

    sudo apt update
    
  2. Apt で構成されたリポジトリの名前を指定して、パッケージをインストールします。

    sudo apt install PACKAGE/REPOSITORY
    

    次の値を置き換えます。

    • PACKAGE はパッケージ名です。
    • REPOSITORY は Artifact Registry リポジトリの名前です。リモート リポジトリの場合は、標準のアップストリーム リポジトリの名前を使用します。

    たとえば、リポジトリ my-repo からパッケージ my-package をインストールするには、次のコマンドを実行します。

    sudo apt install my-package -t my-repo
    

パッケージの削除

リポジトリ モード: 標準

パッケージまたはパッケージのバージョンを削除する前に、そのパッケージの重要な依存関係を送信済み、または対処済みであることを確認してください。

パッケージを削除するには:

コンソール

  1. Google Cloud Console で [リポジトリ] ページを開きます。

    [リポジトリ] ページを開く

  2. リポジトリ リストで、適切なリポジトリをクリックします。

    [パッケージ] ページに、リポジトリ内のパッケージが一覧表示されます。

  3. 削除するパッケージを選択します。

  4. [削除] をクリックします。

  5. 確認のダイアログ ボックスで、[削除] をクリックします。

gcloud

次のコマンドを実行します。

gcloud artifacts packages delete PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] [--async]

場所

  • PACKAGE は、リポジトリ内のイメージの名前です。
  • REPOSITORY はリポジトリの名前です。デフォルト リポジトリを構成した場合は、このフラグを省略してデフォルトを使用できます。
  • LOCATION は、 リージョンまたはマルチリージョンの ロケーションです。 このフラグを使用して、特定のロケーションのリポジトリを表示します。デフォルト ロケーションを構成している場合は、このフラグを省略してデフォルトを使用できます。
  • --async - 処理中のオペレーションの完了を待たずに、直ちにコマンドを終了します。

パッケージのバージョンを削除するには:

コンソール

  1. Google Cloud Console で [リポジトリ] ページを開きます。

    [リポジトリ] ページを開く

  2. リポジトリ リストで、適切なリポジトリをクリックします。

    [パッケージ] ページに、リポジトリ内のパッケージが一覧表示されます。

  3. パッケージをクリックして、そのパッケージのバージョンを表示します。

  4. 削除するバージョンを指定します。

  5. [削除] をクリックします。

  6. 確認のダイアログ ボックスで、[削除] をクリックします。

gcloud

次のコマンドを実行します。

gcloud artifacts versions delete VERSION \
    --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] \
    [--async]

場所

  • PACKAGE は、リポジトリ内のイメージの名前です。
  • REPOSITORY はリポジトリの名前です。デフォルト リポジトリを構成した場合は、このフラグを省略してデフォルトを使用できます。
  • LOCATION は、 リージョンまたはマルチリージョンの ロケーションです。 このフラグを使用して、特定のロケーションのリポジトリを表示します。デフォルト ロケーションを構成している場合は、このフラグを省略してデフォルトを使用できます。
  • --async は処理中のオペレーションの完了を待たずに、直ちにコマンドを終了します。

大規模なリポジトリの場合、Apt パッケージ インデックスが再生成されて削除が反映されるまでに数分かかることがあります。

次のステップ