Pelajari langkah-langkah pemecahan masalah yang mungkin berguna jika Anda mengalami masalah saat mengelola paket OS di Artifact Registry.
Untuk 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 dengan autentikasi atau izin.
Contoh error 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 sejumlah kemungkinan penyebab error ini. Pastikan VM Anda memenuhi persyaratan berikut:
Pastikan VM memiliki akun layanan terkait.
VM Compute Engine
- Buka halaman VM instances.
Dalam daftar VM, klik nama VM Anda.
Di tab Details, akun layanan dan cakupan akses akan muncul di bagian API and identity management.
Secara default, VM Compute Engine menggunakan akun layanan default Compute Engine dan memiliki kumpulan cakupan akses yang terbatas. Alamat email akun layanan default berformat
PROJECT_NUMBER-compute@developer.gserviceaccount.com
.Untuk mengubah akun layanan atau melampirkan akun layanan ke VM, lihat Mengubah akun layanan dan cakupan akses untuk instance.
VM lainnya
Untuk VM lain, Anda harus memiliki akun layanan untuk bertindak atas nama VM.
Buat akun layanan jika Anda belum memilikinya.
Berikan peran Pembaca Artifact Registry (
roles.artifactregistry.reader
) saat Anda membuat akun layanan sehingga Anda tidak perlu mengonfigurasi izin dalam langkah terpisah.
Pastikan akun layanan VM memiliki izin baca ke repositori serta cakupan akses
cloud-platform
API.VM Compute Engine
Artifact Registry 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 mencakup izin baca ke repositori dalam project yang sama. Jika repositori berada dalam project yang berbeda dengan VM, berikan peran Pembaca Artifact Registry ke akun layanan VM.
Selain itu, akun layanan default tidak memiliki semua cakupan akses API yang diperlukan.
Untuk menetapkan cakupan akses
cloud-platform
,Hentikan instance VM, ganti
INSTANCE
dengan nama instance VM.gcloud compute instances stop INSTANCE
Tetapkan cakupan akses:
gcloud compute instances set-service-account INSTANCE \ --scopes=cloud-platform
Mulai ulang instance VM.
gcloud compute instances start INSTANCE
- Akun layanan yang dikelola pengguna
- Jika VM menggunakan akun layanan yang dikelola pengguna, berikan peran Reader Artifact Registry ke akun layanan VM.
Akun layanan yang dikelola pengguna memiliki cakupan akses
cloud-platform
.
VM lainnya
Berikan peran Artifact Registry Reader ke akun layanan VM. Secara default, akun layanan yang dikelola pengguna memiliki cakupan akses
cloud-platform
.Pastikan Anda telah mengikuti langkah-langkah untuk menyiapkan VM agar dapat mengakses repositori. Lihat petunjuk persiapan Apt atau Yum.
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
di VM yang dibuat dari image yang tidak menyertakan kunci penandatanganan repositori
Apt.
Untuk menyelesaikan masalah ini, lakukan tindakan berikut:
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.Coba lagi langkah-langkah persiapan VM.
Masalah plugin autentikasi
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, coba jalankan plugin secara langsung untuk mengonfirmasi dependensi, memeriksa masalah Python, atau mengungkapkan kemungkinan masalah mendasar 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 tidak menemukan paket yang baru saja diupload atau diimpor ke repositori, hal ini mungkin 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
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 dalam 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 masa berlaku token autentikasi, upload setelah periode masa berlaku akan gagal. Masa berlaku token berakhir 60 menit setelah Anda mendapatkannya. Error yang mirip dengan contoh berikut akan muncul dalam output dari perintah impor jika masa berlaku token telah berakhir.
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:
- Coba upload atau impor paket tertentu hanya untuk memverifikasi bahwa Anda dapat menambahkan paket satu per satu, bukan dalam impor batch.
- Jika beberapa paket gagal, impor atau upload dalam batch yang lebih kecil sehingga operasi tidak melebihi periode habis masa berlaku token.