Ketika brew link terhenti karena sebuah jalur (path) sudah ada, pertama-tama identifikasi siapa pemilik jalur tersebut. Jika itu adalah symlink dari formula Homebrew lain, putuskan tautan (unlink) formula tersebut; jika itu adalah file yang tidak terkait, periksa simulasi (dry run) Homebrew sebelum mempertimbangkan penimpaan (overwrite). Adanya konflik bukan berarti formula baru gagal diinstal: formula tersebut mungkin sudah ada di keg miliknya, menunggu tautan yang aman ke awalan (prefix) bersama Homebrew. Panduan brew Homebrew

Arti dari pesan konflik tersebut

Formula Homebrew diinstal dalam keg berversi, dan brew link membuat symlink ke direktori bersama seperti bin, lib, dan include. Kesalahan ini biasanya menyebutkan jalur target dan mungkin menyatakan bahwa jalur tersebut milik formula lain atau sudah ada. Dokumentasi Homebrew menjelaskan bahwa brew link berfungsi menautkan file yang diinstal ke dalam prefix-nya, sedangkan brew unlink menghapus tautan suatu formula dari prefix tersebut. Panduan brew Homebrew

Langkah aman berikutnya bergantung pada kepemilikan. Mengganti symlink Homebrew dapat mengubah formula mana yang menyediakan suatu perintah atau library. Mengganti file yang tidak terkait dapat memengaruhi perangkat lunak di luar Homebrew. Baca pesan kesalahan selengkapnya dan jangan perlakukan opsi --overwrite sebagai tombol perbaikan serbaguna.

Periksa formula dan jalur yang bertabrakan

Gunakan nama formula yang ditampilkan pada perintah link yang gagal sebagai pengganti FORMULA. brew info dapat menampilkan detail formula, termasuk apakah formula tersebut berstatus keg-only; brew list merangkum file di dalam keg saat ini. Anda juga dapat meminta prefix aktifnya tanpa perlu menentukan lokasi Homebrew Mac Intel atau Apple silicon secara manual (hard-coding):

brew info FORMULA
brew list FORMULA
brew --prefix FORMULA

Jika pesan kesalahan menyatakan target yang ada merupakan symlink milik formula lain, catat juga nama formula tersebut. Pesan konflik mungkin memberikan saran langsung berupa perintah brew unlink OTHER_FORMULA. Jika target berupa file biasa, tautan dari sebuah cask, atau sesuatu yang pemiliknya tidak jelas, berhentilah sejenak dan selidiki sebelum mengubahnya. Jangan menghapusnya hanya karena Homebrew melaporkan adanya tabrakan jalur.

Menyelesaikan konflik yang dimiliki oleh formula lain

Jika target milik formula yang berbeda dan Anda ingin formula baru menyediakan jalur yang berkonflik tersebut, putuskan tautan (unlink) formula lama, lalu tautkan formula yang diminta:

brew unlink OTHER_FORMULA
brew link FORMULA

Memutuskan tautan akan menghapus symlink formula tersebut dari prefix; tindakan ini tidak menghapus instalasi (uninstall) keg-nya. Formula lama dapat ditautkan kembali nanti jika diperlukan. Dokumentasi Homebrew juga menyebutkan bahwa memutuskan dan menautkan kembali tautan adalah cara untuk menonaktifkan formula untuk sementara waktu. Panduan brew Homebrew

Jika formula lain tersebut masih diperlukan, ingatlah bahwa memutuskan tautannya dapat membuat perintah atau filenya tidak dapat diakses melalui prefix bersama. Hindari memutuskan tautan beberapa paket secara spekulatif. Untuk konflik yang belum jelas apakah itu symlink formula lain atau bukan, lanjutkan dengan dry run dan periksa setiap jalur yang terdaftar.

Pratinjau sebelum menggunakan --overwrite

Opsi --overwrite pada Homebrew akan menghapus file yang sudah ada di prefix-nya saat proses penautan berjalan. Opsi --dry-run menampilkan daftar file yang akan ditautkan atau dihapus tanpa mengubahnya secara langsung. Lakukan pratinjau operasi yang diminta terlebih dahulu:

brew link --overwrite --dry-run FORMULA

Tinjau jalur-jalur tersebut dengan saksama. Jika daftar tersebut mencakup file yang Anda kenali sebagai kebutuhan alat lain, atau apa pun di luar prefix Homebrew yang diharapkan, jangan lanjutkan sampai Anda memahami pemilik dan fungsinya. Jika pratinjau hanya memuat file yang memang ingin Anda ganti, jalankan perintah yang sebenarnya:

brew link --overwrite FORMULA

Perintah ini akan mengubah jalur pada prefix bersama. Pratinjau adalah titik penentuan keputusan; pratinjau itu sendiri tidak menyelesaikan konflik. Panduan brew Homebrew

Jika formula berstatus keg-only

Pesan terpisah mungkin menyatakan bahwa formula tersebut berstatus keg-only dan harus ditautkan dengan --force. Keg-only berarti Homebrew menyimpan formula tersebut di keg-nya sendiri dan tidak menautkannya ke prefix bersama. Homebrew menggunakan pengaturan tersebut untuk menghindari penimpaan (shadowing) perangkat lunak macOS atau konflik dengan formula lain. Periksa brew info FORMULA untuk mengetahui alasannya beserta panduan penggunaannya. FAQ Homebrew

Jangan menambahkan --force hanya karena penautan biasa melaporkan konflik jalur: opsi --force mengizinkan penautan formula keg-only; ini tidak berarti jalur yang berkonflik aman untuk ditimpa. Homebrew menyarankan agar tidak menautkan paksa dependensi keg-only secara global, karena proses build lain yang tidak terkait serta perintah sistem dapat menggunakan dependensi yang berbeda. Untuk build yang memerlukan alat atau library keg-only, Homebrew merekomendasikan penggunaan prefix formulanya khusus untuk build tersebut daripada mengeksposnya secara global. Panduan dependensi keg-only Homebrew

Konfirmasi hasilnya dan ketahui kapan harus berhenti

Setelah menyelesaikan konflik tertentu, periksa status tautan formula dan coba lagi hanya jika perlu:

brew list --versions FORMULA
brew link FORMULA

Jika sudah tertaut, Homebrew mungkin akan melaporkan status tersebut alih-alih membuat tautan baru lagi. Jika penautan masih gagal, gunakan pesan kesalahan baru untuk mengidentifikasi jalur yang tersisa; jangan mengulangi overwrite secara membabi buta. Jika target terbukti tidak dikelola oleh Homebrew, atau dry run menunjukkan file yang tidak dapat Anda ganti dengan aman, biarkan tautan tersebut tidak terselesaikan dan selidiki perangkat lunak pemiliknya terlebih dahulu. Keg tetap merupakan instalasi yang terpisah dari tautannya di prefix, sehingga formula yang terinstal dapat tetap tersedia untuk diagnosis meskipun proses penautan belum selesai.

Sumber