Câu hỏi này và hầu hết các câu trả lời khác ở đây, phát sinh từ sự hiểu lầm về cách các dự án sử dụng Hệ thống Xây dựng GNU (còn gọi là Autotools) được phân phối. Trên thực tế, trong trường hợp thư viện Erlang XMPP được OP đề cập, sự hiểu lầm dường như thuộc về các nhà phát triển.
Lấy phần mềm đúng cách
Nếu tất cả những gì bạn muốn làm là biên dịch và cài đặt một dự án được phát hành với GNU Autotools, thì bạn không nên kiểm tra nó từ hệ thống kiểm soát nguồn . Thay vào đó, bạn nên tải xuống bản phát hành nguồn đóng gói được cung cấp bởi nhà phát triển. Chúng thường có dạng tarball được phân phối trên trang web của dự án. Đối với các dự án được lưu trữ hoàn toàn trên GitHub, Savannah hoặc một số dịch vụ lưu trữ tương tự, các tarball này thường sẽ được tìm thấy đằng sau một số liên kết có nhãn "Tải xuống" hoặc "Phát hành". Bạn mở gói và thốt ra một số biến thể của ./configure && make && sudo make install
câu thần chú tiêu chuẩn . Đó là tất cả; bạn không cần phải gọi bất kỳ Autotools GNU nào và thậm chí không cần cài đặt GNU Autotools trên hệ thống của bạn.
Lý do mà bạn, người dùng, không cần GNU Autotools để biên dịch dự án đóng gói Autotools là vì nhà phát triển đã sử dụng các chương trình Autotools khác nhau để tạo ra một "tarball phân phối" có thể được sử dụng để xây dựng phần mềm trên bất kỳ Hệ thống giống như Unix. Tarball phân phối chứa một configure
tập lệnh có tính di động cao , quét môi trường xây dựng, kiểm tra các phụ thuộc và xây dựng một Makefile
tùy chỉnh cho hệ thống của bạn.
Vậy khi nào bạn cần Autotools?
Lý do duy nhất bạn cần phải tự cài đặt và gọi GNU Autotools là nếu bạn muốn thực hiện công việc phát triển trên một dự án được xây dựng với Autotools. Và thậm chí sau đó, bạn có thể sẽ không cần Autotools trừ khi bạn thay đổi phụ thuộc của dự án. Trong trường hợp đó, bạn sẽ thực sự cần phải kiểm tra nguồn gốc, thực hiện thay đổi phù hợp với Autotools cụ thể tập tin đầu vào ( configure.ac
, Makefile.am
, vv), và chạy Autotools vào chúng để tạo ra một mới configure
tập tin. Nếu bạn muốn xuất bản độc lập gói sửa đổi, thì bạn sẽ sử dụng Makefile được tạo bởi Autotools để tạo tarball phân phối mới, sau đó xuất bản tarball đó ở đâu đó trực tuyến.
Vấn đề là một số nhà phát triển làm cho kho lưu trữ nguồn của họ có sẵn công khai nhưng bỏ qua việc xuất bản tarball phân phối của họ (hoặc gây khó khăn cho việc tìm nơi xuất bản). Ví dụ, thay vì xuất bản tarball phân phối của họ dưới dạng Phát hành GitHub , GitHub của thư viện Erlang XMPP là tarball của kho lưu trữ nguồn thô. Điều này khiến cho không thể biên dịch dự án mà không có GNU Autotools, đánh bại toàn bộ mục đích sử dụng Autotools ngay từ đầu.
Tóm tắt TL; DR
GNU Autotools là thứ mà các nhà phát triển sử dụng để tạo các gói mã nguồn di động cho người dùng. Người dùng nên tải xuống và biên dịch từ các gói nguồn này, không phải mã gốc từ hệ thống kiểm soát nguồn. Nếu các nhà phát triển không cung cấp các gói nguồn này, thì họ không sử dụng Autotools một cách chính xác và nên được vỗ nhẹ bằng một con cá hồi ướt cho đến khi họ thấy lỗi theo cách của họ.