pacman (Bahasa Indonesia)
Manajer paket pacman adalah salah satu fitur pembeda utama dari Arch Linux. Ia menggabungkan format paket biner sederhana dengan Arch build system yang mudah digunakan. Tujuan dari pacman adalah untuk memungkinkan pengelolaan paket dengan mudah, baik yang berasal dari official repositories maupun hasil kompilasi pengguna sendiri.
pacman menjaga sistem tetap mutakhir dengan menyinkronkan daftar paket dengan server utama. Model server/klien ini juga memungkinkan pengguna untuk mengunduh/menginstal paket dengan perintah sederhana, lengkap dengan semua dependensi yang diperlukan.
pacman ditulis dalam bahasa pemrograman C dan menggunakan format tar bsdtar(1) untuk pengemasan.
pacman -Ql pacman pacman-contrib | grep -E 'bin/.+' untuk melihat daftar lengkapnya.Penggunaan
Berikut ini hanyalah sebagian kecil dari operasi yang dapat dilakukan oleh pacman. Untuk membaca lebih banyak contoh, silakan merujuk ke pacman(8).
Menginstal paket
Sebuah paket adalah arsip yang berisi:
- semua file (terkompilasi) dari sebuah aplikasi
- metadata tentang aplikasi tersebut, seperti nama aplikasi, versi, dependensi, dll.
- file instalasi dan arahan untuk pacman
Manajer paket Arch, pacman, dapat menginstal, memperbarui, dan menghapus paket-paket tersebut. Menggunakan paket alih-alih mengompilasi dan menginstal program sendiri memiliki berbagai manfaat:
- mudah diperbarui: pacman akan memperbarui paket yang ada segera setelah pembaruan tersedia
- pemeriksaan dependensi: pacman menangani dependensi untuk Anda, Anda hanya perlu menentukan programnya dan pacman akan menginstalnya bersama dengan setiap program lain yang dibutuhkannya
- penghapusan bersih: pacman memiliki daftar setiap file dalam sebuah paket; dengan cara ini, tidak ada file yang tertinggal secara tidak sengaja saat Anda memutuskan untuk menghapus sebuah paket.
- Paket sering kali memiliki dependensi opsional yang merupakan paket untuk menyediakan fungsionalitas tambahan ke aplikasi tetapi tidak mutlak diperlukan untuk menjalankannya. Saat menginstal sebuah paket, pacman akan mencantumkan dependensi opsional paket tersebut, tetapi mereka tidak akan ditemukan di
pacman.log. Gunakan perintah #Querying package databases untuk melihat dependensi opsional dari sebuah paket. - Saat menginstal paket yang Anda butuhkan hanya sebagai dependensi (opsional) dari paket lain (yaitu tidak Anda butuhkan secara eksplisit), disarankan untuk menggunakan opsi
--asdeps. Untuk rinciannya, lihat bagian #Alasan instalasi.
pacman -Sy nama_paket sebagai pengganti pacman -Syu nama_paket, karena hal tersebut dapat menyebabkan masalah dependensi. Lihat Sistem pemeliharaan#Pembaruan parsial tidak didukung dan BBS#89328.Menginstal paket tertentu
Untuk menginstal satu paket atau daftar paket, termasuk dependensinya, jalankan perintah berikut:
# pacman -S nama_paket1 nama_paket2 ...
Untuk menginstal daftar paket dengan regex (lihat utas forum ini):
# pacman -S $(pacman -Ssq regex_paket)
Terkadang terdapat beberapa versi paket di repositori yang berbeda (misalnya extra dan extra-testing). Untuk menginstal versi dari repositori extra dalam contoh ini, repositori perlu ditentukan di depan nama paket:
# pacman -S extra/nama_paket
Untuk menginstal sejumlah paket yang memiliki pola serupa dalam namanya, seseorang dapat menggunakan ekspansi kurung kurawal. Sebagai contoh:
# pacman -S plasma-{desktop,mediacenter,nm}
Ini dapat diperluas ke tingkat sebanyak apa pun yang diperlukan:
# pacman -S plasma-{workspace{,-wallpapers},pa}
Virtual packages
A virtual package is a special package which does not exist by itself, but is provided by one or more other packages. Virtual packages allow other packages to not name a specific package as a dependency, in case there are several candidates. Virtual packages cannot be installed by their name, instead they become installed in your system when you have installed a package providing the virtual package. An example is the dbus-units package.
pacman.conf, then alphabetically when multiple results exist from the same repository.Paket virtual
Paket virtual adalah paket khusus yang tidak berdiri sendiri, tetapi disediakan oleh satu atau lebih paket lainnya. Paket virtual memungkinkan paket lain untuk tidak menyebutkan paket spesifik sebagai dependensi, jika terdapat beberapa kandidat. Paket virtual tidak dapat diinstal berdasarkan namanya, melainkan terinstal di sistem Anda ketika Anda telah menginstal paket yang *menyediakan* paket virtual tersebut. Contohnya adalah paket dbus-units.
pacman.conf, kemudian secara alfabetis jika terdapat beberapa hasil dari repositori yang sama.Menginstal grup paket
Beberapa paket termasuk dalam grup paket yang semuanya dapat diinstal secara bersamaan. Sebagai contoh, menjalankan perintah:
# pacman -S gnome
akan meminta Anda untuk memilih paket dari grup gnome yang ingin Anda instal.
Terkadang sebuah grup paket berisi sangat banyak paket, dan mungkin hanya ada beberapa yang Anda inginkan atau tidak Anda inginkan untuk diinstal. Alih-alih harus memasukkan semua nomor kecuali yang tidak Anda inginkan, terkadang lebih mudah untuk memilih atau mengecualikan paket atau rentang paket dengan sintaks berikut:
Masukkan pilihan (default=semua): 1-10 15
yang akan memilih paket 1 sampai 10 dan 15 untuk diinstal, atau:
Masukkan pilihan (default=semua): ^5-8 ^2
yang akan memilih semua paket kecuali 5 sampai 8 dan 2 untuk diinstal.
Untuk melihat paket apa saja yang termasuk dalam grup gnome, jalankan:
$ pacman -Sg gnome
Kunjungi juga [1](https://archlinux.org/groups/) untuk melihat grup paket apa saja yang tersedia.
--needed.Menghapus paket
Untuk menghapus satu paket, dengan membiarkan semua dependensinya tetap terinstal:
# pacman -R nama_paket
Untuk menghapus paket beserta dependensinya yang tidak diperlukan oleh paket terinstal lainnya:
# pacman -Rs nama_paket
Perintah di atas terkadang menolak untuk dijalankan saat menghapus grup yang berisi paket yang masih dibutuhkan. Dalam hal ini, coba:
# pacman -Rsu nama_paket
Untuk menghapus paket, dependensinya, dan semua paket yang bergantung pada paket target tersebut:
# pacman -Rsc nama_paket
Untuk menghapus paket yang dibutuhkan oleh paket lain, tanpa menghapus paket yang bergantung padanya:
# pacman -Rdd nama_paket
pacman menyimpan file konfigurasi penting saat menghapus aplikasi tertentu dan menamainya dengan ekstensi: .pacsave. Untuk mencegah pembuatan file cadangan ini, gunakan opsi -n:
# pacman -Rn nama_paket
Memperbarui paket
- Pengguna diharapkan mengikuti panduan di bagian System maintenance#Upgrading the system untuk memperbarui sistem mereka secara berkala dan tidak menjalankan perintah berikut secara membabi buta.
- Arch hanya mendukung pembaruan sistem secara penuh. Lihat System maintenance#Partial upgrades are unsupported dan #Menginstal paket untuk rinciannya.
pacman dapat memperbarui semua paket di sistem hanya dengan satu perintah. Hal ini bisa memakan waktu cukup lama tergantung pada seberapa mutakhir sistem tersebut. Perintah berikut menyinkronkan basis data repositori dan memperbarui paket-paket sistem, tidak termasuk paket "lokal" yang tidak ada dalam repositori yang dikonfigurasi:
# pacman -Syu
Menanyakan basis data paket
pacman menanyakan basis data paket lokal dengan bendera -Q, basis data sinkronisasi dengan bendera -S dan basis data file dengan bendera -F. Lihat pacman -Q --help, pacman -S --help dan pacman -F --help untuk sub-opsi masing-masing dari setiap bendera.
# pacman -Fy
pacman-filesdb-refresh.timer (disediakan dalam paket pacman-contrib) untuk menyegarkan basis data file pacman setiap minggu.pacman dapat mencari paket dalam basis data, mencari baik pada nama maupun deskripsi paket:
$ pacman -Ss string1 string2 ...
Terkadang, ERE (Extended Regular Expressions) bawaan -s dapat menyebabkan banyak hasil yang tidak diinginkan, sehingga pencarian harus dibatasi agar sesuai dengan nama paket saja; bukan deskripsi atau bidang lainnya:
$ pacman -Ss '^vim-'
Untuk mencari paket yang sudah terinstal:
$ pacman -Qs string1 string2 ...
Untuk mencari nama file paket dalam paket jarak jauh (remote):
$ pacman -F string1 string2 ...
Untuk menampilkan informasi luas tentang paket tertentu (misalnya dependensinya):
$ pacman -Si nama_paket
Untuk paket yang terinstal secara lokal:
$ pacman -Qi nama_paket
Memberikan dua bendera -i juga akan menampilkan daftar file cadangan dan status modifikasinya:
$ pacman -Qii nama_paket
Untuk mendapatkan daftar file yang diinstal oleh sebuah paket:
$ pacman -Ql nama_paket
Untuk mendapatkan daftar file yang diinstal oleh paket jarak jauh (remote):
$ pacman -Fl nama_paket
Untuk memverifikasi keberadaan file yang diinstal oleh sebuah paket:
$ pacman -Qk nama_paket
Memberikan bendera k dua kali akan melakukan pemeriksaan yang lebih menyeluruh.
Untuk menanyakan basis data guna mengetahui paket mana yang memiliki file tertentu di sistem file:
$ pacman -Qo /jalur/ke/nama_file
Untuk menanyakan basis data guna mengetahui paket jarak jauh (remote) mana yang memiliki file tersebut:
$ pacman -F /jalur/ke/nama_file
Untuk mencantumkan semua paket yang tidak lagi diperlukan sebagai dependensi (yatim/orphan):
$ pacman -Qdt
Untuk mencantumkan semua paket yang diinstal secara eksplisit dan tidak diperlukan sebagai dependensi:
$ pacman -Qet
Lihat pacman/Tips and tricks untuk contoh lainnya.
Untuk fungsionalitas tingkat lanjut, instal pkgfile, yang menggunakan basis data terpisah dengan semua file dan paket terkaitnya.
Pactree
Untuk melihat pohon dependensi dari sebuah paket:
$ pactree nama_paket
Untuk melihat pohon paket yang bergantung pada suatu paket, berikan bendera pembalik -r ke pactree.
Struktur basis data
Basis data pacman biasanya terletak di /var/lib/pacman/sync. Untuk setiap repositori yang ditentukan dalam /etc/pacman.conf, akan ada file basis data yang sesuai di sana. File basis data adalah arsip tar yang dikompres dengan gzip, berisi satu direktori untuk setiap paket, misalnya untuk paket which:
$ tree which-2.21-5
which-2.21-5 |-- desc
File desc berisi metadata seperti deskripsi paket, dependensi, ukuran file, dan hash MD5.
Membersihkan cache paket
Pacman menyimpan paket yang diunduh di /var/cache/pacman/pkg/ dan tidak menghapus versi lama atau yang sudah tidak terinstal secara otomatis. Hal ini memiliki beberapa keuntungan:
1. Memungkinkan untuk melakukan downgrade paket tanpa perlu mengambil versi sebelumnya melalui cara lain, seperti Arch Linux Archive. 2. Paket yang telah dihapus dapat diinstal ulang dengan mudah langsung dari direktori cache, tanpa memerlukan unduhan baru dari repositori.
Namun, pembersihan cache secara berkala perlu dilakukan secara sengaja untuk mencegah ukuran direktori tersebut membengkak tanpa batas.
Skrip paccache(8), yang disediakan dalam paket pacman-contrib, menghapus semua versi paket terinstal maupun tidak terinstal yang tersimpan di cache, kecuali tiga versi terbaru, secara default:
# paccache -r
Aktifkan dan mulai paccache.timer untuk membuang paket yang tidak terpakai setiap minggu. Anda dapat mengonfigurasi argumen untuk layanan tersebut di /etc/conf.d/pacman-contrib, misalnya dengan PACCACHE_ARGS='-k1' atau PACCACHE_ARGS='-uk0' untuk dua contoh di bawah ini.
Anda juga dapat menentukan berapa banyak versi terbaru yang ingin disimpan. Untuk menyimpan hanya satu versi sebelumnya, gunakan:
# paccache -rk1
Tambahkan sakelar -u/--uninstalled untuk membatasi tindakan paccache hanya pada paket yang tidak terinstal. Misalnya, untuk menghapus semua versi cache dari paket yang tidak terinstal, gunakan perintah berikut:
# paccache -ruk0
Lihat paccache -h untuk opsi lainnya.
pacman juga memiliki beberapa opsi bawaan untuk membersihkan cache dan file basis data sisa dari repositori yang tidak lagi tercantum dalam file konfigurasi /etc/pacman.conf. Namun, pacman tidak menawarkan kemungkinan untuk menyimpan sejumlah versi sebelumnya dan oleh karena itu lebih agresif daripada opsi default paccache.
Untuk menghapus semua paket di cache yang saat ini tidak terinstal, serta basis data sinkronisasi yang tidak digunakan, jalankan:
# pacman -Sc
Untuk menghapus semua file dari cache, gunakan sakelar pembersih sebanyak dua kali; ini adalah pendekatan yang paling agresif dan tidak akan menyisakan apa pun di direktori cache:
# pacman -Scc
pkgcachecleanAUR dan pacleanerAUR adalah dua alternatif lain untuk membersihkan cache.
Perintah tambahan
Unduh paket tanpa menginstalnya:
# pacman -Sw nama_paket
Instal paket 'lokal' yang tidak berasal dari repositori jarak jauh (misalnya paket dari AUR):
# pacman -U /jalur/ke/paket/nama_paket-versi.pkg.tar.zst
Untuk menyimpan salinan paket lokal di dalam cache pacman, gunakan:
# pacman -U file:///jalur/ke/paket/nama_paket-versi.pkg.tar.zst
Instal paket 'jarak jauh' (tidak berasal dari repositori yang tercantum dalam file konfigurasi pacman):
# pacman -U http://www.example.com/repo/example.pkg.tar.zst
Uji coba (Dry run)
pacman selalu mencantumkan paket yang akan diinstal atau dihapus, dan meminta izin sebelum melakukan tindakan apa pun.
Untuk mendapatkan daftar dalam format yang dapat diproses, serta untuk mencegah tindakan dari -S, -U dan -R, Anda dapat menggunakan -p, singkatan dari --print.
--print-format dapat ditambahkan untuk memformat daftar ini dengan berbagai cara. --print-format %n akan mengembalikan daftar tanpa versi paket.
Alasan instalasi
Basis data pacman mengatur paket-paket yang terinstal ke dalam dua grup, sesuai dengan alasan instalasinya:
-
diinstal secara eksplisit (explicitly-installed): paket yang benar-benar dimasukkan ke dalam perintah umum pacman
-Satau-U; - dependensi: paket yang, meskipun (secara umum) tidak pernah dimasukkan ke dalam perintah instalasi pacman, terinstal secara implisit karena dibutuhkan oleh paket yang diinstal secara eksplisit.
Saat menginstal paket, dimungkinkan untuk memaksa alasan instalasinya menjadi dependensi dengan:
# pacman -S --asdeps nama_paket
Perintah ini biasanya digunakan karena paket yang diinstal secara eksplisit mungkin menawarkan paket opsional, biasanya untuk fitur non-esensial yang kebijakannya ada pada pengguna.
--asdeps akan memastikan bahwa, jika Anda menghapus paket yatim (orphan), pacman juga akan menghapus paket opsional yang diatur dengan cara ini.Namun, saat menginstal ulang sebuah paket, alasan instalasi saat ini akan tetap dipertahankan secara default.
Daftar paket yang diinstal secara eksplisit dapat ditampilkan dengan pacman -Qe, sementara daftar pelengkap untuk dependensi dapat ditampilkan dengan pacman -Qd.
Untuk mengubah alasan instalasi dari paket yang sudah terinstal, jalankan:
# pacman -D --asdeps nama_paket
Gunakan --asexplicit untuk melakukan operasi sebaliknya.
--asdeps dan --asexplicit saat melakukan pembaruan, seperti dengan pacman -Syu nama_paket --asdeps, sangat tidak disarankan. Hal ini akan mengubah alasan instalasi tidak hanya untuk paket yang sedang diinstal, tetapi juga untuk paket-paket yang sedang diperbarui.Apa yang terjadi selama instalasi/pembaruan/penghapusan paket
Jika berhasil, alur kerja suatu transaksi mengikuti lima langkah tingkat tinggi ditambah hook sebelum/sesudah transaksi:
- Inisialisasi transaksi jika tidak ada kunci basis data (database lock).
- Pilih paket mana yang akan ditambahkan atau dihapus dalam transaksi tersebut.
- Siapkan transaksi, berdasarkan bendera, dengan melakukan pemeriksaan integritas pada basis data sinkronisasi, paket, dan dependensinya.
- Komit transaksi:
- Jika berlaku, unduh paket (
_alpm_sync_load). - Jika terdapat hook
PreTransactionpacman yang berlaku, hook tersebut akan dieksekusi. - Paket yang akan diganti, berkonflik, atau secara eksplisit ditargetkan untuk dihapus, akan dihapus.
- Jika ada paket yang akan ditambahkan, maka setiap paket dikomit:
- Jika paket memiliki skrip instalasi, fungsi
pre_install-nya akan dieksekusi (ataupre_upgradeataupre_removedalam kasus paket yang diperbarui atau dihapus). - pacman menghapus semua file dari versi paket yang sudah ada sebelumnya (dalam kasus paket yang diperbarui atau dihapus). Namun, file yang ditandai sebagai file konfigurasi dalam paket akan tetap disimpan (lihat /Pacnew and Pacsave).
- pacman mengekstrak tar paket dan menempatkan file-filenya ke dalam sistem file (dalam kasus paket yang diinstal atau diperbarui). File yang akan menimpa file konfigurasi yang disimpan dan dimodifikasi secara manual (lihat langkah sebelumnya), akan disimpan dengan nama baru ('.pacnew').
- Jika paket memiliki skrip instalasi, fungsi
post_install-nya akan dieksekusi (ataupost_upgradeataupost_removedalam kasus paket yang diperbarui atau dihapus).
- Jika paket memiliki skrip instalasi, fungsi
- Jika terdapat hook
PostTransactionpacman pada akhir transaksi yang berlaku, hook tersebut akan dieksekusi.
- Jika berlaku, unduh paket (
- Lepaskan transaksi dan sumber daya transaksi (yaitu kunci basis data).
Konfigurasi
Pengaturan pacman terletak di /etc/pacman.conf: ini adalah tempat di mana pengguna mengonfigurasi program agar bekerja sesuai dengan cara yang diinginkan. Informasi mendalam tentang file konfigurasi dapat ditemukan di pacman.conf(5).
Opsi umum
Opsi umum berada di bagian [options]. Baca pacman.conf(5) atau lihat file default pacman.conf untuk informasi mengenai apa saja yang dapat dilakukan di sini.
Membandingkan versi sebelum memperbarui
Untuk melihat versi lama dan baru dari paket yang tersedia, hapus tanda komentar pada baris "VerbosePkgLists" di /etc/pacman.conf. Output dari pacman -Syu akan menjadi seperti ini:
Package (6) Old Version New Version Net Change Download Size extra/libmariadbclient 10.1.9-4 10.1.10-1 0.03 MiB 4.35 MiB extra/libpng 1.6.19-1 1.6.20-1 0.00 MiB 0.23 MiB extra/mariadb 10.1.9-4 10.1.10-1 0.26 MiB 13.80 MiB
Unduhan paralel
Jumlah paket yang diunduh secara paralel (pada saat yang sama) dikonfigurasi di dalam /etc/pacman.conf dengan opsi ParallelDownloads di bawah bagian [options]. File /etc/pacman.conf yang disertakan dengan paket pacman mengaturnya ke 5. Jika opsi ini tidak diatur, paket-paket akan diunduh secara berurutan.
Melewati pembaruan paket tertentu
Agar paket tertentu dilewati saat memperbarui sistem, tambahkan baris ini di bagian [options]:
IgnorePkg=linux
Untuk beberapa paket, gunakan daftar yang dipisahkan spasi, atau gunakan baris IgnorePkg tambahan. Selain itu, pola glob juga dapat digunakan. Jika Anda ingin melewati paket hanya satu kali saja, Anda juga dapat menggunakan opsi --ignore pada baris perintah - kali ini dengan daftar yang dipisahkan koma.
Pembaruan paket yang diabaikan tersebut masih dimungkinkan menggunakan pacman -S: dalam hal ini pacman akan mengingatkan Anda bahwa paket-paket tersebut telah dimasukkan ke dalam pernyataan IgnorePkg.
Melewati pembaruan grup paket
Sama seperti paket individu, mengabaikan seluruh grup paket juga dimungkinkan:
IgnoreGroup=gnome
Melewati pembaruan file tertentu
Semua file yang dicantumkan dengan arahan NoUpgrade tidak akan pernah disentuh selama instalasi/pembaruan paket, dan file baru akan diinstal dengan ekstensi .pacnew.
NoUpgrade=jalur/ke/file
Beberapa file dapat ditentukan seperti ini:
NoUpgrade=jalur/ke/file1 jalur/ke/file2
Melewati instalasi file ke sistem
Untuk selalu melewati instalasi file atau direktori tertentu, cantumkan mereka di bawah NoExtract. Sebagai contoh, untuk menghindari instalasi skrip bash completion, gunakan:
NoExtract=usr/share/bash-completion/completions/*
Aturan yang muncul kemudian akan menimpa aturan sebelumnya, dan Anda dapat meniadakan aturan dengan menambahkan awalan !.
Mengelola beberapa file konfigurasi
Jika Anda memiliki beberapa file konfigurasi (misalnya konfigurasi utama dan konfigurasi dengan repositori testing yang diaktifkan) dan ingin berbagi opsi di antara konfigurasi tersebut, Anda dapat menggunakan opsi Include yang dideklarasikan dalam file konfigurasi, contohnya:
Include = /jalur/ke/pengaturan/umum
di mana file /jalur/ke/pengaturan/umum berisi opsi yang sama untuk kedua konfigurasi tersebut.
Hook
pacman dapat menjalankan hook sebelum dan sesudah transaksi dari direktori /usr/share/libalpm/hooks/; direktori tambahan dapat ditentukan dengan opsi HookDir di pacman.conf, yang secara default merujuk ke /etc/pacman.d/hooks. Nama file hook harus diakhiri dengan ekstensi .hook. Hook pacman bersifat tidak interaktif.
Hook pacman digunakan, misalnya, dalam kombinasi dengan systemd-sysusers dan systemd-tmpfiles untuk secara otomatis membuat pengguna sistem dan file selama instalasi paket. Sebagai contoh, tomcat8AUR menentukan bahwa ia membutuhkan pengguna sistem bernama tomcat8 dan direktori tertentu yang dimiliki oleh pengguna ini. Hook pacman systemd-sysusers.hook dan systemd-tmpfiles.hook memanggil systemd-sysusers dan systemd-tmpfiles ketika pacman mendeteksi bahwa tomcat8AUR berisi file yang menentukan pengguna dan file sementara (tmp files).
Untuk informasi lebih lanjut mengenai hook alpm, lihat alpm-hooks(5).
Repositori dan cermin (mirror)
Selain bagian khusus [options], setiap [section] lainnya dalam pacman.conf mendefinisikan repositori paket yang akan digunakan. Sebuah *repositori* adalah kumpulan paket secara *logis*, yang secara *fisik* disimpan di satu atau lebih server: karena alasan inilah setiap server disebut sebagai *mirror* untuk repositori tersebut.
Repositori dibedakan antara repositori resmi dan tidak resmi. Urutan repositori dalam file konfigurasi sangat berpengaruh; repositori yang dicantumkan lebih dulu akan diprioritaskan daripada yang dicantumkan kemudian jika paket di dua repositori memiliki nama yang identik, terlepas dari nomor versinya. Untuk menggunakan repositori setelah menambahkannya, Anda perlu memperbarui seluruh sistem terlebih dahulu.
Setiap bagian repositori memungkinkan penentuan daftar mirror-nya secara langsung atau dalam file eksternal khusus melalui arahan Include; misalnya, mirror untuk repositori resmi disertakan dari /etc/pacman.d/mirrorlist. Lihat artikel Mirrors untuk konfigurasi mirror.
Direktori cache paket
pacman menyimpan file paket yang diunduh di dalam cache, dalam direktori yang ditunjukkan oleh CacheDir di bagian [options] pada pacman.conf (secara default ke /var/cache/pacman/pkg/ jika tidak diatur).
Direktori cache dapat membengkak seiring waktu, bahkan jika hanya menyimpan versi terbaru dari paket yang terinstal.
Jika Anda ingin memindahkan direktori tersebut ke tempat yang lebih sesuai, lakukan salah satu hal berikut:
- Atur opsi
CacheDirdipacman.confke direktori baru. Ingatlah untuk menyertakan garis miring di akhir. Ini adalah solusi yang disarankan. - Kaitkan (mount) partisi khusus atau misal subvolume Btrfs di
/var/cache/pacman/pkg/. - Gunakan bind-mount untuk direktori yang dipilih di
/var/cache/pacman/pkg/.
/var/cache/pacman/pkg/ ke lokasi lain. Hal ini akan menyebabkan pacman tidak berfungsi dengan benar, terutama saat pacman mencoba memperbarui dirinya sendiri.Keamanan paket
pacman mendukung tanda tangan paket, yang menambahkan lapisan keamanan ekstra pada paket. Konfigurasi default, SigLevel = Required DatabaseOptional, mengaktifkan verifikasi tanda tangan untuk semua paket pada tingkat global. Hal ini dapat ditimpa oleh baris SigLevel per repositori. Untuk rincian lebih lanjut tentang penandatanganan paket dan verifikasi tanda tangan, lihat pacman-key.
Pemecahan masalah
Kesalahan "Failed to commit transaction (conflicting files)"
Jika Anda melihat kesalahan berikut: [2]
error: could not prepare transaction error: failed to commit transaction (conflicting files) paket: /jalur/ke/file exists in filesystem Errors occurred, no packages were upgraded.
Hal ini terjadi karena pacman mendeteksi adanya konflik file, dan secara rancangan, tidak akan menimpa file untuk Anda. Ini adalah fitur keamanan, bukan cacat program.
Masalah ini biasanya sepele untuk diselesaikan (walaupun untuk memastikannya, Anda harus mencoba mencari tahu bagaimana file-file tersebut bisa ada di sana pada awalnya). Cara yang aman adalah dengan memeriksa terlebih dahulu apakah paket lain memiliki file tersebut (pacman -Qo /jalur/ke/file). Jika file tersebut dimiliki oleh paket lain, buatlah laporan bug. Jika file tersebut tidak dimiliki oleh paket lain, ganti nama file yang "exists in filesystem" tersebut dan jalankan kembali perintah pembaruan. Jika semuanya berjalan lancar, file tersebut kemudian dapat dihapus.
Jika Anda telah menginstal program secara manual tanpa menggunakan pacman, misalnya melalui make install, Anda harus menghapus/mencopot program ini beserta semua filenya. Lihat juga Pacman tips#Identify files not owned by any package.
Setiap paket yang terinstal menyediakan file /var/lib/pacman/local/paket-versi/files yang berisi metadata tentang paket ini. Jika file ini rusak, kosong, atau hilang, hal itu menyebabkan kesalahan file exists in filesystem saat mencoba memperbarui paket. Kesalahan seperti ini biasanya hanya menyangkut satu paket. Alih-alih mengganti nama secara manual dan kemudian menghapus semua file yang termasuk dalam paket yang bermasalah, Anda dapat secara eksplisit menjalankan pacman -S --overwrite glob paket untuk memaksa pacman menimpa file yang cocok dengan glob.
--overwrite. Lihat System maintenance#Avoid certain pacman commands.Kesalahan "Failed to commit transaction (invalid or corrupted package)"
Cari file .part (paket yang baru diunduh sebagian) di /var/cache/pacman/pkg/ dan hapus file tersebut (sering kali disebabkan oleh penggunaan XferCommand khusus di pacman.conf).
# find /var/cache/pacman/pkg/ -iname "*.part" -delete
Kesalahan yang sama mungkin juga muncul jika archlinux-keyring sudah kedaluwarsa, sehingga mencegah pacman melakukan verifikasi tanda tangan. Lihat Pacman/Package signing#Upgrade system regularly untuk perbaikan dan cara menghindarinya di masa mendatang.
Kesalahan "Failed to init transaction (unable to lock database)"
Ketika pacman akan mengubah basis data paket, misalnya saat menginstal paket, ia membuat file kunci (lock file) di /var/lib/pacman/db.lck. Hal ini mencegah instansi pacman lainnya mencoba mengubah basis data paket di waktu yang sama.
Jika pacman terhenti saat sedang mengubah basis data, file kunci yang basi ini mungkin tetap ada. Jika Anda yakin bahwa tidak ada instansi pacman yang sedang berjalan, hapus file kunci tersebut:
# rm /var/lib/pacman/db.lck
fuser /var/lib/pacman/db.lck sebagai root untuk memverifikasi apakah masih ada proses yang menggunakannya.Paket tidak dapat ditemukan saat instalasi
Kesalahan ini muncul dalam bentuk Not found in sync db, Target not found atau Failed retrieving file.
Pertama, pastikan paket tersebut memang ada. Jika Anda yakin paket itu ada, daftar paket Anda mungkin sudah usang. Cobalah menjalankan pacman -Syu untuk memaksa penyegaran semua daftar paket dan melakukan pembaruan. Pastikan juga mirrors yang dipilih sudah mutakhir dan repositori dikonfigurasi dengan benar. Anda juga dapat menggunakan Reflector untuk menjaga agar mirror tetap mutakhir.
Jika pacman melaporkan tidak ada yang perlu diperbarui, tetapi kesalahan Failed retrieving file terus muncul, pertimbangkan untuk memaksa pengunduhan basis data dengan pacman -Syyu. Hal ini tidak pernah dibutuhkan dalam kondisi normal, jadi periksalah lebih teliti status dan konsistensi mirror tersebut.
Bisa jadi repositori yang berisi paket tersebut tidak diaktifkan di sistem Anda, misalnya paket tersebut berada di repositori multilib, tetapi multilib tidak diaktifkan di pacman.conf Anda.
Lihat juga FAQ#Why is there only a single version of each shared library in the official repositories?.
Memperbaiki sistem yang tidak bisa booting akibat pembaruan yang terhenti
Baik karena mati listrik, kernel panic, atau kegagalan perangkat keras, sebuah pembaruan bisa saja terhenti. Dalam banyak kasus, tidak akan ada banyak kerusakan tetapi sistem kemungkinan besar tidak akan bisa booting.
- Siapkan USB flash installation medium dan lakukan booting darinya.
- Kaitkan sistem file root serta ESP Anda.
- Lakukan
arch-chrootke dalam sistem file root yang telah dikaitkan. - Periksa
/var/log/pacman.logdan ulangi pembaruan yang sama persis dengan memberikan *seluruh* daftar paket yang diperbarui selama transaksi yang gagal tersebut kepacman -Syu, memungkinkannya untuk menginstal ulang sambil melanjutkan pembaruan asli:
# pacman -Syu $(grep "\\[2025-07-27T22.*\\] \\[ALPM\\] upgraded" /var/log/pacman.log | cut -d " " -f4 | tr "\\n" " ")
Mengulangi pembaruan yang *tepat* diperlukan untuk memastikan scriptlet dan hook yang benar akan dijalankan.
pacman macet saat pembaruan
Dalam kasus di mana pacman macet dengan kesalahan "database write" saat menghapus paket, dan penginstalan ulang atau pembaruan paket gagal setelahnya, lakukan hal berikut:
- Boot menggunakan USB flash installation medium Arch. Sebaiknya gunakan media terbaru agar versi pacman sesuai dengan/lebih baru dari sistem.
- Kaitkan sistem file root sistem, misalnya,
mount /dev/sdaX /mntsebagai root, dan periksa apakah pemasangan memiliki ruang yang cukup dengandf -h. - Kaitkan juga sistem file proc, sys, dan dev:
mount -t proc proc /mnt/proc; mount --rbind /sys /mnt/sys; mount --rbind /dev /mnt/dev. - Jika sistem menggunakan lokasi basis data dan direktori default, Anda sekarang dapat memperbarui basis data pacman sistem dan memperbaruinya melalui
pacman --root=/mnt --cachedir=/mnt/var/cache/pacman/pkg -Syusebagai root.- Sebagai alternatif, jika Anda tidak dapat memperbarui, merujuklah ke Pacman/Tips and tricks#Reinstalling all packages.
- Setelah pembaruan, salah satu cara untuk memeriksa ulang paket yang tidak diperbarui tetapi masih rusak:
find /mnt/usr/lib -size 0. - Dilanjutkan dengan instal ulang paket yang masih rusak melalui
pacman --root /mnt --cachedir=/mnt/var/cache/pacman/pkg -S paket.
pacman: command not found
Jika /var/cache/pacman/pkg adalah symlink, pacman akan mencoba membuat direktori sebagai gantinya dan dengan demikian menghapus symlink ini selama pembaruan diri sendiri. Hal ini akan menyebabkan pembaruan gagal. Akibatnya, /usr/bin/pacman dan konten lain dari paket pacman akan hilang.
Jangan pernah menggunakan symlink untuk /var/cache/pacman/pkg karena direktori tersebut dikendalikan oleh pacman. Gunakan opsi CacheDir atau bind mount sebagai gantinya; lihat #Direktori cache paket.
Jika Anda sudah terlanjur mengalami masalah ini dan merusak sistem Anda, Anda dapat mengekstrak konten /usr secara manual dari paket untuk memulihkan pacman dan kemudian menginstalnya kembali dengan benar; lihat FS#73306 dan utas forum terkait untuk rinciannya.
Menginstal ulang pacman secara manual
Menggunakan pacman-static
pacman-staticAUR adalah versi pacman yang dikompilasi secara statis, sehingga akan dapat berjalan bahkan ketika pustaka (library) pada sistem tidak berfungsi. Ini juga bisa berguna ketika pembaruan parsial dilakukan dan pacman tidak dapat berjalan lagi.
Komentar yang disematkan dan PKGBUILD menyediakan cara untuk mengunduh biner secara langsung, yang dapat digunakan untuk menginstal ulang pacman atau untuk memperbarui seluruh sistem dalam kasus pembaruan parsial.
Menggunakan biner pacman-static yang telah dikompilasi sebelumnya ketika pembangunan PKGBUILD gagal
Dalam beberapa situasi, sistem Anda mungkin terlalu rusak untuk menjalankan makepkg atau untuk membangun paket pacman-staticAUR (misalnya, karena pustaka yang hilang atau tidak kompatibel). Dalam hal ini, Anda dapat mengunduh biner pacman-static yang telah dikompilasi sebelumnya dari sumber tepercaya. Biner statis ini tidak bergantung pada pustaka sistem dan dapat digunakan untuk memulihkan pacman yang berfungsi pada sistem Anda.
Sumber yang andal untuk biner tersebut adalah [3](https://pkgbuild.com/~morganamilo/pacman-static/x86_64/bin/pacman-static)
Unduh biner tersebut, jadikan dapat dieksekusi, lalu:
# ./pacman-static -Syu pacman
Ini akan memperbarui sistem Anda dan menginstal ulang pacman, memperbaiki dependensi yang rusak terkait dengan pustaka bersama yang hilang.
Menggunakan pacman eksternal
Jika bahkan pacman-static tidak berfungsi, pemulihan dapat dilakukan menggunakan pacman eksternal. Salah satu metode termudah untuk melakukannya adalah dengan menggunakan archiso dan cukup menggunakan --sysroot atau --root untuk menentukan titik kait (mount point) dari sistem tempat operasi akan dilakukan. Lihat Chroot#Using chroot tentang cara mengaitkan sistem file yang diperlukan oleh --sysroot.
Dengan ekstraksi manual
Bahkan jika pacman sangat rusak, Anda dapat memperbaikinya secara manual dengan mengunduh paket-paket terbaru dan mengekstraknya ke lokasi yang benar. Langkah-langkah kasarnya adalah:
- Tentukan dependensi pacman yang akan diinstal
- Unduh setiap paket dari mirror pilihan Anda
- Ekstrak setiap paket ke root
- Instal ulang paket-paket ini dengan
pacman -S --overwriteuntuk memperbarui basis data paket sebagaimana mestinya - Lakukan pembaruan sistem secara penuh
Jika Anda memiliki sistem Arch yang sehat, Anda dapat melihat daftar lengkap dependensi dengan:
$ pacman -Q $(pactree -u pacman)
Tetapi Anda mungkin hanya perlu memperbarui beberapa di antaranya saja tergantung pada masalah Anda. Contoh mengekstrak paket adalah:
# tar -xvpwf package.tar.zst -C / --exclude .PKGINFO --exclude .INSTALL --exclude .MTREE --exclude .BUILDINFO
Perhatikan penggunaan bendera w untuk mode interaktif. Menjalankan secara non-interaktif sangat berisiko karena Anda mungkin akan menimpa file penting. Berhati-hatilah juga untuk mengekstrak paket dalam urutan yang benar (yaitu dependensi terlebih dahulu). Utas forum ini berisi contoh proses di mana hanya beberapa dependensi pacman yang rusak.
Kesalahan "Unable to find root device" setelah reboot
Kemungkinan besar initramfs menjadi rusak selama pembaruan kernel (penggunaan opsi --overwrite pada pacman yang tidak tepat bisa menjadi penyebabnya). Ada dua pilihan; pertama, coba entri Fallback.
Tab saat menu boot loader muncul (untuk Syslinux) atau e (untuk GRUB atau systemd-boot), ganti namanya menjadi initramfs-linux-fallback.img dan tekan Enter atau b (tergantung pada boot loader Anda) untuk melakukan booting dengan parameter baru.Setelah sistem menyala, jalankan perintah ini (untuk kernel linux bawaan) baik dari konsol maupun dari terminal untuk membangun ulang citra (image) initramfs:
# mkinitcpio -p linux
Jika hal itu tidak berhasil, gunakan rilis Arch terbaru (CD/DVD atau USB stick), lalu kaitkan partisi root dan boot Anda masing-masing ke /mnt dan /mnt/boot. Kemudian lakukan chroot menggunakan arch-chroot:
# arch-chroot /mnt # pacman -Syu mkinitcpio systemd linux
- Jika Anda tidak memiliki rilis terbaru atau jika Anda hanya memiliki distribusi Linux "live" lainnya, Anda dapat melakukan chroot menggunakan cara lama. Tentunya, akan ada lebih banyak pengetikan daripada sekadar menjalankan skrip
arch-chroot. - Jika
pacmangagal dengan pesanCould not resolve host, silakan periksa koneksi internet Anda. - Jika Anda tidak dapat masuk ke lingkungan arch-chroot atau chroot tetapi perlu menginstal ulang paket, Anda dapat menggunakan perintah
pacman --sysroot /mnt -Syu foo baruntuk menggunakanpacmanpada partisi root Anda.
Menginstal ulang kernel (paket linux) secara otomatis akan menghasilkan ulang citra initramfs dengan mkinitcpio -p linux. Tidak perlu melakukannya secara terpisah.
Setelah itu, disarankan agar Anda menjalankan exit, umount /mnt/{boot,} dan reboot.
Kesalahan "Warning: current locale is invalid; using default "C" locale"
Seperti yang dinyatakan dalam pesan kesalahan tersebut, lokal (locale) Anda tidak dikonfigurasi dengan benar. Lihat Locale.
Pesan peringatan lokal yang hilang
Ketika file lokal sengaja dihapus oleh alat seperti bleachbit atau localepurgeAUR, pacman mungkin mengeluarkan peringatan tentang lokal yang hilang selama pembaruan paket.
Untuk menyembunyikan peringatan ini, Anda dapat menonaktifkan opsi CheckSpace di pacman.conf dengan menjadikannya komentar. Perlu diingat bahwa menonaktifkan CheckSpace akan mematikan fungsi pemeriksaan ruang disk untuk semua instalasi paket, jadi gunakan solusi ini hanya jika Anda memiliki cara alternatif untuk memantau ruang disk.
pacman tidak mematuhi pengaturan proksi
Pastikan variabel lingkungan yang relevan ($http_proxy, $ftp_proxy dll.) telah diatur. Jika Anda menggunakan pacman dengan sudo, Anda perlu mengonfigurasi sudo untuk meneruskan variabel lingkungan ini ke pacman. Selain itu, pastikan konfigurasi dirmngr memiliki honor-http-proxy di dalam /etc/pacman.d/gnupg/dirmngr.conf agar mematuhi proksi saat menyegarkan kunci.
Bagaimana cara menginstal ulang semua paket, dengan tetap mempertahankan informasi apakah sesuatu diinstal secara eksplisit atau sebagai dependensi?
Untuk menginstal ulang semua paket asli (native): pacman -Qnq | pacman -S - atau pacman -S $(pacman -Qnq) (opsi -S mempertahankan alasan instalasi secara default).
Anda kemudian perlu menginstal ulang semua paket asing (foreign), yang dapat didaftar dengan pacman -Qmq.
Kesalahan "Cannot open shared object file"
Tampaknya transaksi pacman sebelumnya telah menghapus atau merusak pustaka bersama (shared libraries) yang dibutuhkan oleh pacman itu sendiri.
Untuk memulihkan kondisi ini, Anda perlu mengekstrak pustaka yang dibutuhkan ke sistem file Anda secara manual. Pertama, cari paket mana yang berisi pustaka yang hilang tersebut, lalu temukan paketnya di cache pacman (/var/cache/pacman/pkg/). Ekstrak pustaka bersama yang dibutuhkan ke sistem file. Hal ini akan memungkinkan pacman untuk berjalan kembali.
Sekarang Anda perlu menginstal ulang paket yang rusak tersebut. Perhatikan bahwa Anda perlu menggunakan bendera --overwrite karena Anda baru saja mengekstrak file sistem secara manual dan pacman tidak mengetahuinya. pacman akan mengganti file pustaka bersama tersebut dengan yang berasal dari paket secara benar.
Selesai. Perbarui sisa sistem lainnya.
Pengunduhan paket membeku (freeze)
Beberapa masalah telah dilaporkan terkait gangguan jaringan yang mencegah pacman memperbarui/menyinkronkan repositori. [4] [5] Saat menginstal Arch Linux secara native, masalah ini telah diselesaikan dengan mengganti pengunduh file bawaan pacman dengan alternatif lain (lihat Improve pacman performance untuk rincian lebih lanjut). Saat menginstal Arch Linux sebagai OS tamu di VirtualBox, masalah ini juga telah diatasi dengan menggunakan Host interface alih-alih NAT pada properti mesin.
Gagal mengambil file 'core.db' dari mirror
Jika Anda menerima pesan kesalahan ini padahal mirrors sudah benar, cobalah mengatur nama server (name server) yang berbeda.
error: 'local-package.pkg.tar': permission denied
Jika Anda ingin menginstal paket pada pemasangan sshfs menggunakan pacman -U dan menerima kesalahan ini, pindahkan paket tersebut ke direktori lokal dan coba instal kembali.
error: could not determine cachedir mount point /var/cache/pacman/pkg
Saat mengeksekusi, misalnya, pacman -Syu di dalam lingkungan chroot, terjadi kesalahan:
error: could not determine cachedir mount point /var/cache/pacman/pkg error: failed to commit transaction (not enough free disk space)
Hal ini sering kali disebabkan karena direktori chroot bukanlah sebuah mountpoint saat chroot dimasuki. Lihat catatan pada Install Arch Linux from existing Linux#Downloading basic tools untuk solusinya, dan arch-chroot(8) untuk penjelasan serta contoh penggunaan bind mounting guna menjadikan direktori chroot sebagai mountpoint.
error: GPGME error: No data
Jika Anda tidak dapat memperbarui paket dan menerima kesalahan ini, cobalah rm -r /var/lib/pacman/sync/ sebelum mencoba memperbarui kembali.
Jika menghapus file sinkronisasi tidak membantu, periksa apakah file sinkronisasi tersebut merupakan gzip compressed data menggunakan file /var/lib/pacman/sync/* sebelum mencoba memperbarui. Router atau proksi mungkin merusak unduhan tersebut. Kerusakan tersebut kemungkinan bertipe HTML.
Jika file sinkronisasi memiliki tipe yang benar, mungkin ada masalah dengan server mirror. Cari server mirror yang sedang digunakan dengan pacman-conf -r core dan pacman-conf -r extra. Tempelkan URL pertama yang dikembalikan ke peramban dan periksa apakah daftar file ditampilkan. Jika mirror mengembalikan kesalahan, berikan komentar (nonaktifkan) pada mirror tersebut di /etc/pacman.d/mirrorlist. Anda dapat mencoba memperbarui atau mengurutkan ulang mirrors.
error: GPGME error: General error dan ":: File /var/cache/pacman/pkg/<package>.pkg.tar.zst is corrupted (invalid or corrupted package (PGP signature)).
Jika kesalahan ini terjadi dan Anda, misalnya, sama sekali tidak dapat memperbarui sistem atau paket apa pun, ada kemungkinan Anda telah mengatur DISPLAY ke nilai kosong, yang tampaknya merusak alur GPG.
Dalam kasus ini, melakukan unset DISPLAY atau mengaturnya ke nilai sembarang kemungkinan besar akan memungkinkan pembaruan kembali, jika opsi lain di atas belum berhasil.
Lihat kiriman ini untuk rincian lebih lanjut.
Menginstal ulang paket yang rusak atau tidak sinkron
Seseorang dapat menggunakan pacman -Qk $pkg untuk memeriksa apakah file terinstal dari paket $pkg sesuai dengan file dari versi basis datanya. Untuk beberapa paket sekaligus, seseorang dapat menggunakan loop berikut untuk menginstal ulang semua paket yang memiliki file yang hilang:
# LC_ALL=C.UTF-8 pacman -Qk 2>/dev/null | grep -v ' 0 missing files' | cut -d: -f1 |
while read -r package; do
pacman -S "$package" --noconfirm
done
Misalkan basis data lokal Anda yang terletak di /var/lib/pacman lebih mutakhir dibandingkan dengan paket yang terinstal di sistem file / (misalnya, karena adanya rollback parsial), maka metode ini adalah cara yang tepat untuk menyinkronkan ulang sistem file root dengan basis data lokal.