/ / Gói nhị phân so với nguồn: Bạn nên sử dụng gói nào?

Gói nhị phân so với nguồn: Bạn nên sử dụng gói nào?

Có hai cách phổ biến để cài đặt chương trình trên Linux. Bạn có thể sử dụng gói dựng sẵn hoặc bạn tự biên dịch chương trình. Ngày nay, cái trước thường thắng theo mặc định, nhưng có những lúc bạn có thể muốn xem xét việc biên dịch từ mã nguồn.


Gói nhị phân là gì?

Định dạng gói DEB

Cài đặt chương trình trên Linux thường khá khác so với cách cài đặt phần mềm truyền thống trên Windows. Thay vì tải xuống trình cài đặt từ trang web của nhà cung cấp, các tệp đến từ kho lưu trữ các chương trình thường được điều chỉnh cho phù hợp với bản phân phối Linux của bạn. Bạn truy cập kho lưu trữ này bằng trình quản lý gói Linux hoặc cửa hàng ứng dụng.

Các tệp tạo nên các chương trình trong các kho lưu trữ này có định dạng lưu trữ. Điều này gộp mọi thứ vào một tệp duy nhất để dễ dàng truy cập và phân phối. Ví dụ, Debian sử dụng định dạng DEB để lưu trữ và phân phối các chương trình. Các gói này được gọi là gói nhị phân.

Cách đọc mã nhị phân

Bạn cần một chương trình đặc biệt để giải nén các tệp này và cài đặt chúng vào máy tính của mình, thường là trình quản lý gói hoặc cửa hàng ứng dụng của bạn. Các công cụ này cũng thực hiện các chức năng hữu ích khác, chẳng hạn như theo dõi những tệp bạn đã cài đặt và quản lý các bản cập nhật phần mềm.

Các định dạng gói mới hơn như Flatpak và Snap hoạt động trên các phiên bản Linux khác nhau, nhưng chúng vẫn bao gồm các chương trình nhị phân được biên dịch sẵn. Cả hai đều yêu cầu cửa hàng ứng dụng đồ họa hoặc trình quản lý gói dựa trên dòng lệnh để cài đặt.

Mã nguồn là gì?

Tất cả phần mềm bao gồm các dòng văn bản được gọi là mã nguồn, được viết bằng ngôn ngữ lập trình cụ thể, chẳng hạn như C hoặc C++. Nói chung, bạn không thể gói mã nguồn này vào một kho lưu trữ và gọi nó là một gói. Những dòng này cần được dịch sang ngôn ngữ mà máy tính của bạn có thể hiểu và thực thi.

Quá trình này được gọi là biên dịch và kết quả cuối cùng tạo ra các tệp nhị phân mà máy tính của bạn có thể chạy. Sự khác biệt giữa các gói và phần mềm là các tệp nhị phân phần mềm được lưu trữ cùng nhau bên trong một gói, cùng với những thứ khác, chẳng hạn như tệp cấu hình.

Cài đặt “Từ nguồn” là gì?

Makefile cho Emacs

Cài đặt chương trình “từ nguồn” có nghĩa là cài đặt chương trình mà không sử dụng trình quản lý gói. Thay vào đó, bạn biên dịch mã nguồn và sao chép các tệp nhị phân vào máy tính của mình.

Hầu hết thời gian, bạn có thể tải xuống mã nguồn của dự án từ các dịch vụ lưu trữ như GitHub, GitLab hoặc Bitbucket. Các chương trình lớn hơn thậm chí có thể lưu trữ mã nguồn trên một trang web cá nhân. Mã thường sẽ được nén ở định dạng lưu trữ (còn được gọi là gói nguồn).

Một bộ công cụ đặc biệt giúp tự động hóa quá trình xây dựng. Trên máy tính để bàn Linux, điều này thường xuất hiện dưới dạng chương trình dòng lệnh có tên làm. Mã nguồn được viết bằng các ngôn ngữ khác nhau cần các trình biên dịch và lệnh cụ thể để thay đổi chúng thành mã nhị phân. Chương trình tạo tự động hóa quá trình này.

Để quá trình tự động hóa này hoạt động, các chương trình cung cấp một Makefile cho nó biết phải làm gì và biên dịch. Ngày nay, Makefile thường được tạo tự động bởi phần mềm đặc biệt như CMake. Đây là nơi bạn đến. Từ đây, bạn có thể chỉ định chính xác những tính năng bạn muốn biên dịch vào phần mềm của mình.

Xây dựng ví dụ “Từ nguồn”

Ví dụ: lệnh bên dưới tạo tệp cấu hình cho Calligra Office Suite bằng CMake. Tệp được tạo yêu cầu chương trình tạo chỉ biên dịch thành phần Nhà văn của Calligra.

 cmake -DPRODUCTSET=WORDS -DCMAKE_INSTALL_PREFIX=$HOME/kde/inst5 $HOME/kde/src/calligra 

Sau khi hoàn thành việc này, tất cả những gì một người phải làm là chạy công cụ tạo để biên dịch và sao chép kết quả vào máy tính của họ. Điều này được thực hiện theo cách sau:

 make
make install

Trong khi đây là mẫu chung để biên dịch chương trình, có nhiều cách khác để cài đặt các gói nguồn. Ví dụ, Gentoo Linux có một cách tích hợp sẵn để xử lý việc này, giúp quá trình này nhanh hơn và dễ dàng hơn nhiều. Tuy nhiên, việc xây dựng các gói nhị phân cần thêm một vài bước so với các lệnh trên.

Lợi ích của việc sử dụng các gói nhị phân

Nếu bạn đang sử dụng Linux, nhiều khả năng ai đó đã biên dịch sẵn phần mềm mà bạn đã cài đặt. Điều này đã trở nên phổ biến hơn nhiều so với việc sử dụng các gói nguồn. Nhưng tại sao?

1. Phiên bản nhị phân dễ quản lý hơn

định dạng gói deb

Các gói nhị phân chứa nhiều thứ hơn là các tệp cài đặt đã được biên dịch. Chúng cũng lưu trữ thông tin giúp người quản lý gói của bạn dễ dàng theo dõi tất cả các chương trình của bạn. Ví dụ: các tệp DEB (định dạng gói cho Debian và các dẫn xuất của Debian) cũng chứa thông tin quan trọng như chương trình cần chạy phần mềm nào khác và phiên bản hiện tại của nó.

Điều này làm cho các gói cài đặt dễ dàng hơn nhiều, vì bạn không cần phải lo lắng về những tệp nào khác mà bạn cần để chạy chương trình thành công. Trình quản lý gói của bạn có thể đọc thông tin đó từ chính gói đó và tự động tải xuống tất cả các phụ thuộc cần thiết.

Khi cài đặt chương trình từ nguồn, trừ khi bạn biên dịch mã thành gói nhị phân của riêng nó, bạn sẽ chịu trách nhiệm quản lý phần mềm đó. Bạn sẽ cần ghi nhớ những chương trình khác mà bạn cần để làm cho nó hoạt động và tự cài đặt chúng.

2. Phiên bản nhị phân đã cải thiện tính ổn định

Những người duy trì các kho lưu trữ cho trình quản lý gói của bạn có xu hướng kiểm tra các tệp nhị phân để tìm các sự cố và cố gắng hết sức để khắc phục các sự cố xuất hiện. Điều này có thể giúp cải thiện độ ổn định, vì những người bảo trì gói có thể phát hiện ra điều gì đó mà một người cài đặt từ nguồn có thể bỏ sót.

Các gói Plus thường phải tuân thủ một bộ quy tắc nghiêm ngặt để giúp đảm bảo chúng sẽ chạy trên hệ thống của bạn. Ví dụ, cả Debian và Ubuntu đều có sách hướng dẫn chính sách, cũng như nhiều bản phân phối Linux khác.

Một số chương trình cũng dựa vào các phiên bản khác nhau của cùng một phụ thuộc phần mềm để chạy. Kho lưu trữ gói cố gắng hết sức để giải quyết những xung đột này, do đó bạn không cần phải làm như vậy.

Lợi ích của việc biên dịch các gói nguồn

Cài đặt chương trình từ nguồn không phải là điều mà mọi người cần làm, vì việc bảo trì PC của bạn thường dễ dàng hơn nếu bạn gắn bó với các gói nhị phân. Mặc dù vậy, vẫn có một số lợi thế khi sử dụng cách cài đặt chương trình phức tạp hơn một chút này.

1. Mã nguồn cung cấp phần mềm mới nhất

Một nhược điểm của việc làm cho các chương trình trở nên đáng tin cậy hơn là cần có thời gian để cải thiện và sửa chữa. Đôi khi có sẵn một tệp nhị phân, nhưng mã nguồn thì có sau. Đối với những người muốn có phiên bản mới nhất và tốt nhất, họ thậm chí có thể thích một chút không ổn định để đổi lấy phần mềm mới hơn.

Mặc dù có những hệ điều hành Linux đáp ứng nhu cầu này mà không cần biên dịch chương trình, nhưng chúng vẫn có một vài nhược điểm. Ví dụ: phần mềm không thường xuyên phát hành các phiên bản gói đã đặt sẽ khó cập nhật hơn trong kho lưu trữ hơn là cài đặt từ nguồn.

Điều này là do các gói nhị phân thường được tạo từ các bản phát hành chính thức của chương trình. Như vậy, những thay đổi giữa các phiên bản này thường không được tính đến. Bằng cách biên dịch phần mềm của riêng bạn từ nguồn, bạn có thể hưởng lợi ngay lập tức từ những thay đổi đó.

Cũng có thể hệ điều hành Linux của bạn không có phần mềm mà bạn muốn tạo sẵn cho mình. Trước đây, điều này sẽ làm cho việc cài đặt nó từ nguồn là lựa chọn duy nhất của bạn. Các định dạng gói chung đã thay đổi điều này. Các gói Flatpak và Snap thường nhận được các bản cập nhật nhanh hơn nhiều so với các kho lưu trữ hệ thống. Nhưng vẫn có những lúc biên dịch là cách duy nhất để lấy hàng.

2. Bạn Có Thể Lựa Chọn

các tính năng của ffmpeg

Một lợi ích khác khi sử dụng các gói nguồn là bạn có nhiều quyền kiểm soát hơn đối với các chương trình mà bạn cài đặt. Khi cài đặt từ một kho lưu trữ nhị phân, bạn bị hạn chế về cách tùy chỉnh các gói của mình.

Ví dụ: hãy xem FFmpeg, trình chuyển đổi video và âm thanh dựa trên dòng lệnh. Theo mặc định, nó đi kèm với một số lượng lớn các tính năng, một số tính năng mà bạn có thể không bao giờ chạm tới. Chẳng hạn, hỗ trợ âm thanh JACK có sẵn trong FFmpeg, mặc dù phần mềm này thường chỉ được sử dụng trong môi trường sản xuất.

Biên dịch FFmpeg cho phép bạn loại bỏ những thứ bạn không muốn, để nó nhẹ hơn và phù hợp với nhu cầu của bạn. Điều tương tự cũng áp dụng cho các chương trình hạng nặng khác.

Khi tài nguyên khan hiếm, việc loại bỏ các tính năng có thể là một cách tuyệt vời để giảm tải. Không có gì ngạc nhiên khi ChromeOS, được tìm thấy trên nhiều máy tính cấp thấp, dựa trên Gentoo Linux. Gentoo, dựa trên nguồn, biên dịch rất nhiều phần mềm của nó, có khả năng làm cho các hệ thống này chạy nhẹ hơn nhiều.

Tại sao không sử dụng cả gói nhị phân và nguồn?

Mặc dù có thể bạn sẽ không muốn biên dịch các gói hàng ngày, nhưng đây là điều hữu ích cần ghi nhớ. Điều đó nói rằng, với các định dạng gói phổ quát mới có sẵn từ các trang web như Snap Store và Flathub, bạn sẽ ít cần phải xây dựng từ nguồn để có được phần mềm mới nhất.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *