Làm thế nào để xây dựng tất cả các gói cài đặt của tôi từ các nguồn?


26

Tôi đã đọc về cách các bản phân phối linux dựa trên nguồn như Gentoo có thể tăng hiệu suất đáng kể khi so sánh với các bản phân phối được xây dựng trước như Ubuntu vì chúng cài đặt từ nguồn với tối ưu hóa cho hệ thống cụ thể của bạn. Có thể xây dựng Ubuntu từ nguồn để có cùng loại lợi ích không?


3
Cài đặt Gentoo, không phải Ubuntu, cho điều đó. Nghiêm túc mà nói, tại sao lại sử dụng một bản phân phối hoàn toàn thất bại trong quản lý phụ thuộc dựa trên nguồn thay vì một bản phân phối?
toán học

7
Tôi tò mò muốn xem điểm chuẩn giữa nguồn và nhị phân nơi chúng thực sự sử dụng cùng phiên bản ngăn xếp và cấu hình. Sự so sánh thường là một bản phát hành Ubuntu (với mặc định của nó) so với Gentoo mới nhất có thể với một hệ thống tập tin kỳ quặc và mặc định ứng dụng kỳ quái. Mặc định của Ubuntu chủ yếu là khá lành mạnh và đó là nơi phần lớn hiệu suất của nó đến từ đó và đó là lý do tại sao hầu hết các so sánh thẳng đặt Ubuntu lên trước Gentoo.
Oli

1
Một ví dụ tuyệt vời về so sánh tồi là bài báo Tạp chí Linux này (cần đăng ký miễn phí để đọc) nơi họ sử dụng các hạt nhân khác nhau, trình điều khiển Nvidia khác nhau, các phiên bản X khác nhau và môi trường máy tính để bàn khác nhau. Bạn cũng có thể so sánh hai phiên bản khác nhau của Ubuntu. Họ sẽ cho thấy quy mô khác nhau tương tự.
Oli

4
Hiệu suất tăng những gì? Thông lượng mạng, tốc độ đĩa, chuyển đổi quy trình, tính toán toán học thuần túy, Đồ họa 3D, thời gian khởi động?
người dùng không xác định

1
Tôi chỉ khuyên bạn nên biên dịch phần mềm, cần hiệu năng CPU ở quy mô lớn (mã hóa video) và được người dùng sử dụng nhiều và lợi ích từ tối ưu hóa CPU như FMA3 hoặc AVX2.
keiki

Câu trả lời:


42

Is is possible to build Ubuntu from source to get the same kind of benefit?

Tôi không chắc chắn về lợi ích nếu bạn có các thành phần phần cứng khá mới nhưng đối với phần "Ubuntu từ nguồn" của câu hỏi, câu trả lời là CÓ, bạn có thể xây dựng không chỉ các ứng dụng yêu thích của mình từ nguồn, mà là toàn bộ hệ điều hành.

Đây là cách thực hiện:

Bạn cần cài đặt apt-build . Đây là một công cụ comandline như apt-get, nhưng thay vì tải xuống và cài đặt gói nhị phân, apt-build tải mã nguồn của gói, biên dịch nó và sau đó cài đặt nó vào hệ thống của bạn.

Sau khi bạn cài đặt nó với

sudo apt-get install apt-build

bạn sẽ được yêu cầu mức tối ưu hóa (trung bình là ok), cho dù bạn muốn tạo repo apt-build cho APT (Có) và câu hỏi về kiến ​​trúc bộ xử lý (intel i7 của tôi được coi là core2). Tất nhiên tất cả các tùy chọn có thể được cấu hình lại theo cách này:

dpkg-reconfigure apt-build

Lệnh trên cung cấp hai tùy chọn bổ sung cho trình biên dịch gcc và tạo trình xây dựng. Mô tả của họ có thể được tìm thấy trong hướng dẫn hệ thống: man gcc và man make.

Đối với một tùy chọn lệnh thủ công và có sẵn kiểm tra

man apt-build

Nhưng hữu ích nhất là:

  • Cập nhật apt-build - cập nhật danh sách repo, (như cập nhật apt-get)
  • nâng cấp apt-build - cập nhật hệ điều hành, (như nâng cấp apt-get)
  • chương trình cài đặt apt-build - cài đặt một ứng dụng, (như cài đặt apt-get)
  • thế giới apt-build - thứ dành cho người dùng khó tính, nó biên dịch lại toàn bộ hệ thống!

Ví dụ:

Hãy nói rằng bạn muốn biên dịch / cài đặt Gedit. Thay vì cài đặt apt-get bạn chỉ cần làm

sudo apt-build install gedit

Apt-build sử dụng các mục deb-src có trong tệp /etc/apt/source.list để quá trình biên dịch và cài đặt hoàn toàn tự động (tương tự như xuất hiện trong Gentoo). Apt-build tải xuống các nguồn của ứng dụng chính và các phụ thuộc của nó, biên dịch chúng, tạo gói gỡ lỗi và cuối cùng cài đặt gói.

Một số lưu ý về thế giới apt-build.

Theo tôi không nên thử, trừ khi bạn có sẵn 24 giờ trở lên!

Nếu vậy, điều đầu tiên bạn nên làm, xóa / tắt / gỡ cài đặt bất kỳ ứng dụng của bên thứ ba nào (tốt hơn là thực hiện trong bản cài đặt mới của Ubuntu) và sau đó làm:

sudo su
dpkg --get-selections | awk '{if ($2 == "install") print $1}'> /etc/apt/apt-build.list
exit

Lệnh trên sẽ sao chép danh sách đầy đủ các gói hệ thống của bạn vào apt-build.list để chúng có thể được biên dịch từ nguồn. Mở tập tin đó

sudo gedit /etc/apt/apt-build.list

và xóa mọi mục nhập GCC / G ++

Sau đó, bạn có thể làm:

sudo apt-build world

Tôi đề nghị thêm hai tùy chọn - --yes và --force-yes - để làm cho quá trình xây dựng lại hoàn toàn tự động.


10
+1 cho câu trả lời cụ thể, so với "tại sao xây dựng?" câu trả lời. Tôi cũng muốn đọc một ý kiến ​​sâu rộng hơn (ngay cả khi chủ quan) về những lợi ích bạn có thể (hoặc không thể) có được khi sử dụng apt-build.
enzotib

1
Hiện tại có +17 cho câu trả lời này. Nhưng có ai thành công chưa?
keiki

1
@ otakun85 Tôi đã sử dụng apt-build để biên dịch một số gói thành công trên Ubuntu (không thể nhớ bản phát hành nào, một trong 12.04 | 12.10 | 13.04), tôi đã thử dùng thế giới apt-build là một mớ hỗn độn. Các trang người đàn ông cho apt-xây dựng có này ở cuối BUGS Many., vì vậy mong đợi rắc rối.
Phizes

Tôi thấy rằng thay vì sử dụng apt-build worldtốt hơn để tải xuống một cuốn sách "Linux từ đầu" và làm apt-buildcho mọi gói được liệt kê trong đó. Nó chỉ định thứ tự chính xác, v.v. Ví dụ tôi không chắc chắn, nếu apt-build worldbiết trước tiên nên biên dịch lại binutils, sau gccđó binutils, gccmột lần nữa, sau đó là ngôn ngữ lập trình, gzipv.v. Có vẻ như nó chỉ biên dịch mọi thứ theo thứ tự abc.
Serhyi Vynohradov

@SerhyiVynohradov: Không thành vấn đề. LFS làm điều đó để tránh để lại bất kỳ sự phụ thuộc nào vào các thư viện trong hệ thống máy chủ, nhưng ở đây, nó chỉ thay thế mọi thứ tại chỗ bằng các phiên bản được biên dịch; họ sẽ vẫn ở cùng một vị trí, có cùng ABI, v.v.
Nick Matteo

3

Bạn có thể bắt đầu một flamewar và một cuộc tranh luận lớn về loại chủ đề này, nhưng hãy nhìn vào cuộc sống thực.

Tốc độ của hệ điều hành của bạn phụ thuộc rất nhiều vào phần cứng bạn chạy nó và đó là yếu tố chính.

Tôi thay đổi các bản phân phối thường xuyên trong khi hầu hết thời gian ở với Arch, nhưng Arch có nhanh hơn Ubuntu không? Không.

Gnome với compiz trên Ubuntu 10.10 sử dụng khoảng 300ram, trên Arch 200ram, tôi có 4gb ram, tôi không cảm thấy sự khác biệt, nhưng nếu bạn so sánh Ubuntu với gnome với Arch với khả năng đáp ứng và tài nguyên rất lớn sử dụng (300ram so với 50ram), nhưng điều này chỉ quan trọng nếu bạn chọn một bản phân phối cho netbook.

Vì vậy, nếu bạn có một máy tính để bàn nhanh và không muốn mất thời gian mày mò với hệ thống của mình, hãy sử dụng Ubuntu, nhưng nếu bạn có một chiếc netbook thì hãy cân nhắc sử dụng WM nhẹ trên Arch :)


Chà, đến một lúc nào đó bạn có thể gặp phải tình huống bạn có phần cứng mới nhất, nhưng bạn vẫn cần phải thực hiện các thao tác kéo dài hàng giờ. Và thay vì thiết lập một loạt các máy chủ để phân phối tải, bạn không ngại dành thời gian mày mò, để có được mức tăng thêm 20%. Tôi chưa bao giờ sử dụng Arch, nhưng tôi đã thử Gentoo. Và tôi đã thấy rằng rất nhiều lần không có thứ gọi là "distro nhanh hơn". Thay vào đó là một "bản phân phối với ít phần mềm". Bạn có thể có hệ thống xương trần nhanh, nhưng không an toàn. Và khi bạn cài đặt các gói khác, nó sẽ trở thành tốc độ tương tự như Ubuntu + apt-build.
Serhyi Vynohradov

0

Apt-build hữu ích cho nhiều hơn hiệu năng, bạn có thể xây dựng hình ảnh phân phối và kho lưu trữ tùy chỉnh cho phần cứng cụ thể sẵn sàng để cài đặt hàng loạt cho doanh nghiệp của bạn. Bằng cách này, tôi có nghĩa là một phân phối nhị phân được tối ưu hóa nếu bạn biết tất cả phần cứng sẽ giống nhau. Theo cách này, chỉ có một máy tính thực hiện tất cả công việc biên dịch và phần còn lại chỉ được nâng cấp bằng ISO được làm lại. Nó không hoàn toàn chỉ dành cho trọng lượng nhẹ hoặc mã hóa. Và ISO cài đặt tùy chỉnh cho phép bạn cài đặt lại mà không cần biên dịch lại nếu vì lý do nào đó hệ thống của bạn không thể phục hồi sau thảm họa.

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.