Memecahkan masalah paket OS

Pelajari langkah-langkah pemecahan masalah yang mungkin berguna jika Anda mengalami masalah dalam mengelola paket OS di Artifact Registry.

Untuk mengetahui informasi tentang cara menyelesaikan masalah dengan repositori jarak jauh Artifact Registry untuk paket OS, lihat Memecahkan masalah repositori jarak jauh.

Masalah autentikasi dan izin

Anda tidak dapat terhubung ke repositori untuk tindakan seperti menginstal paket. Output dari pengelola paket menyertakan error 401 atau 403, yang menunjukkan masalah terkait autentikasi atau izin.

Contoh {i>error<i} Apt:

Err:1 ar+https://us-central1-apt.pkg.dev/projects/my-project my-package Release
  Error downloading: code 401
E: Failed to fetch https://us-central1-apt.pkg.dev/projects/my-project/dists/quickstart-apt-repo/main/binary-amd64/Packages  403  Forbidden [IP: 74.125.20.82 443]
E: Some index files failed to download. They have been ignored, or old ones used instead.

Contoh error Yum:

/repodata/repomd.xml: [Errno 14] HTTPS Error 403 - Forbidden

Ada beberapa kemungkinan penyebab error ini. Pastikan VM Anda memenuhi persyaratan berikut:

  1. Pastikan VM memiliki akun layanan terkait.

    VM Compute Engine

    1. Buka halaman VM instances.
    2. Dalam daftar VM, klik nama VM Anda.

      Di tab Details, akun layanan dan cakupan akses akan muncul di bagian Pengelolaan API dan identitas.

    Secara default, VM Compute Engine menggunakan akun layanan default Compute Engine dan memiliki kumpulan cakupan akses yang terbatas. Alamat email akun layanan default menggunakan format PROJECT_NUMBER-compute@developer.gserviceaccount.com.

    Untuk mengubah akun layanan atau memasang akun layanan ke VM, baca bagian Mengubah akun layanan dan cakupan akses untuk instance.

    Pesan Suara Lainnya

    Untuk VM lain, Anda harus memiliki akun layanan untuk bertindak atas nama VM.

    1. Buat akun layanan jika Anda belum memilikinya.

    2. Berikan peran Artifact Registry Reader (roles.artifactregistry.reader) saat Anda membuat akun layanan sehingga Anda tidak perlu mengonfigurasi izin dalam langkah terpisah.

  2. Pastikan akun layanan VM memiliki izin baca ke repositori serta cakupan akses cloud-platform API.

    VM Compute Engine

    Artifact Registry secara otomatis mengambil kredensial akun layanan VM. Konfigurasi yang diperlukan bergantung pada apakah Anda menggunakan akun layanan default atau akun layanan yang dikelola pengguna.

    Akun layanan default

    Jika VM menggunakan akun layanan default, akun layanan ini memiliki peran Editor secara default, yang menyertakan izin baca ke repositori dalam project yang sama. Jika repositori berada di project yang berbeda dengan VM, berikan peran Artifact Registry Reader ke akun layanan VM.

    Selain itu, akun layanan default tidak memiliki semua cakupan akses API yang diperlukan.

    Untuk menetapkan cakupan akses cloud-platform,

    1. Hentikan instance VM, dengan mengganti INSTANCE dengan nama instance VM.

      gcloud compute instances stop INSTANCE
      
    2. Tetapkan cakupan akses:

      gcloud compute instances set-service-account INSTANCE \
          --scopes=cloud-platform
      
    3. Mulai ulang instance VM.

      gcloud compute instances start INSTANCE
      
    Akun layanan yang dikelola pengguna
    Jika VM menggunakan akun layanan yang dikelola pengguna, berikan peran Artifact Registry Reader ke akun layanan VM. Akun layanan yang dikelola pengguna memiliki cakupan akses cloud-platform.

    Pesan Suara Lainnya

    Berikan peran Artifact Registry Reader ke akun layanan VM. Secara default, akun layanan yang dikelola pengguna memiliki cakupan akses cloud-platform.

  3. Pastikan Anda telah mengikuti langkah-langkah untuk menyiapkan VM untuk mengakses repositori. Lihat petunjuk persiapan Apt atau Yum.

  4. Pastikan Anda telah mengonfigurasi Apt atau Yum dengan benar untuk mengakses repositori.

    Jika Anda terhubung ke repositori Apt dari VM Compute Engine, pastikan URL repositori menyertakan awalan ar+.

Masalah helper kredensial

Pesan error berikut muncul saat VM tidak dapat menemukan helper kredensial Apt:

E: Unable to locate package apt-transport-artifact-registry

Error ini terjadi saat Anda mencoba menginstal paket apt-transport-artifact-registry pada VM yang dibuat dari image yang tidak menyertakan kunci penandatanganan repositori Apt.

Untuk mengatasi masalah ini, lakukan langkah berikut:

  1. Instal kunci penandatanganan di VM:

    VM Debian

    Instal kunci penandatanganan repositori Apt, menggunakan perintah berikut:

    curl https://LOCATION-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add -
    

    Ganti LOCATION dengan lokasi repositori.

    VM Ubuntu

    Instal kunci penandatanganan repositori Apt, menggunakan perintah berikut:

    curl https://LOCATION-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add - && curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
    

    Ganti LOCATION dengan lokasi repositori.

  2. Coba lagi langkah-langkah persiapan VM.

Masalah plugin Authentication

Pesan error berikut muncul saat ada masalah dengan plugin autentikasi Yum atau DNF:

Plugin "artifact-registry" can't be imported

Error ini dapat terjadi karena beberapa alasan. Untuk mengatasi error ini, coba jalankan plugin secara langsung untuk mengonfirmasi dependensi, memeriksa masalah Python, atau mengungkapkan kemungkinan masalah dasar lainnya.

Untuk menjalankan plugin secara langsung, gunakan salah satu perintah berikut:

  • Untuk plugin Yum:

    python /usr/lib/yum-plugins/artifact-registry.py
    
  • Untuk plugin DNF:

    python3 /usr/lib/pythonVERSION-NUMBER/site-packages/dnf-plugins/artifact-registry.py
    

    Ganti VERSION-NUMBER dengan versi Python default untuk distribusi Linux. Misalnya, Enterprise Linux 8 menyertakan Python 3.6.

    Anda dapat mencantumkan file dalam paket plugin yang diinstal untuk memverifikasi nama direktori library Python.

    rpm -ql dnf-plugin-artifact-registry|grep artifact-registry.py
    

Artefak yang baru diupload tidak ada

Jika klien Apt atau Yum Anda tidak menemukan paket yang baru saja diupload atau diimpor ke repositori Anda, hal ini mungkin terjadi karena proses untuk membuat ulang indeks paket Apt atau Yum belum selesai.

Untuk repositori kecil, pembuatan ulang file indeks Apt atau Yum dapat memerlukan waktu beberapa detik. Untuk repositori yang lebih besar, pengindeksan ulang mungkin memerlukan waktu beberapa menit atau lebih lama.

Untuk memverifikasi bahwa paket berhasil ditambahkan ke repositori, gunakan Google Cloud CLI untuk mencantumkan file dalam paket. Jalankan perintah:

gcloud artifacts files list \
    --package=PACKAGE \
    --project=PROJECT-ID \
    --repository=REPOSITORY \
    --location=LOCATION

Misalnya, Anda dapat memeriksa apakah paket python-gflags yang bernama python3-gflags_1.5.1-5_all.deb berhasil diupload ke repositori us-central1-apt.pkg.dev\apt-project\apt-repo dengan perintah:

gcloud artifacts files list \
    --package=python-gflags \
    --project=apt-project \
    --repository=apt-repo \
    --location=us-central1

Jika paket berhasil diupload, file akan muncul di output dengan ID unik dalam nama file, mirip dengan contoh berikut:

FILE                                                                  CREATE_TIME          UPDATE_TIME          SIZE (MB)  OWNER
pool/python3-gflags_1.5.1-5_all_2414c7af6a64c99a5f488aad366d637a.deb  2023-01-12T20:39:53  2023-01-12T20:39:53  0.035      projects/apt-project/locations/us-central1/repositories/apt-repo/packages/python3-gflags/versions/1.5.1-5

Error autentikasi untuk beberapa paket yang diupload atau diimpor

Jika waktu untuk mengimpor atau mengupload file melebihi periode habis masa berlaku token autentikasi, upload setelah periode habis masa berlaku akan gagal. Masa berlaku token adalah 60 menit setelah Anda memperolehnya. Error yang mirip dengan contoh berikut muncul dalam output dari perintah impor jika token telah habis masa berlakunya.

errors:
- error:
    code: 16
    message: The request does not have valid authentication credentials.
  gcsSource:
    uris:
    - gs://my-bucket/debs/python/python3-gflags_1.5.1-5_all.deb

Untuk mengatasi masalah ini:

  1. Coba upload atau impor paket tertentu hanya untuk memastikan bahwa Anda dapat menambahkan paket satu per satu, bukan impor batch.
  2. Jika beberapa paket gagal, impor atau upload dalam batch yang lebih kecil agar operasi tidak melebihi periode habis masa berlaku token.