Mengapa paket Emacs ini diversi pada 46.1? 26 adalah versi utama setinggi mungkin hari ini

11

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 emacsketika 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?

Aaron Hall
sumber
2
Dari changelog : "Tetapkan versi awal lebih tinggi daripada paket biner emacs yang ada."
muru
ini membuatku sedih. : /
Aaron Hall

Jawaban:

15

Ada banyak masalah dan pertanyaan di sini, jadi saya akan singkat tetapi mencoba untuk membahas semuanya.

  • emacshanyalah sebuah paket meta yang menunjuk ke versi terbaru emacs...di Ubuntu (saat ini emacs24). "46.1" hanyalah versi paket, sengaja tinggi untuk menggantikan paket emacs lama. Lihat apt show emacssedikit info lebih lanjut.

  • Anda mengganti emacspaket 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 emacsoutput. 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 emacs24paket di tempat).

  • Pilihan terbaik Anda adalah menghapus emacspaket dan hanya membangun dan menginstal paket emacs25atau emacs26sebagai 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.

Oli
sumber
Saya tidak pernah bertanya "mengapa versi 24" (saya pikir jawabannya jelas) kata-kata saya adalah "mengapa versi ini" mengacu pada 46, tetapi karena itu berlebihan dan kurang jelas dari pertanyaan sebelumnya, saya menghapusnya. Bagaimanapun, saya pergi dengan mengganti nama emacs26 dalam sebuah argumen untuk checkinstall - saya mungkin akan memposting resolusi nanti. Tambah satu. Dan terima kasih
Aaron Hall
@Oli (+1) tentang poin terakhir Anda, adakah argumen yang bagus untuk tidak memutakhirkan Emacs di luar versi yang datang dengan OS? Apakah ada masalah stabilitas yang diketahui atau masalah lain? Saya bekerja di Ubuntu 16.04 LTS dan ingin pindah ke versi Emacs 25.1.
n1k31t4
99 akan menjadi nomor versi yang lebih baik.
Thorbjørn Ravn Andersen
0

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).

Christopher J Poor
sumber
0

Mengikuti jawaban @ Oli, begini caranya:

menghapus paket emacs dan hanya membangun dan menginstal paket emacs25 atau emacs26.

  1. Temukan file emacs.deb Anda. Bagi saya, itu ada di folder root sumber emacs saya dan diberi namaemacs_25.1-1_amd64.deb
  2. Buat direktori untuk menampung paket debian baru yang akan Anda buat: $ mkdir emacs-rename
  3. Batalkan pengarsipan paket debian ke direktori: $ ar -x emacs_25.1-1_amd64.deb emacs-rename/
  4. Pergilah ke direktori emacs-rename: $ cd emacs-rename
  5. Ekstrak lebih lanjut control.tar.gz dan data.tar.xz: $ tar -xzf control.tar.gzdan$ tar -xf data.tar.xz
  6. Edit controlfile yang dihasilkan dengan nano (karena Anda belum memiliki emacs;) - $ nano controldan ubah Package: emacske Package: emacs25(atau 26, 27 dll)
  7. Buat direktori DEBIAN di dalam emacs-rename: $ mkdir DEBIANdan salin file kontrol di sana:$ cp control DEBIAN/
  8. Buka direktori, kembali ke root sumber emacs ( $ cd ..) dan jalankan $ dpkg --build emacs-rename. Ini mungkin memerlukan beberapa saat.
  9. Anda sekarang harus memiliki paket emacs-rename.deb. Jangan khawatir itu tidak mengikuti struktur penamaan paket debian yang tepat, itu hanya untuk Anda gunakan. Instal dengan$ sudo dpkg -i emacs-rename.pkg
  10. Jika semuanya berfungsi, Anda harus melihat:

    Bersiap untuk membongkar emacs-rename.deb ...
    Membongkar emacs25 (25.1-1) ...
    Menyiapkan emacs25 (25.1-1) ...

audiodude
sumber