Saya mengalami masalah dengan Nautilus yang saya tidak menemukan solusi apa pun selain mengunduh kode sumber, membuat beberapa perubahan dan mengkompilasinya sendiri. Jadi sekarang saya memiliki dua versi nautilus, versi resmi dari repositori dan milik saya dengan beberapa perubahan. Saya ingin menyimpan keduanya.
Apa cara yang baik untuk memberi tahu aplikasi agar menggunakan Nautilus versi kompilasi saya sendiri ketika memulai Nautilus dari dalam aplikasi? (mis. membuka folder Unduhan dengan firefox)
Saya menemukan panggilan firefox /usr/bin/nautilus
sehingga saya bisa mengganti ini dengan symlink ke program saya sendiri. Namun, saya percaya symlink ini akan ditimpa segera setelah saya menginstal pembaruan untuk Nautilus. Apakah ada hal lain yang bisa saya lakukan?
/usr/local/bin
tidak berhasil? yaitu apakah firefox mencari$PATH
dan menemukan versinya di/usr/bin
, atau apakah itu (atau xdg-open stuff Anda) hard-code/usr/bin/nautilus
? Menginstal versi Anda sendiri dari sesuatu di / usr / local biasanya berfungsi./usr/bin/nautilus
entah bagaimana sepertinya ada kode-kerasnya. Jika itu dihapus, firefox tidak melakukan apa-apa lagi ketika saya mencoba membuka folder Unduhan, walaupun ada symlink ke versi nautilus saya sendiri di/usr/local/bin
.$PATH
Variabel saya adalah/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
strace -f -efile,execve -o firefox_syscalls.txt firefox
untuk melihat apa yang dilakukan si pria. Jika Anda mencari lognautilus
, itu mungkin menunjukkan sesuatu kepada Anda. (Itu-e
memfilter panggilan sistem untukexecve
dan mengarsipkan hal-hal buka / tutup / pathname, jika tidak akan menjadi banjirfutex
dan soket baca / tulis untuk X11).Jawaban:
Saya akan memperbaiki versi paket Nautilus, yang mungkin tampak menakutkan pada awalnya tetapi cukup mudah - meskipun tidak selamat dari peningkatan paket sehingga membutuhkan disiplin. (Lihat jawaban Wouter untuk detailnya.)
Pendekatan paling sederhana dalam situasi Anda adalah menambahkan pengalihan:
Ini akan menginstruksikan
dpkg
untuk mengubah nama/usr/bin/nautilus
untuk/usr/bin/nautilus.original
setiap kali sebuah paket mencoba untuk menginstalnya. Kemudian Anda dapat menambahkan symlink Anda sendiri, dan itu akan tetap tak tersentuh bahkan ketika paket Nautilus ditingkatkan. Untuk menghapusnya, jalankanAnda dapat menerapkan teknik yang sama untuk file lain yang perlu Anda ganti dengan cara yang serupa, terlepas dari beberapa file konfigurasi yang tidak ditangani dengan benar ketika dialihkan.
sumber
Solusi jangka panjang terbaik adalah dengan menghubungi pengembang nautilus dan bekerja dengannya di patch ke kode nautilus resmi, sehingga setelah versi terbaru nautilus mengenai sistem Anda, Anda tidak perlu berurusan dengan ini lagi.
Dengan asumsi Anda telah melakukan itu, sampai perubahan itu menetes ke sistem Anda, Anda masih harus berurusan dengan masalah keinginan untuk menggunakan versi nautilus yang telah Anda tempel sendiri.
Cara termudah adalah dengan membuat paket nautilus dengan tambalan Anda yang sudah diterapkan, dan menginstalnya sedemikian rupa sehingga tidak akan ditingkatkan secara otomatis.
Di Debian (yang menurut tag pada pertanyaan ini yang Anda gunakan), cara termudah untuk mencapai itu adalah:
Ini membangun paket baru dengan tambalan Anda, memasangnya, dan menandainya dalam dpkg sehingga tidak akan diperbarui secara otomatis lagi.
Lain kali versi yang diperbarui dari paket akan dirilis, apt akan memberi tahu Anda bahwa ada versi yang diperbarui, tetapi sedang ditahan. Anda kemudian perlu melakukan hal di atas lagi.
sumber
apt-mark hold packagename
adalah cara modern memegang paket. (Saya bahkan membuat skrip sendiridpkg-hold
/ digunakan alih-alih metode yang telah mereka gunakan selama bertahun-tahun. Skrip tersebut usang karena apt-mark tetapi saya masih memiliki skrip lain yang memanggilnya, dan menghapusnya mungkin mematahkan skrip yang ditulis oleh pengguna lain dari paket dlocate)dpkg-unhold
dlocate
apt-mark
dpkg --set-selections
man apt-mark
mengatakanThe command is only a wrapper around dpkg --set-selections and the state is therefore maintained by dpkg(1) and not affected by the --file option
, jadi saya pikir itu hal kecil ;-)