Saya telah membangun emacs saya sendiri karena saya ingin memperbaiki beberapa masalah di dalamnya dan mendapatkan perbaikan bug di hulu. Namun, Ubuntu terus secara otomatis menghapus emacs buatan saya sendiri dan saya harus terus membangun kembali dan menginstalnya kembali.
Inilah hasil saya apt-cache policy emacs
ketika saya pergi tidur tadi malam:
~/emacs$ sudo apt-cache policy emacs
emacs:
Installed: 26.0.50.aaron-1
Candidate: 46.1
Version table:
46.1 500
500 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
500 http://us.archive.ubuntu.com/ubuntu xenial/main i386 Packages
*** 26.0.50.aaron-1 100
100 /var/lib/dpkg/status
Ini dia ketika saya bangun:
~/emacs$ sudo apt-cache policy emacs
[sudo] password for excelsiora:
emacs:
Installed: 46.1
Candidate: 46.1
Version table:
*** 46.1 500
500 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
500 http://us.archive.ubuntu.com/ubuntu xenial/main i386 Packages
100 /var/lib/dpkg/status
Mengapa paket ini diversi pada versi 46 bukannya 24 atau 25? 26 adalah versi emacs utama saat ini tertinggi yang bisa Anda dapatkan.
Saya dapat melihat bahwa ini adalah paket meta: https://packages.debian.org/source/jessie/emacs-defaults
Mengapa Ubuntu memperbarui perangkat lunak tanpa bertanya?
Pertanyaan Utama: Apa yang harus saya lakukan - menetapkan versi paket saya nomor lebih tinggi dari 46 hanya untuk membuatnya tetap?
Itu tampak seperti retasan yang mengerikan, atau mungkin begitulah cara kerjanya?
sumber
Jawaban:
Ada banyak masalah dan pertanyaan di sini, jadi saya akan singkat tetapi mencoba untuk membahas semuanya.
emacs
hanyalah sebuah paket meta yang menunjuk ke versi terbaruemacs...
di Ubuntu (saat iniemacs24
). "46.1" hanyalah versi paket, sengaja tinggi untuk menggantikan paket emacs lama. Lihatapt show emacs
sedikit info lebih lanjut.Anda mengganti
emacs
paket itu dengan paket nomor versi yang lebih rendah. Ubuntu memprioritaskan versi paket yang diinstal oleh nomor versi. Yang tertinggi adalah yang terinstal (saat menginstal atau meningkatkan), maka milik Anda terus-menerus diminum.Anda dapat melihat ini di
apt-cache policy emacs
output. Kandidat adalah versi yang lebih tinggi.Anda dapat mengatasi prioritas dengan menyematkan, atau memalsukan nomor versi Anda (sesuatu yang lebih tinggi dari 46,1) tetapi itu agak mengabaikan masalah (dan mungkin meninggalkan
emacs24
paket di tempat).Pilihan terbaik Anda adalah menghapus
emacs
paket dan hanya membangun dan menginstal paketemacs25
atauemacs26
sebagai gantinya. Anda juga bisa membuat paket meta emacs yang bergantung pada paket versi-nama Anda, tetapi itu hanya kesia-siaan. Saya tidak akan melakukan itu kecuali Anda berencana mendistribusikan.Mengenai Ubuntu melakukan hal-hal tanpa "tanpa meminta", periksa untuk melihat apakah pembaruan otomatis dihidupkan. Mendapatkan yang terbaru tersedia untuk itu adalah perilaku default jadi saya pikir ini lebih merupakan kasus "tidak memahami apa yang dilakukan Ubuntu" daripada hantu di mesin, atau lebih buruk.
Dan untuk "mengapa versi 24, bukan 25 atau 26?", Ubuntu dan Debian di bawahnya keduanya bertujuan untuk versi perangkat lunak yang stabil dan teruji. 26 masih dalam pengembangan dan 25 tidak keluar sampai September 2016.
Selain itu, Ubuntu bukanlah rilis bergulir sehingga versi Ubuntu dengan 24 akan tetap pada versi 24 untuk umur rilis Ubuntu tersebut (kecuali sesuatu yang benar-benar gila terjadi). Patch keamanan akan di-backport dan diterapkan jika perlu tetapi masih 24.
sumber
Mengapa Ubuntu memperbarui perangkat lunak tanpa bertanya?
Saya pikir ini mungkin karena Kebijakan Pembaruan Anda di Pembaruan Manajer (menu Edit). Saya merekomendasikan opsi tengah: Mengoptimalkan stabilitas dan keamanan. Opsi terakhir akan "Selalu perbarui semuanya" - yang tidak Anda inginkan.
Anda juga dapat memasukkan daftar hitam paket "emacs-defaults" di Edit> Preferences> Paket daftar hitam (paket AKA Diabaikan).
sumber
Mengikuti jawaban @ Oli, begini caranya:
emacs_25.1-1_amd64.deb
$ mkdir emacs-rename
$ ar -x emacs_25.1-1_amd64.deb emacs-rename/
$ cd emacs-rename
$ tar -xzf control.tar.gz
dan$ tar -xf data.tar.xz
control
file yang dihasilkan dengan nano (karena Anda belum memiliki emacs;) -$ nano control
dan ubahPackage: emacs
kePackage: emacs25
(atau 26, 27 dll)$ mkdir DEBIAN
dan salin file kontrol di sana:$ cp control DEBIAN/
$ cd ..
) dan jalankan$ dpkg --build emacs-rename
. Ini mungkin memerlukan beberapa saat.$ sudo dpkg -i emacs-rename.pkg
sumber