Những lợi thế của các công cụ xây dựng / libs từ nguồn là gì?


8

Bằng cách xây dựng từ nguồn bạn có đạt được lợi ích gì không? Là mã được tối ưu hóa tốt hơn cho kiến ​​trúc phần cứng của bạn? Là nó được tối ưu hóa tốt hơn nói chung?

Tại sao ai đó chọn xây dựng từ nguồn thay vì sử dụng hệ thống quản lý gói như APT / yum? Nếu có một số loại tăng tối ưu hóa khi điều đó vượt xa lợi ích của một hệ thống quản lý gói?


Hai lựa chọn của bạn không loại trừ lẫn nhau. Bạn có thể tùy chỉnh các nguồn của một gói hoặc thậm chí tự gói.
Faheem Mitha

Câu trả lời:


11

Xây dựng từ nguồn cung cấp các tùy chọn sau không khả dụng khi sử dụng phiên bản từ trình quản lý gói nhị phân.

Biên dịch từ nguồn cho phép bạn:

  • sử dụng tối ưu hóa cụ thể của bộ xử lý
  • sử dụng phiên bản mới nhất
  • tìm hiểu cách biên dịch và liên kết hoạt động (gợi ý từ @mattdm)
  • sửa lỗi, phát triển công việc
  • đặt tùy chọn thời gian biên dịch (ví dụ: bao gồm các tính năng X trong vim)

1
đối với người dùng máy tính để bàn thông thường, việc đạt được tối ưu hóa cụ thể của bộ xử lý có xứng đáng với chi phí phức tạp của việc quản lý phụ thuộc thủ công giữa các phần mềm không? Nó giống như tăng 2% hoặc tăng gấp đôi hiệu suất?
Doug T.

1
@Doug Đối với phần mềm nặng CPU, sự khác biệt có thể là 10..20%, đối với phần mềm máy tính để bàn thông thường, sự khác biệt là bằng không. Nếu bạn muốn thử biên dịch phần mềm từ nguồn, tôi sẽ khuyên bạn nên phân phối dựa trên nguồn (ví dụ Gentoo). Một ý tưởng rất tệ là cài đặt phần mềm từ nguồn (ngoài phần mềm bên thứ 3 được cài đặt vào / opt) trong bản phân phối nhị phân.
Šimon Tóth

Tôi nghĩ rằng hiệu suất không đáng để đi ra ngoài phụ thuộc trình quản lý gói của bạn. Tuy nhiên, có các hệ thống quản lý gói dựa trên nguồn theo dõi các phụ thuộc và cho phép bạn biên dịch từ nguồn. Ưu điểm được liệt kê ở trên mà bạn không có được chỉ là 'phiên bản mới nhất' - trình quản lý gói có một phiên bản được chọn sẽ hoạt động với phần còn lại của bản phân phối.
Shawn J. Goff

5
Một điều tôi muốn nói thêm là: tìm hiểu thêm về những gì đang diễn ra dưới mui xe. Điều đó có thể có giá trị trong chính nó.
mattdm

7

Gần đây tôi đã làm điều này.

Tôi đã biên dịch openssl-1.0.s Something từ nguồn trên hệ thống linux Slackware 11.0. Tôi muốn vá thứ đăng nhập bằng mật khẩu để tạm dừng trong 7 giây khi đăng nhập thất bại, để làm mờ những người đoán mật khẩu ssh Trung Quốc gây phiền nhiễu.

Tôi đã biên dịch Apache httpd 2.2.17 trên cùng hệ thống Slackware 11.0 vì nó đi kèm với Apache 2.0.s Something và tôi muốn sử dụng http.x.conf 2.2.x từ một hệ thống khác.

Nghĩ về nó, tôi cũng đã biên soạn Alpine 2.0 (ứng dụng email, thông báo tiếp theo) cho cùng một hệ thống. Tại sao Slackware 11.0? Nó chạy trên một máy vào khoảng năm 2003 với đồ họa Intel "Brookdale" và bất kỳ Slackware nào sau này cũng không hỗ trợ đồ họa Intel được ghi chép kém.

Trên một máy khác, tôi đã rút hỗ trợ chip không dây TI ACX111 từ github và biên dịch trình điều khiển mới, cho phép tôi sử dụng thẻ không dây $ 9.

Tôi cũng thường xuyên biên dịch lại các nhân Linux để làm cho chúng cụ thể với máy họ chạy.

Vì vậy, trong trường hợp của tôi, đó là nhiều lý do tùy biến, hỗ trợ phần cứng và "chỉ vì".

Đưa ra những gì chúng ta biết về dịch tễ học trong một quần thể thống nhất (http://www.usenix.org/publications/login/2005-12/openpdfs/geer.pdf) tại sao mọi người không biên dịch từ nguồn trên hệ thống của riêng họ, với bất cứ điều gì Tùy chọn biên dịch thời gian họ chọn? Điều đó sẽ làm cho dân số kháng sâu và vi rút nhiều hơn rất nhiều.


Có nhiều cách đơn giản hơn để làm chậm những hành vi sai trái ssh-búa này ... hãy tìm giới hạn tỷ lệ iptables. Giải pháp đó có tính ứng dụng rộng hơn và hơn nữa không làm mất hiệu lực bảo hành của bạn.
vonbrand

Thông thường linux không đi kèm với bảo hành. Slackware 11 là một số tuổi tại thời điểm này. Bạn đang cầu xin câu hỏi với FUD, cụ thể là "sợ hãi". "Ồ không! Đừng làm thế! Bạn sẽ làm mất hiệu lực bảo hành của bạn!" Bao nhiêu lần một người dựa vào một bảo hành? Rất ít. Tất cả chúng ta đều muốn người khác chịu trách nhiệm (đặc biệt là đạo đức, nhưng chủ yếu là tài chính) cho tất cả các hành động của mình, nhưng điều đó không thể xảy ra nếu không có nhiều hậu quả xấu cho cá nhân và xã hội. Tôi đứng trước lời khuyên của tôi và hơn thế nữa: tự mình biên dịch nguồn và chịu mọi trách nhiệm. Đừng đổ lỗi cho bất cứ ai khác.
Bruce Ediger

Ồ, thôi nào. Nếu đó là RHEL hoặc SLES (hoặc thậm chí Ubuntu LTS có hợp đồng hỗ trợ) thì chắc chắn sẽ có một bảo hành bị vô hiệu. Nếu đó là Debian hoặc Fedora, một báo cáo lỗi cho OpenSSH bị hack của bạn sẽ chỉ bị đóng mà không cần nhìn hai lần.
vonbrand
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.