Các trường hợp sử dụng của các trình quản lý gói thay thế vis-à-vis `pack.el` là gì?


14

Lý lịch

Tôi sử dụng emacs hàng ngày, nhưng chủ yếu là để hoàn thành công việc. Tôi thực sự không thích tùy chỉnh nó hơn là thêm các gói và tôi không thích xử lý sự cố. Tôi muốn emacs mờ dần vào nền theo cách mà một hệ điều hành tốt làm và tiếp tục với mọi thứ. Cách đây một thời gian, tôi thấy rằng el-getcho phép tôi cài đặt các gói mà tôi cần mà không có sẵn package.elvà cũng cho tôi nhiều quyền kiểm soát hơn như chọn maintnhánh của chế độ Org thay vì cạnh chảy máu có thể gây ra sự cố tạm thời. Bây giờ tôi không chắc tôi có nên sử dụng el-gethay không.

Câu hỏi

el-getdường như là một giải pháp tuyệt vời cho các kho lưu trữ và các bản hack khác nhau ngoài kia. Nó cung cấp các khả năng mà đơn giản là không thể với package.el. Bây giờ package.eltrong các phiên bản mới hơn của emacs ( >=24.4) hỗ trợ nhiều kho lưu trữ, các trường hợp sử dụng cho el-getvà các lựa chọn thay thế tương tự cho trình quản lý gói tích hợp của emacs là gì?


2
Xem thêm: quelpa . Câu trả lời ngắn gọn là: Chắc chắn là như vậy, vẫn có những gói không có trên ELPA / MELPA / Marmalade. Nếu bạn thấy rằng bạn cần một cái, bạn vẫn có thể có được nó mà không cần hack khủng khiếp el-getvà tương tự.
PythonNut

Câu trả lời:


8

Có những điều vẫn không thể xảy ra với ELPA, và có những điều sẽ luôn luôn không thể với ELPA, bởi vì chúng không phù hợp với khái niệm ELPA: Bạn sẽ không bao giờ có thể cài đặt một cam kết cụ thể bằng hàm băm của nó từ một ngã ba kho. Tương tự như vậy, bạn sẽ không bao giờ có thể áp dụng các bản vá tùy chỉnh cục bộ cho một gói trước khi cài đặt nó. Các tính năng này đơn giản là vượt quá phạm vi ELPA và nếu bạn cần chúng, bạn sẽ phải sử dụng trình quản lý gói thay thế.

Tuy nhiên, tôi nghĩ rằng el-get là một giải pháp kế thừa ngày nay. Cho rằng ELPA đã trở thành trình quản lý gói tiêu chuẩn thực tế cho Emacs, các nhà quản lý gói thay thế nên tích hợp liền mạch với ELPA. Tuy nhiên, el-get không để lộ các gói riêng của mình cho ELPA, có nghĩa là các gói của nó hoàn toàn vô hình đối với các gói ELPA và ELPA không bao giờ có thể phụ thuộc vào các gói el-get, với ý nghĩa rõ ràng đối với việc quản lý phụ thuộc.

Nếu bạn cần các tính năng ngoài ELPA, bây giờ bạn nên xem QUELPA thay vì el-get.


"nếu họ không làm thì vẫn không muốn duy trì chúng." Mục đích có thể chỉ là bản ngã của nhà phát triển, mặc dù.
T. Verron

Tuy nhiên, đó sẽ là một bản ngã hùng mạnh có thể dễ dàng thu hút một cộng đồng lớn như el-get vẫn có, và QUELPA nhanh chóng có được :)
lunaryorn

Tôi đã bình luận nói chung, tất nhiên. ;)Đối với các chi tiết cụ thể của các gói trong tay, câu trả lời của bạn, ngoài tuyên bố thông thường, làm cho một điểm mạnh bằng cách thể hiện mục đích của el-get và quelpa.
T. Verron

@ T.Verron Yep, điểm lấy. Tôi đã xóa câu nói đó, đó là một điều ngu ngốc để nói. Lấy làm tiếc.
lunaryorn

@lunaryorn với el-get, however, does not expose its own packages to ELPA, meaning that **its packages** are entirely invisible to ELPA and ELPA bạn có nghĩa là những thứ được cài đặt bởi el-get, phải không?
toogley

5

Tôi đã viết một trình quản lý gói mới cho Emacs, straight.elcố gắng cải thiện tất cả các giải pháp quản lý gói hiện có. Có một phần mở rộng trong straight.eltài liệu về so sánh với các nhà quản lý gói khác , nhưng đây là một bản tóm tắt rất ngắn:

  • package.eltải các tarball mờ từ các máy chủ trung tâm, không có tùy chọn để chọn phiên bản cụ thể của gói và không cho phép bạn thực hiện các thay đổi cục bộ cho các gói của mình; đóng góp thay đổi ngược dòng là không thể. straight.elnhân bản kho Git theo cách phi tập trung (nhưng nó tự động sử dụng các công thức nấu ăn từ MELPA , GNU ELPAEmacsMirror , nếu bạn muốn) và cho phép bạn thực hiện các thay đổi cục bộ tùy ý cho chúng, cam kết những thay đổi đó và đóng góp ngược dòng. Điều này có thể được thực hiện thủ công hoặc bạn có thể sử dụng các hoạt động quản lý kho lưu trữ hàng loạt tích hợp. Thay đổi đối với các gói của bạn được phát hiện tự động và không cần phải xây dựng lại thủ công. Hơn nữa,straight.el hỗ trợ khả năng tái tạo hoàn chỉnh cho cấu hình Emacs của bạn, vì nó cho phép bạn viết một tệp khóa sửa đổi bao gồm các băm Git của tất cả các gói của bạn.
  • QuelpaCask đều dựa trên package.el, và thừa hưởng nhiều nhược điểm giống nhau. Ví dụ, Cask không có bất kỳ khái niệm nào về việc cài đặt một phiên bản cụ thể của gói. Quelpa có, nhưng nó yêu cầu bạn mã hóa băm Git vào tệp init của bạn. straight.eleschews package.elhoàn toàn, thay thế tất cả các chức năng cốt lõi của nó bằng một thiết kế thống nhất phù hợp với nhiều trường hợp sử dụng hơn.
  • el-get có lợi thế là bạn có thể cài đặt các gói từ mọi nơi hoàn toàn (tất cả các hệ thống kiểm soát phiên bản đã biết, HTTP tùy ý, trình quản lý gói hệ thống, EmacsWiki, thậm chí go get!?). Tuy nhiên, bằng cách hỗ trợ rất nhiều nguồn, el-get không thể cung cấp loại hoạt động quản lý gói nâng cao (như khả năng tái tạo thông qua các tệp khóa sửa đổi và hoạt động quản lý kho tương tác) straight.elcung cấp. straight.elchỉ hỗ trợ Git, vì hầu hết các gói đều có sẵn thông qua Git và các gói không thể lấy được thông qua EmacsMirror (Tôi dám tìm một gói không thể có!). Lưu ý rằng straight.eltuy nhiên cung cấp API mở rộng cho các phụ trợ kiểm soát phiên bản bổ sung (ví dụ: đối với Mercurial) sẽ được thêm vào trong tương lai, nếu muốn.
  • Borg có một triết lý rất giống straight.elvà mang lại nhiều lợi thế tương tự. Tuy nhiên, nó không được thiết kế để trở thành một quản lý gói đầy đủ, và được thiết kế để được sử dụng trong mối quan tâm với các công cụ khác như epkg, auto-compilevà Magit. Ngược lại, straight.elnó khép kín và tự cung cấp mọi thứ bạn cần, yêu cầu ít hoặc không cần cấu hình bổ sung. Ngoài ra, Borg sử dụng các mô đun con Git, có giao diện có một số cạnh thô, trong khi straight.elsử dụng kho Git được quản lý độc lập, mang lại sự linh hoạt và sức mạnh bổ sung.
  • Cũng có cách tiếp cận thủ công, nhưng tôi không khuyến nghị điều này. Sau vài tháng đầu tiên, bạn sẽ phát minh lại Borg. Sau vài tháng tiếp theo, bạn sẽ phát minh lại straight.el. Tuy nhiên, bạn sẽ học được rất nhiều về quản lý gói;)

4

Mặc dù có những ưu và nhược điểm, tôi nghĩ rằng el-get vẫn có liên quan, bất chấp những ý kiến ​​mạnh mẽ của @lunaryon (cũng vui mừng).

Tôi đã sử dụng gói raw.el với gói sử dụng trong một thời gian (2 đến 3 năm), sau đó chuyển sang el-get , sau đó là Cask . Tôi đã quay trở lại el-get vài ngày trước. Trước gói.el , giống như nhiều người khác, tôi đã tự xử lý các tiện ích bổ sung.

Tại sao tôi lại quay trở lại el-get ? Tôi đã gặp một số điều kỳ lạ của Cask về một thứ không phải là git repo (gói Github của tôi không có trong MELPA), trong khi gói đó thực sự sử dụng git ... Tôi không buồn điều tra hoặc tạo vé, chỉ cần kéo cái cũ của tôi el-get config và tôi đã sẵn sàng để đi ngay lập tức.

Vài điều mà tôi thích về el-get :

  • Nó hỗ trợ nhiều trình nạp, không chỉ git.
  • Nó chứa đủ các công thức nấu ăn được xác định trước
  • Nhanh hơn Cask khi khởi động.
  • và vâng @lunaryorn, Wiki không phải là nơi để phân phối mã, tôi vẫn không muốn tạo một repo Github nếu không có bản sao trên emacsmirror (Github).
  • Tự chứa, với Cask bạn cần cài đặt bên ngoài. Tôi sử dụng một tệp init duy nhất (không phải cấu hình mô-đun) với chế độ allout để điều hướng qua các phần.
  • el-get đủ đơn giản từ góc độ người dùng.

Lưu ý: Tôi đang chạy Emacs Git HEAD trong OSX và Linux.


Tôi xin lỗi vì bạn có vấn đề với Cask, nhưng tôi không nghĩ rằng những rắc rối cá nhân và sự thất vọng rõ ràng của bạn với Cask có liên quan đến câu hỏi này. Cụ thể, Cask đang hướng tới ELPA với phạm vi rất hẹp (chủ yếu là phát triển gói). Mặc dù bạn cũng có thể sử dụng nó để quản lý gói, nhưng về mặt khái niệm trực giao với el-get.
lunaryorn

Nói cách khác, Cask không thay thế el-get, cũng không nhằm mục đích làm. Nó hoàn toàn không liên quan. ELPA thay thế el-get. Sự lựa chọn tốt nhất cho các cài đặt dựa trên Git sẽ không còn nữa, đó là QUELPA, và như tôi đã nói trong câu trả lời của mình, đó là một lý do hợp lệ để sử dụng QUELPA.
lunaryorn

1
Tôi đồng ý về phạm vi hẹp của Cask, đừng hiểu sai ý tôi. Bất chấp "rắc rối" với Cask, tôi vẫn sử dụng nó trên một số máy Linux. Tôi cũng không có các gói "chỉ git", một số trong số chúng nằm trong các hệ thống kiểm soát phiên bản đồng bộ hoặc khác. Tôi cũng sử dụng các gói từ những người khác có thể sẽ không bao giờ có trong MELPA hoặc kho git. Điểm duy nhất của tôi là el-get vẫn ổn khi MELPA không chứa tất cả các gói mà ai đó cần. Trong khi tôi biết về QUELPA, el-get là đủ tốt cho tôi.
rimero

Xem, và quan điểm của tôi là el-get đặc biệt không còn ổn nữa, vì nó bỏ qua quản lý phụ thuộc tích hợp của ELPA và Emacs, có nguy cơ bị phá vỡ và cài đặt gói trùng lặp. QUELPA cung cấp các tính năng tương tự như el-get, nhưng không có lỗi này. Ngày nay nó tốt hơn.
lunaryorn

@rimero Mình đã có cùng trải nghiệm. Trên hết, tôi mới dùng thử Quelpa vài ngày trước và phải bỏ nó đi, ít nhất là bây giờ. El-get dường như vẫn linh hoạt hơn, mạnh mẽ hơn và nói chung nhanh hơn, ít nhất là đối với trường hợp sử dụng của tôi. Tôi tin rằng họ chấp nhận hai quan điểm khá khác nhau, vì vậy nó cũng có thể phụ thuộc vào loại người dùng Emacs. Bạn nên thử cả hai, trước khi cam kết với cái này hay cái kia.
gsl

1

Bạn có thể muốn có một cái nhìn vào paradox. Đó không phải là một trình quản lý gói khác, mà là một giao diện gọn gàng hơn package.el. Ví dụ, khi bạn cập nhật các gói, nó sẽ hỏi bạn có muốn cài đặt chúng không và xóa các gói cũ trong một bước.

Nếu bạn sử dụng nó, bạn có thể muốn thiết lập paradox-execute-asynchronouslyđể ttrong file init của bạn.

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.