Là tốt hơn để biên dịch từ nguồn hoặc cài đặt từ gói .deb?


18

Đôi khi, khi tải xuống phần mềm từ Internet, tôi thấy rằng có một gói .deb sẵn sàng cho Debian / Ubuntu của tôi và cũng là một tarball được biên dịch. Ban đầu, tôi chỉ đơn giản là sử dụng gói để dễ cài đặt và thậm chí không dám biên dịch. Ngay cả âm thanh của nó cũng làm tôi sợ một chút. Tuy nhiên, ngày nay, khi tôi có tùy chọn, đôi khi tôi thấy mình rơi vào tình huống khó xử: có một lợi thế không phổ biến để biên dịch từ nguồn so với gói .deb không? Tôi hy vọng tìm ra ở đây, cảm ơn bạn.

Câu trả lời:


24

Ưu điểm của việc biên dịch từ nguồn là bạn có thể biên dịch các gói với các cờ / tùy chọn nhất định có thể bị thiếu / vô hiệu hóa trong các gói Ubuntu tiêu chuẩn chứng khoán. Ngoài ra, nó giúp dễ dàng cài đặt nhiều phiên bản của cùng một chương trình. Ngoài ra, bạn có thể chọn một phiên bản chính xác của gói có thể đã bị xóa hoặc chưa có trong kho Ubuntu (ví dụ: Tôi có một số phiên bản Python 2.4.x trong thư mục / opt / của tôi vì tôi cần nó để chạy một số phiên bản cũ hơn phần mềm).

Nhược điểm của việc biên dịch từ nguồn là, trừ khi bạn xây dựng một .deb và sau đó cài đặt nó, quy trình "./cool; make; sudo make install" thông thường khiến trình quản lý gói của Ubuntu hoàn toàn không biết về những thay đổi bạn đang thực hiện, vì vậy bạn Sẽ không nhận được bất kỳ bản cập nhật nào cho phần mềm được biên dịch thủ công; và có thể người quản lý gói sau đó sẽ ghi đè / phá vỡ gói của bạn nếu bạn không cẩn thận cài đặt nó ở một vị trí riêng biệt.

Tóm lại: Luôn luôn xem xét việc cài đặt từ kho lưu trữ Ubuntu tiêu chuẩn trước, tiếp theo hãy xem xét việc cài đặt .deb; chỉ biên dịch từ các nguồn nếu bạn biết chính xác lý do tại sao bạn cần phải làm điều này.


Tôi cũng đã đọc, hiệu năng gói có thể khác nhau, khi được biên dịch, loại tương thích tốt hơn với kernel hiện tại. Không đánh giá nó cá nhân.
Fedir RYKHTIK

@Fedir: Tôi không chắc kernel có liên quan gì đến vấn đề này không, đó là kiến ​​trúc bộ xử lý - ví dụ, ngày xưa, nhiều bản phân phối chứa các gói được biên dịch với tập lệnh 80386 để tương thích tối đa trong khi biên dịch thủ công một chương trình cho Pentium sẽ cho phép nó để sử dụng các hướng dẫn hiệu quả hơn. Có toàn bộ các bản phân phối, chẳng hạn như Gentoo, được tổng hợp từ nguồn trên máy chủ vì lý do này. Tuy nhiên, sự khác biệt thường là tối thiểu và chỉ có thể được nhận thấy trong các ứng dụng rất cụ thể.
Serge

1
Lưu ý rằng việc sử dụng checkinstall thay cho cài đặt giúp giảm bớt rất nhiều nhược điểm đã đề cập. Xem help.ubuntu.com/community/CompilingEasyHowTo
ndemou

1
Xin lỗi vì nitpicking, @EliahKagan, nhưng, trong khi virtualenv là tuyệt vời, thì còn nhiều hơn nữa để duy trì nhiều môi trường Python với các lib khác nhau được cài đặt. Nếu bạn muốn có một phiên bản Python cụ thể , có thể được biên dịch với các cài đặt cụ thể - bạn vẫn cần cài đặt nhị phân thực tế - từ .deb hoặc được biên dịch từ đầu.
Serge

@Sergey Bạn nói đúng. (Và tôi không thấy bất cứ điều gì bạn đã nói là quá khích - nếu có bất cứ điều gì tôi nên xin lỗi vì nhận xét sai và gây hiểu lầm của mình!) Theo tôi hiểu, các nhà quản lý gói condasẽ tự động tạo môi trường ảo và cài đặt các cài đặt Python khác nhau cho họ , tạo và duy trì các phiên bản cho mỗi dự án. Nhưng như bạn nói virtualenv sẽ không làm điều này.
Eliah Kagan

1

Tôi đã tranh cãi về điều này chỉ ngày hôm qua. Tôi nghĩ rằng điều cực kỳ quan trọng là không xây dựng bất cứ thứ gì dễ vỡ, vì người ta biết rằng không có gì là cập nhật và tài liệu tốt, đặc biệt là khi bạn đang làm việc với một hệ thống mỏng manh, sẽ không có thời gian để chữa cháy và viết tài liệu, và nơi mọi thứ đều mạnh mẽ thì tài liệu không cần nhiều đến thế. Vì vậy, bạn không bao giờ nên biên dịch từ nguồn, tìm giải pháp khác, sử dụng phần mềm khác, thay đổi kiến ​​trúc của bạn, nhưng không sử dụng thứ gì đó sẽ bị hỏng sau khi cập nhật. Và vâng, nó không liên quan gì đến phiên bản kernel, đó là về kiến ​​trúc của máy của bạn và hiện tại bạn khó có thể có sự khác biệt đáng kể với việc biên dịch từ mã nguồn, tôi cá là bạn sẽ không nhận được bất kỳ.


0

Việc cài đặt .deb chắc chắn dễ dàng hơn nhiều, mặc dù nếu bạn có thể, cách tốt nhất là tìm nó trong repo hoặc ppa, để bạn có thể được cung cấp các bản cập nhật.

AFAIK không có lợi ích thực sự để tự biên dịch nó trừ khi bạn có kế hoạch thay đổi nó trước. Nếu bạn chỉ muốn phần mềm như hiện tại, thì hãy cài đặt .deb

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.