ทำไมแพ็คเกจ Emacs นี้ถึงเป็นรุ่นที่ 46.1? 26 เป็นเวอร์ชันหลักที่เป็นไปได้สูงสุดในปัจจุบัน


11

ฉันได้สร้าง emacs ของตัวเองเพราะฉันต้องการแก้ไขปัญหาบางอย่างในนั้นและรับการแก้ไขข้อบกพร่องต้นน้ำ อย่างไรก็ตาม Ubuntu จะทำการลบ emac ที่สร้างขึ้นเองโดยอัตโนมัติและฉันต้องทำการสร้างใหม่และติดตั้งใหม่

นี่คือผลลัพธ์ของapt-cache policy emacsฉันเมื่อฉันเข้านอนเมื่อคืน:

~/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

นี่คือเมื่อฉันตื่นนอน:

~/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

ทำไมแพ็คเกจนี้ถึงได้ถูกอัพเกรดเป็น 46 แทนที่จะเป็น 24 หรือ 25 26 เป็นเวอร์ชัน emacs หลักที่สูงที่สุดที่คุณสามารถรับได้ในปัจจุบัน

ฉันเห็นว่านี่เป็น meta-package: https://packages.debian.org/source/jessie/emacs-defaults

ทำไม Ubuntu จึงอัพเดตซอฟต์แวร์โดยไม่ถาม

คำถามหลัก: ฉันควรทำอย่างไร - กำหนดหมายเลขรุ่นของฉันให้สูงกว่า 46 เพื่อทำให้มันติดอยู่?

ดูเหมือนว่าจะเป็นการแฮ็คที่น่ากลัวหรืออาจเป็นวิธีที่ใช้ได้


2
จากรายการเปลี่ยนแปลง : "ตั้งค่าเวอร์ชันเริ่มต้นสูงกว่าแพ็คเกจไบนารี emacs ใด ๆ ที่มีอยู่"
muru

มันทำให้ฉันเศร้า : /
Aaron Hall

คำตอบ:


15

มีปัญหาและคำถามมากมายที่นี่ดังนั้นฉันจะสั้น แต่พยายามครอบคลุมทั้งหมด

  • emacsเป็นเพียง meta-package ที่ชี้ไปที่เวอร์ชันล่าสุดของemacs...Ubuntu (ปัจจุบันemacs24) "46.1" เป็นเพียงรุ่นแพคเกจซึ่งมีเจตนาสูงเพื่อแทนที่แพ็คเกจ emacs รุ่นเก่า ดูapt show emacsข้อมูลเพิ่มเติมอีกเล็กน้อย

  • คุณกำลังเอาชนะemacsแพ็กเกจนั้นด้วยแพ็คเกจหมายเลขเวอร์ชันต่ำกว่า Ubuntu จัดลำดับความสำคัญของรุ่นแพ็คเกจที่ติดตั้งตามหมายเลขเวอร์ชัน สูงสุดจะเป็นสิ่งที่ได้รับการติดตั้ง (เมื่อติดตั้งหรืออัปเกรด) ดังนั้นคุณจึงถูก guzzumped อย่างต่อเนื่อง

    คุณสามารถเห็นสิ่งนี้ในapt-cache policy emacsผลลัพธ์ ผู้สมัครเป็นรุ่นที่สูงกว่า

  • คุณสามารถหลีกเลี่ยงการจัดลำดับความสำคัญด้วยการปักหมุดหรือ fudging หมายเลขรุ่นของคุณ (บางอย่างที่สูงกว่า 46.1) แต่นั่นก็ไม่สนใจปัญหา (และอาจปล่อยให้emacs24แพคเกจ)

  • ตัวเลือกที่ดีที่สุดของคุณคือการลบemacsแพ็กเกจและเพียงแค่สร้างและติดตั้งemacs25หรือ emacs26แพ็กเกจแทน คุณยังสามารถสร้างเมตาแพ็คเกจ emacs ที่ขึ้นอยู่กับแพ็คเกจเวอร์ชั่นชื่อของคุณ แต่นั่นก็เป็นแค่เรื่องไร้สาระ ฉันจะไม่ทำอย่างนั้นถ้าคุณวางแผนที่จะแจกจ่าย

  • เกี่ยวกับอูบุนตูที่ทำสิ่งต่าง ๆ โดยไม่มีการ "ไม่ขอ" ให้ตรวจสอบเพื่อดูว่ามีการเปิดการอัพเดตอัตโนมัติหรือไม่ การใช้งานล่าสุดนั้นเป็นพฤติกรรมเริ่มต้นดังนั้นฉันคิดว่านี่เป็นกรณีของ "ไม่เข้าใจว่า Ubuntu ทำอะไร" มากกว่าจะเป็นผีในเครื่องหรือแย่กว่านั้น

  • และสำหรับ "ทำไมต้องเป็นรุ่น 24 ไม่ใช่ 25 หรือ 26?" Ubuntu และ Debian ที่อยู่ด้านล่างนั้นมีจุดมุ่งหมายเพื่อให้มีเสถียรภาพและทดสอบซอฟต์แวร์เวอร์ชัน 26 ยังอยู่ในการพัฒนาและ 25 ไม่ออกมาจนถึงเดือนกันยายน 2559

    นอกจากนี้ Ubuntu ไม่ใช่รุ่นวางจำหน่ายดังนั้นรุ่นของ Ubuntu ที่มี 24 จะยังคงอยู่ในเวอร์ชัน 24 สำหรับอายุการใช้งานของรุ่น Ubuntu เหล่านั้น (เว้นแต่จะมีบางสิ่งที่บ้าคลั่งเกิดขึ้นจริง) แพตช์รักษาความปลอดภัยจะถูก backported และนำไปใช้ถ้าจำเป็น แต่มันจะยังคงเป็น 24


ฉันไม่เคยถาม "ทำไมรุ่น 24" (ฉันคิดว่าคำตอบนั้นชัดเจน) คำของฉันคือ "ทำไมรุ่นนี้" ถึง 46 แต่เนื่องจากซ้ำซ้อนและชัดเจนน้อยกว่าคำถามก่อนหน้านี้ฉันจึงลบออก อย่างไรก็ตามฉันเปลี่ยนชื่อเป็น emacs26 เพื่อตรวจสอบการติดตั้ง - ฉันอาจโพสต์ความละเอียดในภายหลัง บวกหนึ่ง. และขอบคุณ
Aaron Hall

@Oli (+1) เกี่ยวกับประเด็นสุดท้ายของคุณมีข้อโต้แย้งที่ดีหรือไม่ที่จะไม่อัพเกรด Emacs นอกเหนือจากรุ่นที่มาถึงด้วยระบบปฏิบัติการ มีปัญหาความมั่นคงที่รู้จักหรือปัญหาอื่น ๆ ? ฉันกำลังทำงานบน Ubuntu 16.04 LTS และต้องการย้ายไปเป็นรุ่น Emacs 25.1
n1k31t4

99 จะเป็นหมายเลขรุ่นที่ดีกว่า
Thorbjørn Ravn Andersen

0

ทำไม Ubuntu จึงอัพเดตซอฟต์แวร์โดยไม่ถาม

ฉันคิดว่าอาจเป็นเพราะนโยบายการอัปเดตของคุณใน Update Manager (เมนูแก้ไข) ฉันแนะนำตัวเลือกตรงกลาง: ปรับความเสถียรและความปลอดภัยให้เหมาะสม ตัวเลือกสุดท้ายจะ "อัปเดตทุกสิ่งเสมอ" - ซึ่งคุณไม่ต้องการ

นอกจากนี้คุณยังสามารถขึ้นบัญชีดำแพ็คเกจ "emacs-defaults" ในการแก้ไข> การตั้งค่า> แพคเกจที่ถูกขึ้นบัญชีดำ (แพ็คเกจที่ไม่ติด AKA)


0

ติดตามคำตอบของ @ Oli ต่อไปนี้เป็นวิธีที่คุณจะทำ:

ลบแพ็คเกจ emacs และเพียงสร้างและติดตั้งแพ็คเกจ emacs25 หรือ emacs26 แทน

  1. ค้นหาไฟล์ emacs.deb ของคุณ สำหรับฉันมันอยู่ในโฟลเดอร์รูทซอร์สของ emacs และตั้งชื่อemacs_25.1-1_amd64.deb
  2. สร้างไดเรกทอรีเพื่อเก็บแพ็คเกจ debian ใหม่ที่คุณจะสร้าง: $ mkdir emacs-rename
  3. ยกเลิกการเก็บถาวรแพ็กเกจ debian ไปยังไดเร็กทอรี: $ ar -x emacs_25.1-1_amd64.deb emacs-rename/
  4. ไปที่ไดเรกทอรี emacs-rename: $ cd emacs-rename
  5. เพิ่มเติมแยก control.tar.gz และ data.tar.xz: $ tar -xzf control.tar.gzและ$ tar -xf data.tar.xz
  6. แก้ไขcontrolไฟล์ที่เป็นผลลัพธ์ด้วยนาโน (เนื่องจากคุณยังไม่มี emacs;) - $ nano controlและเปลี่ยนPackage: emacsเป็นPackage: emacs25(หรือ 26, 27 เป็นต้น)
  7. สร้างไดเรกทอรี DEBIAN ภายใน emacs-rename: $ mkdir DEBIANและคัดลอกไฟล์ควบคุมที่นั่น:$ cp control DEBIAN/
  8. ขึ้นไปยังไดเร็กกลับไปที่ราก emacs แหล่งที่มา ( $ cd ..) $ dpkg --build emacs-renameและเรียกใช้ อาจใช้เวลาสักครู่
  9. ตอนนี้คุณควรมีแพ็คเกจ emacs-rename.deb ไม่ต้องกังวลว่าจะไม่เป็นไปตามโครงสร้างการตั้งชื่อแพ็คเกจเดเบียนที่เหมาะสมมันเป็นเพียงการใช้งาน ติดตั้งด้วย$ sudo dpkg -i emacs-rename.pkg
  10. หากทุกอย่างทำงานคุณควรเห็น:

    กำลังเตรียมที่จะแกะ emacs-rename.deb ... กำลัง
    แกะ emacs25 (25.1-1) ... กำลัง
    ตั้งค่า emacs25 (25.1-1) ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.