Saya kebanyakan menggunakan paket di FreeBSD, karena kebanyakan dari mereka cocok untuk saya. Namun, beberapa tidak cocok untuk saya, seperti vim
paket, yang tidak termasuk grafis gvim
.
Tidak masalah. Saya dapat menginstal port sebagai gantinya, menggunakan portmaster editors/vim
dan memilih GTK2
opsi. Ini berfungsi dengan baik.
Namun, ketika saya berlari pkg upgrade
setelah beberapa saat, saya disajikan dengan yang berikut:
Reinstalling vim-7.4.110_3 (options changed)
Apa yang menyebabkannya? Saya tidak mengubah opsi apa pun, dan tidak ada versi baru (tidak di port, baik). Apakah ini membandingkan port yang diinstal saya dengan versi jarak jauh tanpa GTK2
?
Tentu saja saya bisa membiarkannya pkg upgrade
bekerja dan menginstal port lagi sesudahnya, tapi ini bodoh. Apa cara yang disarankan untuk memperbarui campuran paket dan porta?
sumber
pkg lock
solusi yang disarankan? Ini bekerja, tetapi saya berharap sesuatu yang sederhana seperti ini dapat ditangani secara otomatis.pkg lock
adalah solusi yang dirancang untuk itu: dari halaman manual: “kunci pkg digunakan untuk mengunci paket terhadap penginstalan ulang, modifikasi, atau penghapusan.”.Jawaban:
Anda perlu mengingatnya
pkg
dan port mendaftarkan perangkat lunak yang diinstal di tempat yang sama (basis data SQLite/var/db/pkg
). Tidak ada sistem yang mencatat informasi tambahan apa pun bahwa peranti lunak tertentu diinstal sebagai paket pra-kompilasi, atau sebagai port. Jadi, sekali perangkat lunak diinstal dengan pendekatan mana pun, alat tidak memiliki cara untuk mengetahui bagaimana itu diinstal.Ketika Anda memilih dukungan GTK2 untuk
editors/vim
port, yang terdaftar dalam paket database. Ketika nanti Anda menjalankanpkg upgrade
,pkg
melihat data paket untukvim
, dan menemukan bahwa dukungan GTK2 telah diaktifkan pada versi yang diinstal, sedangkan itu tidak diaktifkan dalam paket pra-kompilasi.pkg upgrade
melakukan apa yang seharusnya - menemukan paket yang diinstal yang berbeda dari paket pra-kompilasi yang tersedia, dan berusaha untuk memutakhirkannya. Perbedaan tersebut dapat berupa nomor versi, grafik dependensi, opsi waktu kompilasi, dll.Cara yang tepat untuk mencegah
pkg
mempertimbangkan port atau paket (setelah diinstal, tidak ada perbedaan, sejauh menyangkut alat) yang ingin Anda lindungi adalah dengan menggunakanpkg lock
perintah.Atau, jika Anda menemukan diri Anda mengubah opsi pada sejumlah port, Anda dapat mempertimbangkan untuk menginstal
poudriere
dan mengelola repositori paket Anda sendiri. Dibutuhkan sedikit pengaturan, dan berfungsi dengan baik jika host build Anda memiliki kumpulan penyimpanan ZFS, meskipun akan berfungsi jika Anda tidak memiliki ZFS; ini adalah cara yang sangat fleksibel dan nyaman untuk mengelola pembuatan perangkat lunak khusus.sumber