Câu trả lời:
Tất cả phần mềm là các chương trình , còn được gọi là gói nguồn . Vì vậy, tất cả các gói nguồn cần được xây dựng trước, để chạy trên hệ thống của bạn.
Các gói nhị phân là một gói đã được xây dựng từ nguồn bởi một người có các tính năng và tham số chung được cung cấp trong phần mềm để một số lượng lớn người dùng có thể cài đặt và sử dụng nó.
Gói nhị phân rất dễ cài đặt .
Nhưng có thể không có tất cả các tùy chọn từ gói ngược dòng.
Vì vậy, để cài đặt từ nguồn, bạn cần phải tự xây dựng mã nguồn. Điều đó có nghĩa là bạn cần phải tự chăm sóc các phụ thuộc. Ngoài ra, bạn cần phải nhận thức được tất cả các tính năng của gói để bạn có thể xây dựng nó cho phù hợp.
Ưu điểm của việc cài đặt từ nguồn:
Trong cài đặt ngắn từ nguồn cung cấp cho bạn tùy chọn tùy chỉnh nặng đồng thời phải mất rất nhiều nỗ lực, trong khi cài đặt từ nhị phân dễ dàng hơn nhưng bạn có thể không thể tùy chỉnh theo ý muốn.
Cập nhật : Thêm đối số liên quan đến bảo mật trong các bình luận bên dưới. Đúng, trong khi cài đặt từ nhị phân, bạn không có tính toàn vẹn của mã nguồn. Nhưng sau đó nó phụ thuộc vào việc bạn có nhị phân từ đâu. Có rất nhiều nguồn đáng tin cậy từ đó bạn có thể nhận được nhị phân của bất kỳ dự án mới nào, điều tiêu cực duy nhất là thời gian . Có thể mất một chút thời gian để nhị phân của các bản cập nhật hoặc thậm chí một dự án mới xuất hiện trong kho lưu trữ đáng tin cậy của chúng tôi.
Và trên hết, về bảo mật phần mềm, tôi muốn làm nổi bật trang vui nhộn này tại các phòng thí nghiệm chuông do Joe cung cấp trong các bình luận dưới đây.
Tệp nguồn chứa mã gốc do nhà phát triển viết bằng bất kỳ ngôn ngữ nào anh ấy / cô ấy chọn (C, C ++, Python, v.v.) và là chung chung. Nó không cụ thể cho bất kỳ bản phân phối nào và trong nhiều trường hợp cho bất kỳ hệ điều hành nào.
Gói (ví dụ RPM hoặc DEB) là tệp thực thi nhị phân (hoặc tập lệnh được giải thích, v.v.) được chuẩn bị trước cho bản phân phối cụ thể của bạn. Nhiệm vụ chuẩn bị nguồn để biên dịch (thêm bất kỳ bản vá cần thiết nào, v.v.), biên dịch thực tế, tạo các tệp cấu hình phân phối cụ thể, tạo tập lệnh cài đặt trước và sau, v.v.
Nói cách khác, tất cả các công việc lừa đã được thực hiện cho bạn trong một gói, trong khi đó bạn sẽ cần phải tự làm nếu bạn chọn cài đặt từ nguồn.
Sử dụng một gói dễ dàng hơn nhiều trong hầu hết các trường hợp như:
Tuy nhiên, đôi khi phiên bản đóng gói là phiên bản cũ hoặc thậm chí tệ hơn, không có phiên bản đóng gói; trong trường hợp đó, lựa chọn duy nhất của bạn là tự biên dịch. Nếu bạn làm như vậy, bạn cần xem xét những điều sau đây:
dev
các gói - có thể có nhiều trong số chúng.Nếu bạn sẵn sàng nỗ lực thêm, thì việc tổng hợp từ nguồn có thể mang lại cho bạn những lợi ích của:
Lưu ý rằng mặc dù các gói dựng sẵn của một số distro cung cấp các tệp thực thi nhị phân đã sẵn sàng để cài đặt và chạy (RPM và DEB là các ví dụ), các bản phân phối khác cung cấp các gói chỉ tự động hóa quá trình biên dịch.
Gentoo's ebuilds
là một ví dụ về điều này - gói về cơ bản là các hướng dẫn cho người quản lý gói mô tả cách biên dịch và cài đặt tệp thực thi. Điều này có nhiều lợi thế của các trình quản lý gói truyền thống (cập nhật tự động, gỡ cài đặt, v.v.) trong khi vẫn cho phép người dùng tối ưu hóa quá trình biên dịch theo sở thích của mình.
Arch Linux có một hệ thống đóng gói trong đó các gói chính là nhị phân trong khi nhiều gói bổ sung được biên dịch trên hệ thống bằng PKGBUILD
các tệp.
Ngoài các câu trả lời khác, tôi muốn thêm một vài điều:
Nếu bạn quyết định tự biên dịch một chương trình, bạn cần nghĩ rằng biên dịch không phải là thứ bạn chỉ làm một lần. Bạn có thể sẽ cần phải đăng ký vào danh sách gửi thư phát triển của các ứng dụng bạn đã quyết định biên dịch và cập nhật các phiên bản mới và đặc biệt là các bản cập nhật bảo mật.
Mỗi khi ứng dụng được cập nhật, bạn sẽ phải biên dịch lại phiên bản mới, vì vậy, hãy nhớ rằng bạn sẽ phải dành một chút thời gian mỗi tuần.
Nếu bạn không đủ khả năng đó, tốt hơn là để người bảo trì gói làm công việc đó cho bạn.
Xây dựng từ nguồn cho phép chỉ định kiến trúc của chính xác máy của bạn. Các CPU mới có các hướng dẫn bổ sung mà trình biên dịch hiểu, vắt kiệt một chút hiệu năng. Các gói dựng sẵn thường dựa trên CPU cổ xưa nhất vẫn được sử dụng phổ biến.
Điều này chủ yếu quan trọng đối với các ứng dụng quan trọng của dự án sử dụng CPU rất nhiều, chẳng hạn như các công cụ của đường ống sinh học, hoặc các công cụ mô hình địa vật lý. Phần mềm như vậy chạy trong một môi trường được kiểm soát chặt chẽ, không có tính năng kiểm soát truy cập, vì vậy hiếm khi có lỗi bảo mật khẩn cấp đến mức chúng phải được vá trong vài ngày hoặc vài giờ. Hầu như không bao giờ nó cần phải chạy trên một máy khác với kiến trúc ban đầu chưa biết.
Vâng, tôi biết, máy tính bây giờ rất rất rất nhanh và bất kỳ nỗ lực hoặc hành động nào bạn thực hiện đều rất rất rất tốn kém, nhưng vào ngày thứ ba ngồi và chờ chương trình của bạn hoàn tất (đây là tình huống tôi đang nói về) những sự thật như vậy bắt đầu tìm kiếm câu hỏi
Khác nhau, các ứng dụng như trình duyệt và tương tự nên được sử dụng tốt hơn từ kho lưu trữ của người bảo trì (chứ không phải từ một số gói dựng sẵn đã tải xuống), vì điều rất quan trọng là phải cập nhật chúng.
Một cách để tận dụng tốt nhất cả hai thế giới (phần mềm cập nhật, cài đặt / gỡ cài đặt đơn giản, kết hợp hầu hết các tinh chỉnh phân phối và điều chỉnh, có thể tối ưu hóa cho các yêu cầu địa phương), trong khi chi phí (phải tự cập nhật, đề phòng lỗi và các bản vá vào phút cuối, theo sự phát triển, bạn tự mình khắc phục các lỗi và không tương thích giữa các phiên bản) không thể được giảm thiểu (nhiều), là để xây dựng các gói của riêng bạn, bắt đầu với các gói nguồn từ bản phân phối của bạn. Vâng, nó là công việc nhiều hơn là chỉ xây dựng và cài đặt.