Tại sao gói Emacs này được phiên bản 46.1? 26 là phiên bản chính cao nhất có thể hiện nay


11

Tôi đã xây dựng các emac của riêng mình vì tôi muốn sửa một số vấn đề trong đó và sửa lỗi ngược dòng. Tuy nhiên, Ubuntu tiếp tục tự động loại bỏ các emacs được xây dựng của riêng tôi và tôi phải tiếp tục xây dựng lại và cài đặt lại nó.

Đây là đầu ra của apt-cache policy emacstôi khi tôi đi ngủ đêm qua:

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

Đây là khi tôi thức dậy:

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

Tại sao gói này được phiên bản ở mức 46 thay vì 24 hoặc 25? 26 là phiên bản emacs lớn nhất hiện tại bạn có thể nhận được.

Tôi có thể thấy rằng đây là gói meta: https://packages.debian.org/source/jessie/emacs-defaults

Tại sao Ubuntu cập nhật phần mềm mà không hỏi?

Câu hỏi chính: Tôi phải làm gì - gán phiên bản gói của tôi một số cao hơn 46 chỉ để làm cho nó dính?

Đó dường như là một vụ hack khủng khiếp, hoặc có thể đó là cách nó hoạt động?


2
Từ thay đổi : "Đặt phiên bản ban đầu cao hơn bất kỳ gói nhị phân emacs hiện có nào."
muru

điều này làm cho tôi buồn. : /
Aaron Hall

Câu trả lời:


15

Có nhiều vấn đề và câu hỏi ở đây, vì vậy tôi sẽ nói ngắn gọn nhưng cố gắng bao quát tất cả.

  • emacschỉ là một gói meta chỉ vào phiên bản mới nhất của emacs...Ubuntu (hiện tại emacs24). "46.1" chỉ là một phiên bản gói, cao có chủ ý để thay thế các gói emacs cũ. Xem apt show emacsđể biết thêm một chút thông tin.

  • Bạn đang ghi đè emacsgói đó với gói số phiên bản thấp hơn. Ubuntu ưu tiên phiên bản gói được cài đặt theo số phiên bản. Cao nhất sẽ là cái được cài đặt (khi cài đặt hoặc nâng cấp), do đó, cái của bạn liên tục bị đánh cắp.

    Bạn có thể thấy điều này trong apt-cache policy emacsđầu ra. Ứng cử viên là phiên bản cao hơn.

  • Bạn có thể làm việc xung quanh các ưu tiên với ghim hoặc làm mờ số phiên bản của bạn (một cái gì đó cao hơn 46.1) nhưng điều đó không bỏ qua vấn đề (và có thể để một emacs24gói tại chỗ).

  • Tùy chọn tốt nhất của bạn là loại bỏ emacsgói và chỉ xây dựng và cài đặt một gói emacs25hoặc emacs26thay thế. Bạn cũng có thể xây dựng gói meta emacs phụ thuộc vào gói phiên bản của bạn, nhưng đó chỉ là một sự phù phiếm. Tôi sẽ không làm điều đó trừ khi bạn có kế hoạch phân phối.

  • Về việc Ubuntu làm công cụ mà không "không hỏi", hãy kiểm tra xem liệu cập nhật tự động có được bật không. Nhận được bản mới nhất có sẵn cho nó là hành vi mặc định, vì vậy tôi nghĩ đây là trường hợp "không hiểu Ubuntu làm gì" hơn là một con ma trong máy, hoặc tệ hơn.

  • Và như "tại sao phiên bản 24, không phải 25 hay 26?", Ubuntu và Debian bên dưới nó đều nhắm đến các phiên bản phần mềm đã được kiểm tra, ổn định. 26 vẫn đang được phát triển và 25 đã không ra mắt cho đến tháng 9 năm 2016.

    Ngoài ra, Ubuntu không phải là phiên bản phát hành nên các phiên bản Ubuntu với 24 sẽ ở phiên bản 24 trong vòng đời của các bản phát hành Ubuntu đó (trừ khi có điều gì đó thực sự điên rồ xảy ra). Các bản vá bảo mật sẽ được nhập và áp dụng nếu cần nhưng nó vẫn là 24.


Tôi chưa bao giờ hỏi "tại sao phiên bản 24" (tôi nghĩ câu trả lời là rõ ràng) những lời của tôi là "tại sao phiên bản này" đề cập đến 46, nhưng vì nó dư thừa và ít rõ ràng hơn câu hỏi trước đó, tôi đã xóa nó. Dù sao, tôi đã đổi tên nó thành emacs26 trong một đối số để kiểm tra cài đặt - có lẽ tôi sẽ đăng một giải pháp sau. Cộng một. Và cảm ơn
Aaron Hall

@Oli (+1) liên quan đến điểm cuối cùng của bạn, có một lý lẽ tốt cho việc không nâng cấp Emacs ngoài phiên bản đi kèm với HĐH không? Có vấn đề ổn định được biết đến hoặc các vấn đề khác? Tôi đang làm việc trên Ubuntu 16.04 LTS và muốn chuyển sang phiên bản Emacs 25.1.
n1k31t4

99 sẽ là một số phiên bản tốt hơn.
Thorbjørn Ravn Andersen

0

Tại sao Ubuntu cập nhật phần mềm mà không hỏi?

Tôi nghĩ rằng điều này có thể là do Chính sách cập nhật của bạn trong Trình quản lý cập nhật (menu Chỉnh sửa). Tôi khuyên bạn nên tùy chọn ở giữa: Tối ưu hóa sự ổn định và bảo mật. Tùy chọn cuối cùng sẽ "Luôn cập nhật mọi thứ" - điều mà bạn không muốn.

Bạn cũng có thể liệt kê danh sách đen gói "emacs-mặc định" trong Chỉnh sửa> Tùy chọn> Gói trong danh sách đen (Gói AKA Bỏ qua).


0

Theo dõi câu trả lời của @ Oli's, đây là cách bạn thực hiện:

loại bỏ gói emacs và chỉ xây dựng và cài đặt gói emacs25 hoặc emacs26 thay thế.

  1. Tìm tập tin emacs.deb của bạn. Đối với tôi, nó nằm trong thư mục gốc nguồn emacs của tôi và được đặt tênemacs_25.1-1_amd64.deb
  2. Tạo một thư mục để giữ gói debian mới mà bạn sẽ tạo: $ mkdir emacs-rename
  3. Hủy lưu trữ gói debian vào thư mục: $ ar -x emacs_25.1-1_amd64.deb emacs-rename/
  4. Đi vào thư mục emacs-rename: $ cd emacs-rename
  5. Trích xuất thêm control.tar.gz và data.tar.xz: $ tar -xzf control.tar.gz$ tar -xf data.tar.xz
  6. Chỉnh sửa controltệp kết quả bằng nano (vì bạn chưa có emacs;) - $ nano controlvà thay đổi Package: emacsthành Package: emacs25(hoặc 26, 27, v.v.)
  7. Tạo một thư mục DEBIAN bên trong emacs-rename: $ mkdir DEBIANvà sao chép tệp điều khiển ở đó:$ cp control DEBIAN/
  8. Đi lên một thư mục, quay lại root nguồn emacs ( $ cd ..) và chạy $ dpkg --build emacs-rename. Nó có thể mất chút thời gian.
  9. Bây giờ bạn sẽ có một gói emacs-rename.deb. Đừng lo lắng rằng nó không tuân theo cấu trúc đặt tên gói debian thích hợp, nó chỉ dành cho bạn sử dụng. Cài đặt nó với$ sudo dpkg -i emacs-rename.pkg
  10. Nếu mọi thứ hoạt động bạn nên xem:

    Chuẩn bị giải nén emacs-rename.deb ...
    Giải nén emacs25 (25.1-1) ...
    Thiết lập emacs25 (25.1-1) ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.