SSD Nodes Learn 🎉 VPS mulai $5.50/bln
Panduan Matt ConnorOleh Matt Connor · Diperbarui 2026-08-13

Memperbaiki Sumber apt Duplikat dan File deb822

Atasi error apt update "configured multiple times" di Ubuntu 24.04+: temukan pasangan file .list dan .sources, simpan satu deklarasi, lalu jalankan apt update dengan bersih.

Arti error sumber apt duplikat

Sumber apt duplikat berarti satu repositori dideklarasikan dua kali dalam dua file berbeda, dan APT (advanced package tool) menemukan kedua salinan tersebut. Pada Ubuntu 24.04 dan versi lebih baru, hal ini hampir selalu terjadi karena skrip instalasi pihak ketiga menulis file satu baris lama .list, sementara file deb822 .sources untuk repositori yang sama sudah ada di disk. Tidak ada yang rusak dan tidak ada paket yang berisiko. Hapus salah satu dari dua deklarasi tersebut agar pesan ini hilang.

Berikut baris yang sering ditempel orang ke kotak pencarian:

W: Target Packages (stable/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list.d/docker.list:1 and /etc/apt/sources.list.d/docker.sources:1

Baca dari bagian akhir. Dua file, masing-masing dengan nomor baris, mendeklarasikan hal yang sama. Target Packages adalah indeks yang diunduh apt untuk mengetahui paket yang ditawarkan repositori, sedangkan stable/binary-amd64/Packages menyebutkan komponen (stable) dan arsitektur (amd64) yang dicakup indeks tersebut. Jadi, apt memberi tahu Anda bahwa indeks amd64 untuk komponen stable dikonfigurasi dalam docker.list pada baris 1, dan kembali dikonfigurasi dalam docker.sources pada baris 1.

Pada apt 3.0 dan versi lebih baru, yaitu Ubuntu 25.04 dan versi setelahnya serta Debian 13, pesan yang sama dimulai dengan Warning:, bukan W:. Teks setelah awalan tersebut sama.

Peringatan ini adalah kasus ringan. apt menggabungkan kedua deklarasi tersebut dan proses pembaruan tetap berjalan karena keduanya menjelaskan arsip yang sama dengan kunci yang sama. Kasus yang lebih serius menghentikan seluruh proses:

E: Conflicting values set for option Signed-By regarding source https://download.docker.com/linux/ubuntu/ noble: /usr/share/keyrings/docker-archive-keyring.gpg != /etc/apt/keyrings/docker.asc
E: The list of sources could not be read.

apt menolak konfigurasi ini karena kedua deklarasi menyebutkan kunci penandatanganan yang berbeda untuk satu arsip. apt akan menggabungkan dua deklarasi yang identik, tetapi tidak akan memilih antara dua nilai Signed-By, karena memilih nilai yang salah berarti memeriksa tanda tangan paket dengan kunci yang tidak pernah digunakan pemilik arsip untuk menandatangani paket tersebut. Karena itu, apt tidak membaca sumber apa pun. apt update dan apt install sama-sama gagal dengan dua baris tersebut sampai Anda mengedit file secara manual.

Cara duplikat tersebut terbentuk

Kedua format berada dalam file terpisah dengan ekstensi yang berbeda, sehingga tidak ada yang mencegah keduanya berada di disk secara bersamaan. apt baru mendeteksi tumpang tindih tersebut ketika memperluas setiap file sumber menjadi daftar target indeks yang akan diunduh. Sampai saat itu, docker.list dan docker.sources adalah dua file yang tidak saling terkait.

Empat kejadian umum dapat menghasilkan pasangan tersebut:

  • Skrip instalasi vendor, atau perintah yang disalin dari artikel lama, menulis /etc/apt/sources.list.d/vendor.list dengan baris tee.
  • Paket milik vendor kemudian menyediakan /etc/apt/sources.list.d/vendor.sources dan menginstalnya untuk Anda.
  • add-apt-repository pada Ubuntu 24.04 dan versi yang lebih baru menulis file deb822 .sources, sehingga PPA (personal package archive) yang sebelumnya Anda tambahkan secara manual sebagai .list muncul kembali sebagai .sources.
  • Pembaruan rilis menulis ulang sumber milik distribusi ke format deb822 dan membiarkan file .list yang Anda tulis secara manual tetap berada di sebelahnya.

Setiap jalur tersebut wajar jika berdiri sendiri. Duplikat muncul ketika dua jalur terjadi pada server yang sama, sering kali dengan jeda beberapa bulan.

Dua format, berdampingan

Format lama menggunakan satu baris untuk setiap repositori, dan setiap bagiannya ditentukan berdasarkan posisi.

deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu noble stable

Urutannya bersifat tetap: jenisnya (deb untuk paket biner, deb-src untuk paket sumber), lalu opsi dalam tanda kurung siku, kemudian URI (uniform resource identifier) arsip, suite, dan satu atau beberapa komponen. Karena maknanya ditentukan oleh posisi, spasi yang salah dapat mengubah cara apt membaca baris tersebut.

deb822 menyatakan informasi yang sama sebagai stanza dengan field bernama. Nama ini berasal dari RFC 822, yaitu gaya header email yang sudah digunakan Debian untuk file kontrol paket.

Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: noble
Components: stable
Architectures: amd64
Signed-By: /etc/apt/keyrings/docker.asc

Repositori sama, kunci sama, tanpa tambahan apa pun. Pemetaan berlangsung langsung: deb menjadi Types, alamat arsip menjadi URIs, suite menjadi Suites, komponen menjadi Components, dan setiap opsi dalam tanda kurung siku menjadi field tersendiri. Dengan demikian, signed-by= menjadi Signed-By: dan arch= menjadi Architectures:.

Nama setiap field berbentuk jamak karena setiap field menerima daftar yang dipisahkan spasi. Suites: noble noble-updates noble-backports dalam satu stanza menggantikan tiga baris deb terpisah. Baris kosong mengakhiri sebuah stanza, sehingga satu file .sources dapat memuat beberapa repositori. deb822 juga mendukung pengaturan yang kurang praktis ditangani oleh format satu baris: Enabled: no untuk menonaktifkan repositori, Trusted, Check-Valid-Until, dan kunci inline yang ditempelkan langsung ke Signed-By. Setiap baris kunci harus diindentasi satu spasi, sedangkan baris kosong ditulis sebagai satu titik.

Lokasi setiap file

  • /etc/apt/sources.list: file tunggal asli. Pada Ubuntu 24.04 dan versi yang lebih baru, file ini biasanya kosong atau hanya berisi komentar yang menunjuk ke lokasi baru.
  • /etc/apt/sources.list.d/*.list: entri satu baris, biasanya satu file untuk setiap repositori.
  • /etc/apt/sources.list.d/*.sources: stanza deb822. Ubuntu 24.04 dan versi yang lebih baru menyimpan repositori bawaan distribusi di sini, dalam ubuntu.sources.
  • /etc/apt/keyrings/: lokasi untuk menyimpan key yang Anda tambahkan. /usr/share/keyrings/ menyimpan key yang berasal dari suatu package.

apt hanya membaca file yang diakhiri dengan .list atau .sources. Nama file dapat berisi huruf, digit, garis bawah, tanda hubung, dan titik. File dengan ekstensi lain akan dilewati dan apt menampilkan pemberitahuan. Hal ini penting untuk perbaikan di bawah.

Menemukan pasangan duplikat

Mulai dengan menampilkan isi direktori:

ls -l /etc/apt/sources.list.d/
-rw-r--r-- 1 root root  195 Aug  3 09:12 docker.list
-rw-r--r-- 1 root root  254 Aug  9 14:40 docker.sources
-rw-r--r-- 1 root root 2683 Jun 11 08:02 ubuntu.sources

Dua file dengan nama dasar yang sama dan ekstensi berbeda merupakan pasangan yang umum, tetapi jangan mempercayai namanya. Baca isinya, karena duplikat dapat tersembunyi dalam file dengan nama apa pun:

grep -rn -E '^(deb |deb-src |Types:|URIs:|Suites:|Signed-By:)' /etc/apt/sources.list /etc/apt/sources.list.d/
/etc/apt/sources.list.d/docker.list:1:deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu noble stable
/etc/apt/sources.list.d/docker.sources:1:Types: deb
/etc/apt/sources.list.d/docker.sources:2:URIs: https://download.docker.com/linux/ubuntu
/etc/apt/sources.list.d/docker.sources:3:Suites: noble
/etc/apt/sources.list.d/docker.sources:6:Signed-By: /etc/apt/keyrings/docker.asc

Pasangan tersebut adalah dua entri dengan host dan suite yang sama. Keduanya mengarah ke https://download.docker.com/linux/ubuntu dan suite noble, sehingga merupakan repositori yang ditulis dua kali. Path Signed-By keduanya juga berbeda. Perbedaan inilah yang menghasilkan error Conflicting values yang ditampilkan sebelumnya.

Gunakan grep, bukan perintah apt, untuk langkah ini. Saat apt sudah berhenti karena konflik, apt juga tidak dapat menampilkan daftar source Anda. Akibatnya, apt-cache policy mencetak error yang sama, bukan jawaban yang Anda perlukan.

Perbaiki: pertahankan file deb822, hapus file legacy

Pertahankan file .sources. Itulah format yang kini ditulis oleh apt tooling, dan Debian serta Ubuntu sedang beralih ke format tersebut. Sebelum menghapus apa pun, periksa path utama mana yang ada di disk:

ls -l /etc/apt/keyrings/ /usr/share/keyrings/ | grep -i docker
-rw-r--r-- 1 root root 4813 Aug  9 14:40 docker.asc

Hanya /etc/apt/keyrings/docker.asc yang ada. Jadi, file deb822 berisi informasi yang benar, sedangkan file .list merujuk ke key yang sudah dihapus. Jika file yang akan dipertahankan ternyata mencantumkan key yang hilang, salin path yang berfungsi ke dalam file tersebut terlebih dahulu, lalu hapus file lainnya.

Pindahkan file legacy keluar dari direktori, bukan langsung menghapusnya:

sudo mkdir -p /root/apt-sources-backup
sudo mv /etc/apt/sources.list.d/docker.list /root/apt-sources-backup/
sudo apt update

Mengubah namanya menjadi docker.list.bak dan membiarkannya di tempat juga dapat dilakukan karena apt mengabaikan ekstensi yang tidak dikenal. Namun, setiap kali apt dijalankan, pesan berikut akan ditampilkan:

N: Ignoring file 'docker.list.bak' in directory '/etc/apt/sources.list.d/' as it has an invalid filename extension

Memindahkan file ke lokasi lain menghilangkan pesan tersebut dari layar dan tetap menyimpan cadangannya. Setelah itu, apt update yang sehat akan terlihat seperti ini, tanpa baris yang mencantumkan dua file:

Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Get:2 https://download.docker.com/linux/ubuntu noble InRelease [48.8 kB]
Get:3 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB]
Fetched 175 kB in 1s (146 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.

Sekarang, pastikan repository tetap berfungsi setelah perubahan:

apt-cache policy | grep download.docker.com
 500 https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
     origin download.docker.com

Jika dokumentasi vendor masih mengasumsikan penggunaan file satu baris, Anda dapat mempertahankan file tersebut dan menghapus file .sources. Aturannya tetap sama: tepat satu file boleh mendeklarasikan archive dan suite tertentu.

Mengapa satu sumber pihak ketiga yang rusak membuat apt update gagal

Kegagalan di sebelahnya terlihat berbeda, tetapi memiliki akar masalah yang sama: sumber pihak ketiga yang tidak dapat digunakan oleh apt. Versi pertama disebabkan oleh key yang hilang:

Err:5 https://download.docker.com/linux/ubuntu noble InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8
E: The repository 'https://download.docker.com/linux/ubuntu noble InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.

Field Signed-By tidak ada, atau mengarah ke file yang bukan key yang dapat digunakan. Akibatnya, apt tidak dapat memverifikasi tanda tangan pada file InRelease arsip. apt kemudian membuang seluruh repositori tersebut, alih-alih mempercayai daftar paket yang tidak dapat diverifikasi. Periksa file key itu sendiri:

ls -l /etc/apt/keyrings/docker.asc
gpg --show-keys /etc/apt/keyrings/docker.asc

Key yang berfungsi menampilkan baris pub dengan ID key dan baris uid yang mencantumkan nama vendor. gpg: no valid OpenPGP data found. berarti file tersebut sama sekali bukan key. Biasanya, ini berarti proses download menyimpan halaman error karena URL key telah berpindah. Ambil kembali key tersebut, periksa filenya, lalu jalankan apt update.

Versi kedua muncul setelah upgrade rilis:

Err:6 https://ppa.launchpadcontent.net/ondrej/php/ubuntu plucky InRelease
  404  Not Found [IP: 10.0.0.80 443]
E: The repository 'https://ppa.launchpadcontent.net/ondrej/php/ubuntu plucky Release' does not have a Release file.

PPA tersebut tidak menerbitkan apa pun untuk suite itu. Akibatnya, path tersebut tidak ada di server dan permintaan mengembalikan 404. Repositori lain tetap diperbarui, dan paket yang sudah terpasang tidak berubah. Namun, proses tersebut berakhir dengan status non-zero. Karena itu, setiap script yang memeriksa exit status apt update akan selalu melaporkan kegagalan saat dijalankan. Inilah alasan sumber yang sudah tidak aktif perlu dihapus pada server yang dikonfigurasi dengan upgrade keamanan otomatis: pesan berulang setiap hari dapat menyembunyikan kegagalan yang sebenarnya.

Nonaktifkan satu sumber tanpa mengganggu sumber lainnya

Untuk file deb822, tambahkan satu field ke stanza, lalu simpan:

Types: deb
URIs: https://ppa.launchpadcontent.net/ondrej/php/ubuntu
Suites: plucky
Components: main
Signed-By: /etc/apt/keyrings/ondrej-php.asc
Enabled: no

Manual apt merekomendasikan cara ini daripada mengomentari setiap baris dalam stanza. Cara ini juga lebih mudah dibatalkan. Untuk file satu baris, letakkan # di awal baris. Untuk kedua format tersebut, memindahkan file keluar dari /etc/apt/sources.list.d/ juga dapat dilakukan. Pilih opsi ini jika repository tersebut sudah tidak digunakan lagi.

Jalankan kembali sudo apt update. Blok Err: untuk repository tersebut akan hilang. Status keluar kembali menjadi 0. Anda dapat memeriksanya dengan echo $? pada baris berikutnya.

Jangan pernah memperbaiki source yang rusak dengan sudo rm /etc/apt/sources.list.d/*. Pada Ubuntu 24.04 dan yang lebih baru, perintah tersebut menghapus ubuntu.sources, yang berisi repository bawaan distribusi. Akibatnya, apt tidak lagi memiliki daftar paket dan melaporkan E: Unable to locate package curl untuk software yang sebenarnya tersedia. Jika Anda sudah menjalankan perintah tersebut, tulis kembali file itu:

Types: deb
URIs: http://archive.ubuntu.com/ubuntu/
Suites: noble noble-updates noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Simpan sebagai /etc/apt/sources.list.d/ubuntu.sources. Ganti noble dengan nama rilis Anda sendiri dari lsb_release -cs, lalu jalankan sudo apt update.

Konversi file .list lama ke deb822

Mulai Agustus 2026, apt 3.0 dan versi yang lebih baru menyertakan konverter untuk keperluan ini. Debian 13 menyertakannya, begitu juga Ubuntu 25.04 dan setiap rilis setelahnya, termasuk 26.04. Periksa versinya, lalu jalankan:

apt --version
sudo apt modernize-sources

Konverter tersebut menulis ulang file satu baris di bawah /etc/apt/sources.list.d/ menjadi file deb822 .sources. Baca output yang ditampilkan, lalu tampilkan isi direktori secara manual dan jalankan apt update sebelum mempercayai hasilnya. Ubuntu 24.04 menyertakan apt versi lama yang tidak memiliki subperintah tersebut. Pada rilis itu, perintah menghasilkan E: Invalid operation modernize-sources. Pada rilis tersebut, lakukan konversi secara manual menggunakan pemetaan field di atas.

Konversi bersifat opsional saat ini karena apt masih membaca kedua format. Namun, konversi layak dilakukan pada server yang akan tetap digunakan, karena setiap tool yang menulis sumber paket kini menggunakan deb822. Server yang hanya memiliki file .sources tidak dapat menambah duplikasi semacam ini.

Rapikan sumber pihak ketiga di server

Repositori pihak ketiga adalah bagian server yang paling cepat menimbulkan masalah seiring waktu. Setiap repositori merupakan komitmen dari pihak lain untuk terus menerbitkan paket bagi rilis Ubuntu Anda, dan pemutakhiran rilis menguji semua komitmen tersebut pada waktu yang sama.

  • Tambahkan repositori pihak ketiga hanya jika paket dari distribusi tidak dapat memenuhi kebutuhan. Stack LAMP di Ubuntu 24.04 standar tidak memerlukannya: arsip Ubuntu menyediakan semua paket yang digunakannya, termasuk pembaruan keamanan selama masa dukungan rilis.
  • Simpan key di /etc/apt/keyrings/, satu file untuk setiap vendor, dengan mode 644. User tanpa hak istimewa _apt mengunduh paket dan harus dapat membaca key tersebut. Karena itu, file key yang hanya dapat dibaca oleh root akan menimbulkan error permission pada setiap pengambilan paket dari repositori tersebut.
  • Arahkan Signed-By ke file yang tepat itu dalam setiap stanza. Key yang disimpan di /etc/apt/trusted.gpg atau /etc/apt/trusted.gpg.d/ dipercaya untuk semua repositori pada server. Akibatnya, key vendor yang ditambahkan beberapa tahun lalu dapat memvalidasi paket dari mana saja.
  • Sebelum melakukan pemutakhiran rilis, baca sumber paket Anda dan pastikan setiap vendor sudah menerbitkan paket untuk suite tujuan pemutakhiran.

Key dalam keyring global lama akan ditampilkan pada setiap pembaruan:

W: https://download.docker.com/linux/ubuntu/dists/noble/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

Ekspor key tersebut ke file tersendiri, lalu arahkan stanza ke file itu:

gpg --no-default-keyring --keyring /etc/apt/trusted.gpg --export 7EA0A9C3F273FCD8 | sudo tee /etc/apt/keyrings/docker.gpg > /dev/null
sudo chmod 644 /etc/apt/keyrings/docker.gpg

Tambahkan Signed-By: /etc/apt/keyrings/docker.gpg ke stanza repositori, lalu jalankan sudo apt update. Peringatan akan berhenti setelah tidak ada repositori yang bergantung pada keyring lama. Setelah itu, Anda dapat menghapus entri tersebut dengan sudo gpg --no-default-keyring --keyring /etc/apt/trusted.gpg --delete-key 7EA0A9C3F273FCD8.

Ada satu kebiasaan lain yang paling banyak mengurangi masalah. do-release-upgrade menonaktifkan sumber pihak ketiga selama pemutakhiran dan membiarkannya tetap nonaktif setelahnya. Mengaktifkannya kembali secara manual, satu per satu, adalah kondisi yang sering menyebabkan deklarasi duplikat. Baca panduan pemutakhiran Ubuntu 24.04 ke 26.04 sebelum memulai, lalu catat repositori yang masih Anda perlukan. Pada mesin yang baru saja Anda siapkan, waktu termurah untuk merapikan sumber adalah selama sepuluh menit pertama pada VPS baru, saat satu-satunya entri di server adalah entri yang disertakan Ubuntu.

FAQ

Mengapa apt mengatakan bahwa suatu target dikonfigurasi beberapa kali?

Karena dua file di bawah /etc/apt/sources.list.d/ mendeklarasikan repository, suite, dan komponen yang sama. Pesan tersebut mencantumkan kedua file beserta nomor barisnya, misalnya docker.list:1 dan docker.sources:1. apt menggabungkan keduanya lalu melanjutkan proses, sehingga update tetap berhasil. Namun, duplikasi tersebut tetap perlu dihapus: jika kedua file kemudian mencantumkan signing key yang berbeda, apt berhenti dengan E: Conflicting values set for option Signed-By dan menolak membaca semua source, sehingga apt install juga terblokir.

Apakah saya harus mempertahankan file .list atau file .sources?

Pertahankan file .sources. deb822 adalah format yang digunakan add-apt-repository untuk menulis konfigurasi di Ubuntu 24.04 dan yang lebih baru. Format ini menyimpan satu field bernama untuk setiap pengaturan, bukan teks posisional dalam tanda kurung siku, dan merupakan format yang akan digunakan distribusi ke depannya. Sebelum menghapus file .list, pastikan path Signed-By di dalam file .sources mengarah ke key yang ada, menggunakan ls -l /etc/apt/keyrings/. Pindahkan file lama ke luar /etc/apt/sources.list.d/, bukan mengganti namanya di dalam direktori tersebut, karena nama .bak yang tertinggal membuat apt menampilkan pemberitahuan tentang file yang diabaikan pada setiap eksekusi.

Bagaimana cara menonaktifkan satu repository apt tanpa menghapusnya?

Pada file deb822 .sources, tambahkan Enabled: no ke stanza. Pada file .list satu baris, letakkan # di awal baris. Apa pun caranya, jalankan sudo apt update setelah itu, lalu blok Err: untuk repository tersebut akan hilang. Ini merupakan langkah yang tepat ketika repository pihak ketiga belum menyediakan paket untuk rilis Ubuntu Anda dan error 404-nya membuat apt update keluar dengan status non-zero.

Apakah format sources.list satu baris akan dihentikan?

Format tersebut berstatus deprecated, bukan dihapus. apt masih membaca file .list dan akan terus melakukannya dalam waktu lama, sehingga tidak ada yang langsung rusak di server Anda. Tool baru menulis deb822: Ubuntu 24.04 dan yang lebih baru menyimpan repository distribusi di /etc/apt/sources.list.d/ubuntu.sources, sedangkan add-apt-repository menulis file .sources. Pada apt 3.0 dan yang lebih baru, sudo apt modernize-sources mengonversi file yang masih Anda miliki.

#apt#ubuntu#deb822#package-management#troubleshooting