Cân nhắc kỹ thuật cho người bảo trì gói không sử dụng trình quản lý gói Emacs?


10

Tôi nhận thấy một số nhà bảo trì gói đáng chú ý đang chọn không sử dụng hệ thống quản lý gói Emacs (ESS?) Hoặc phàn nàn về những hạn chế của nó (Helm).

Trích dẫn từ Helm 's README.md :

CẢNH BÁO : Do một khái niệm xấu về gói.el chịu trách nhiệm tìm nạp các tệp helm và biên dịch chúng, người dùng hầu hết đều gặp lỗi khi nâng cấp từ melpa và gói danh sách. Để tránh điều này, Async đã được thêm vào dưới dạng phụ thuộc vào helm để buộc gói.el biên dịch các tệp của nó trong một môi trường sạch. Mọi người cài đặt từ git và sử dụng tệp make sẽ không gặp phải vấn đề này và không cần Async mặc dù được khuyến nghị vì nó khắc phục cài đặt tất cả các gói khác mà bạn có thể cài đặt với gói.el từ (m) elpa. Xem FAQ để biết thêm thông tin.

Hệ thống quản lý gói hiện tại có những hạn chế kỹ thuật chính xác nào mà chúng có thể ám chỉ, và tại sao các gói cần sử dụng asyncnhư một phụ thuộc?


1
Câu hỏi này nên được đóng lại vì quá rộng cho trang web này, tôi nghĩ vậy. Nó là tốt hơn nhằm vào một diễn đàn thảo luận. Hãy thử help-gnu-emacs@gnu.org hoặc emacs-devel@gnu.org hoặc Emacs reddit hoặc một số thứ như vậy. " Chính xác thì vấn đề là gì? " Giả sử có một vấn đề như vậy và hỏi những vấn đề có thể xảy ra đối với bất kỳ gói hàng nào (hoặc bất kỳ nhà bảo trì gói nào) là quá rộng.
vẽ

2
ESS được lưu trữ trên Melpa: melpa.org/#/ess , có thể đó chỉ là một tài liệu. Tôi biết nhiều dự án, thường có thể cài đặt thông qua trình quản lý gói hệ thống, nhưng chọn không đề cập đến tùy chọn đó mà không có lý do thực sự (có thể giả sử rằng nếu bạn đã tải xuống các nguồn / nhị phân từ trang web, thì bạn phải có lý do để làm điều đó). Tôi không biết Helm có vấn đề gì.
wvxvw

Tiêu đề của bạn đọc một chút kỳ lạ với tôi. Ý của bạn là viết "người quản lý" hai lần, hay ý bạn là người bảo trì?
Malabarba

1
Viết như một nhà phát triển ESS, hãy cho chúng tôi biết làm thế nào chúng ta có thể cải thiện vấn đề - như những người khác đã nhận xét, ESS nằm trong MELPA.
Stephen Eglen 18/07/2015

Câu trả lời:


19

Vấn đề bạn đang đề cập có lẽ là khi bạn nâng cấp gói từ trong phiên Emacs nơi gói đó đã được sử dụng, phiên bản cũ của gói đôi khi sẽ can thiệp trong quá trình biên dịch phiên bản mới, dẫn đến các tệp bị sai.

Có một sửa chữa dự kiến ​​cho điều đó trong Emacs-25, nhưng AFAIK vấn đề vẫn còn tồn tại trong 24.5.


9

Với ngoại lệ đáng chú ý là ProofGeneral, tôi không biết về bất kỳ gói Emacs chính nào không có sẵn trong một số kho lưu trữ ELPA. Cụ thể, ESS có trên MELPA kể từ ba năm . Và PG là một câu chuyện riêng, và chắc chắn không đại diện cho toàn bộ hệ sinh thái Emacs.

ELPA chắc chắn có những sai sót của nó, nhưng đối với phần lớn các gói, nó hoạt động rất tốt, ngay cả đối với các gói lớn như Magit. Helm là gói duy nhất mà tôi thấy phàn nàn về ELPA. Tôi không chắc chính xác họ phàn nàn về điều gì, nhưng tôi đoán đó là về việc biên dịch:

Trong quá trình nâng cấp, Emacs biên dịch phiên bản mới của gói trong môi trường mà phiên bản cũ vẫn được tải. Thông thường, điều này không gây hại gì cả, nhưng nó có thể phá vỡ các macro trong một số tình huống nhất định. Emacs sẽ biên dịch phiên bản mới so với thi hành vĩ mô, có thể gây vỡ nếu mã mới dựa trên một sự thay đổi cụ thể trong macro.

Là một người duy trì gói bản thân, tôi khá không đồng ý với tuyên bố này, mặc dù. Tôi có xu hướng đổ lỗi cho Helm hơn là ELPA hay Emacs. Theo tôi, tuyên bố này là cường điệu, và vấn đề nhưng là một triệu chứng của các macro sử dụng quá mức và ab.

Nếu bạn sử dụng nhiều macro và thậm chí tệ hơn nữa, hãy đặt mã không tầm thường vào phần thân của macro, bạn chỉ cần nhận thức được ý nghĩa của việc biên dịch byte này và bạn phải cẩn thận để duy trì khả năng tương thích ngược với các macro của riêng bạn trong gói của bạn. Không làm như vậy, và thay vào đó đổ lỗi cho xung quanh, không phải là một điều rất tốt để làm. 2 xu của tôi.


2
FWIW, tôi không đồng ý với sự không đồng ý của bạn: mặc dù tôi đồng ý rằng tốt hơn hết là cố gắng tránh lạm dụng macro, các vấn đề biên dịch là có thật và có thể ảnh hưởng đến nhiều hơn các lệnh gọi macro (ví dụ như chúng có thể được kích hoạt bởi các hàm không thể điều khiển được hoặc bởi các hàm được gọi trong quá trình mở rộng vĩ mô). Và khi bạn bị vấn đề này cắn, các tệp .elc của bạn không chính xác và có thể hoạt động sai theo mọi cách thú vị, do đó khó có thể chẩn đoán sự cố và khắc phục sự cố yêu cầu gỡ cài đặt + cài đặt lại gói (khi bạn đã tìm ra vấn đề và gói nào cần được cài đặt lại.
Stefan

1
@Stefan Tôi không phủ nhận các vấn đề biên dịch. Tôi đã tự cắn mình. Nhưng tôi không thích thái độ tỏa sáng trong tuyên bố này và thiếu cái mà tôi gọi là "quan điểm cân bằng". Helm bị cắn rất tệ vì họ cũng đã phạm nhiều sai lầm, nhưng tuyên bố của họ không thừa nhận điều đó. Theo ý kiến ​​khiêm tốn của tôi, các chức năng gọi trong cơ thể vĩ mô là một sai lầm như vậy. Macro chỉ dành cho cú pháp, nhưng không bao giờ cho chức năng. Nhưng tôi hiểu rằng đây dường như là một chủ đề mà cộng đồng Emacs Lisp có nhiều ý kiến ​​khác nhau.
lunaryorn

ropemacs , jdee-emacstrích dẫn là những gói đáng chú ý không có trên bất kỳ kho lưu trữ ELPA nào (tùy thuộc vào tiêu chí của bạn cho các gói chính). Phần lớn các gói là, mặc dù.
Wilfred Hughes
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.