Jak zbudować cały mój zainstalowany pakiet ze źródeł?

26

Czytałem o tym, w jaki sposób dystrybucje Linuksa oparte na źródłach, takie jak Gentoo, mogą znacznie zwiększyć wydajność w porównaniu do wcześniej zbudowanych dystrybucji takich jak Ubuntu, ponieważ instalują się one ze źródła z optymalizacjami dla konkretnego systemu. Czy można zbudować Ubuntu ze źródła, aby uzyskać ten sam rodzaj korzyści?

ciferkey
źródło
3
W tym celu zainstaluj Gentoo, a nie Ubuntu. Poważnie, po co używać dystrybucji, która absolutnie zawodzi w zarządzaniu zależnościami opartymi na źródłach, zamiast takiej, która się na nią opiera.
mathepic
7
Byłbym ciekawy, jak porównane są źródła i pliki binarne, w których używano tych samych wersji i konfiguracji stosu. Porównanie to zazwyczaj wersja Ubuntu (z domyślnymi ustawieniami) w porównaniu z najnowszym możliwym Gentoo z dziwnym systemem plików i dziwacznymi ustawieniami domyślnymi aplikacji. Domyślne ustawienia Ubuntu są w większości całkiem rozsądne i stąd pochodzi większość jego wydajności i dlatego większość prostych porównań stawia Ubuntu przed Gentoo.
Oli
1
Jednym świetnym przykładem złego porównania jest artykuł w Linux Magazine (wymagana jest darmowa rejestracja), w którym używają różnych jąder, różnych sterowników Nvidii, różnych wersji X i różnych środowisk pulpitu. Równie dobrze możesz porównać dwie różne wersje Ubuntu. Pokażą podobne skale różnicy.
Oli
4
Co zwiększa wydajność? Przepustowość sieci, szybkość dysku, przełączanie procesów, obliczenia matematyczne, grafika 3D, czas uruchamiania?
użytkownik nieznany
1
Radziłbym tylko skompilować oprogramowanie, które wymaga dużej wydajności procesora (przychodzi mi na myśl kodowanie wideo) i jest bardzo używane przez użytkownika i korzysta z optymalizacji procesora, na przykład FMA3 lub AVX2.
keiki

Odpowiedzi:

42

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

Nie jestem pewien korzyści, jeśli masz dość nowe komponenty sprzętowe, ale w części pytania „Ubuntu ze źródła” odpowiedź brzmi TAK, możesz budować nie tylko swoje ulubione aplikacje ze źródła, ale cały system operacyjny.

Oto jak:

Musisz zainstalować apt-build . Jest to narzędzie komandline, takie jak apt-get, ale zamiast pobierać i instalować pakiet binarny, apt-build pobiera kod źródłowy pakietu, kompiluje go, a następnie instaluje w systemie.

Po zainstalowaniu za pomocą

sudo apt-get install apt-build

zostaniesz zapytany o poziom optymalizacji (medium jest w porządku), czy chcesz utworzyć apt-build repo dla APT (Tak) i pytanie o architekturę procesora (mój intel i7 jest uważany za core2). Oczywiście wszystkie opcje można zmienić w następujący sposób:

dpkg-reconfigure apt-build

Powyższe polecenie oferuje dwie dodatkowe opcje dla kompilatora gcc i make buildera. Ich opisy można znaleźć w instrukcjach systemowych: man gcc i man make.

Aby sprawdzić ręczne i dostępne opcje poleceń, sprawdź

man apt-build

Ale najbardziej przydatne są:

  • apt-build update - aktualizuje listę repozytoriów, (jak aktualizacja apt-get)
  • apt-build upgrade - aktualizuje system operacyjny (jak apt-get upgrade)
  • program instalacyjny apt-build - instaluje aplikację (np. apt-get install)
  • apt-build world - coś dla najbardziej wymagających użytkowników, rekompiluje cały system!

Na przykład:

Powiedzmy, że chcesz skompilować / zainstalować Gedit. Zamiast instalować apt-get, po prostu to robisz

sudo apt-build install gedit

Apt-build wykorzystuje wpisy deb-src zawarte w pliku /etc/apt/sources.list, dzięki czemu procesy kompilacji i instalacji są w pełni automatyczne (podobne do pojawiających się w Gentoo). Apt-build pobiera źródła głównej aplikacji i jej zależności, kompiluje je, tworzy pakiet deb, a na koniec instaluje pakiet.

Kilka uwag na temat świata apt-build.

Moim zdaniem nie próbuj tego, chyba że masz 24 godziny lub więcej!

Jeśli tak, powinieneś usunąć / wyłączyć / odinstalować aplikacje innych firm (lepiej to zrobić w nowej instalacji Ubuntu), a następnie:

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

Powyższe polecenie skopiuje pełną listę pakietów systemowych do apt-build.list, aby można je było skompilować ze źródła. Otwórz ten plik

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

i usuń wszelkie wpisy GCC / G ++

Następnie możesz zrobić:

sudo apt-build world

Sugeruję dodanie dwóch opcji - - tak i --force-tak - aby proces odbudowy był w pełni automatyczny.

Salih Emin
źródło
10
+1 za konkretną odpowiedź, w porównaniu do „po co budować?” odpowiedzi Wolałbym także przeczytać szerszą opinię (nawet jeśli subiektywną) na temat korzyści, które można (lub nie można) uzyskać apt-build.
enzotib
1
Obecnie na tę odpowiedź jest +17. Ale czy ktoś to zrobił?
keiki
1
@ otakun85 Użyłem apt-build do skompilowania niektórych pakietów z powodzeniem na Ubuntu (nie pamiętam, która wersja, jeden z 12.04 | 12.10 | 13.04), próbowałem świata apt-build, co było bałaganem. Strona podręcznika dla apt-build ma to na końcu BUGS Many., więc spodziewać się kłopotów.
Phizes,
Uważam, że zamiast korzystać apt-build world, lepiej jest pobrać książkę „Linux from Scratch” i zrobić to apt-builddla każdego pakietu w niej wymienionego. Określa ona odpowiedniej kolejności itd Na przykład ja nie jestem pewien, czy apt-build worldwie, że powinien najpierw przebudować binutils, a potem gcc, potem binutilsznowu, gccznowu, to języki programowania, gzipitd. Wydaje się, że po prostu kompiluje wszystko w porządku alfabetycznym.
Serhyi Vynohradov,
@SerhyiVynohradov: To nie miałoby znaczenia. LFS robi to, aby uniknąć pozostawiania jakichkolwiek zależności od bibliotek w systemie hosta, ale tutaj po prostu zastępuje wszystko na miejscu skompilowanymi wersjami; nadal będą w tym samym miejscu, będą mieć ten sam ABI itp.
Nick Matteo
3

Można rozpocząć flamewar i wielką debatę na ten temat, ale spójrzmy na prawdziwe życie.

Szybkość twojego systemu operacyjnego zależy w dużym stopniu od tego, na jakim sprzęcie go uruchamiasz i jest to główny czynnik.

Często zmieniam dystrybucje, podczas gdy większość czasu spędzam z Arch, ale czy Arch jest znacznie szybszy niż Ubuntu? Nie.

Gnome z compiz na Ubuntu 10.10 używa około 300ram, na Arch 200ram, mam 4 GB pamięci RAM, nie czuję różnicy, ale jeśli porównasz Ubuntu z gnomem do Archa z niesamowitym, nastąpi ogromny wzrost responsywności i zasobów użycie (300ram vs 50ram), ale ma to znaczenie tylko wtedy, gdy wybierasz dystrybucję dla netbooka.

Więc jeśli masz szybki pulpit i nie chcesz spędzać czasu na majstrowaniu przy swoim systemie, po prostu użyj Ubuntu, ale jeśli masz netbooka, rozważ użycie lekkiej WM na Archu :)

Marcus Maxwell
źródło
W pewnym momencie możesz dojść do sytuacji, w której masz najnowszy sprzęt, ale nadal musisz wykonywać godzinne operacje. Zamiast instalować kilka serwerów w celu rozdzielenia obciążenia, nie masz nic przeciwko marnowaniu czasu na majsterkowanie, aby uzyskać dodatkowe 20% wzrostu. Nigdy nie korzystałem z Arch, ale próbowałem Gentoo. I widziałem, że wiele razy nie ma czegoś takiego jak „szybsza dystrybucja”. Zamiast tego jest „dystrybucja z mniejszą ilością oprogramowania”. Być może masz system gołych kości, który jest szybki, ale nie jest bezpieczny. A kiedy instalujesz inne pakiety, staje się on taki sam, jak Ubuntu + apt-build.
Serhyi Vynohradov,
0

Apt-build jest przydatny nie tylko pod względem wydajności, możesz tworzyć niestandardowe obrazy dystrybucyjne i repozytorium dla określonego sprzętu gotowego do masowej instalacji dla Twojej firmy. Rozumiem przez to zoptymalizowaną dystrybucję binarną, jeśli wiesz, że cały sprzęt będzie taki sam. W ten sposób tylko jeden komputer wykonuje całą kompilację, a pozostałe są po prostu aktualizowane przy użyciu zremasterowanego ISO. To nie jest całkowicie tylko dla lekkości lub kodowania. A niestandardowy ISO instalatora pozwala na ponowną instalację bez ponownej kompilacji, jeśli z jakiegoś powodu system nie jest możliwy do odzyskania po awarii.

Podwójne T.
źródło