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:
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 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.
Buat akun layanan jika Anda belum memilikinya.
Berikan peran Artifact Registry Reader (
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 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
,Hentikan instance VM, dengan mengganti
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
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
.Pastikan Anda telah mengikuti langkah-langkah untuk menyiapkan VM untuk 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
pada VM yang dibuat dari image yang tidak menyertakan kunci
penandatanganan repositori Apt.
Untuk mengatasi masalah ini, lakukan langkah 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 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:
- Coba upload atau impor paket tertentu hanya untuk memastikan bahwa Anda dapat menambahkan paket satu per satu, bukan impor batch.
- Jika beberapa paket gagal, impor atau upload dalam batch yang lebih kecil agar operasi tidak melebihi periode habis masa berlaku token.