Apt-build — optymalizacja dla każdego

23 sierpnia 2007, michuk

Z pewnością wielu użytkowników Linuksa chciałoby posiadać system w pełni zoptymalizowany pod swój komputer, jednak nie ma chęci lub umiejętności, aby instalować dystrybucję Gentoo. Tu z pomocą przychodzi nam przydatne narzędzie apt-build, które można zastosować w każdej dystrybucji korzystającej z APT-a jako menadżera pakietów.

Autor: ???

Tu jest właśnie czas na apt-builda. Po instalacji programu poleceniem

apt-get install apt-build

zainstalujemy i skonfigurujemy apt-builda. Podczas konfiguracji jesteśmy pytani o stopień optymalizacji, czy chcemy utworzyć repozytorium apt-builda dla APT oraz o architekturę procesora. Oczywiście w każdej chwili możemy przekonfigurować ustawienia poleceniem:
dpkg-reconfigure apt-build
Podczas rekonfiguracji mamy do wyboru dodatkowe opcje dla gcc i make, opis tych opcji można znaleźć w pomocy systemowej: man gcc i man make.

Teraz możemy już spokojnie optymalizować nasz system. Program korzysta z wpisów deb-src w pliku /etc/apt/sources.list. Dzięki źródłom zawartym w tym repozytorium, prawie całkowicie automatyzuje proces kompilacji i instalacji oprogramowania (podobnie jak emerge w Gentoo). Pobiera źródła oraz zależności, kompiluje program, tworzy pakiet deb oraz go instaluje.

Mamy też do dyspozycji spory wachlarz opcji. Opiszę jednak tylko te podstawowe:

apt-build update — aktualizuje listę repozytoriów,
apt-build upgrade — aktualizuje system,
apt-build install program — instaluje program,
apt-build world — coś dla eksperymentatorów, rekompiluje cały system.

Przydatne będą też opcje:
--noupdate — użyteczne jeżeli mamy słaby komputer i nie chcemy za każdym razem odświeżać listy repozytoriów (apt-build przy każdym poleceniu wykonuje update),
--yes — nie musimy potwierdzać czy chcemy zainstalować program,
--force-yes — instalacja nieuwierzytelnionych pakietów (UWAGA: apt-build nie zainstaluje pakietu nieuwierzytelnionego, co gorsza podczas instalacji nie zapyta się nas o to, więc ta opcja jest wysoce wskazana),
--reinstall — reinstaluje pakiet,
--rebuild — przebudowuje pakiet.

Przebuduj sobie Debiana!

Jeżeli ktoś po przeczytaniu kilku zdań wcześniej chce rzucić się na głębokie wody i od razu przebudować system, musi wiedzieć kilka rzeczy, bez których rekompilacja się nie odbędzie. Polecenie apt-build world powinno na początku wyrzucić:

-----Rebuilding the world!-----
-----Building package list-----
Please read README.Debian first.

Oczywiście system nie został przebudowany. Dzieje się tak ponieważ domyślne apt-build nie ma w sobie pełnej listy pakietów systemowych, jednak da się to naprawić poleceniem:
dpkg --get-selections | awk '{if ($2 == "install") print $1}'> /etc/apt/apt-build.list

Ja ze swojej strony poleciłbym jeszcze dodanie opcji –-yes oraz –force-yes, aby zautomatyzować proces przebudowy. Po tym zabiegu, rekompilacja powinna wystartować bez problemu, jednak nigdy nie ma 100% pewności, że kompilacja nie stanie w pewnym miejscu, oraz że nawet po teoretycznie dobrze wykonanym zabiegu, wszystko będzie działać jak powinno.

A co z flagami USE?

Wielu z was zapewne zastanawia, że jeżeli możemy przekompilować system tak jak w Gentoo, to czy tu też mamy dostęp do flag USE. Dla niewtajemniczonych: flagi USE są specjalnymi opcjami w portage (systemie pakietów Gentoo). Dzięki nim nie musimy kompilować programów z obsługą wszystkich opcji. Na przykład jeżeli korzystamy tylko z środowiska GNOME i nie potrzebujemy obsługi KDE, możemy ustawić kompilator tak, aby programy były kompilowane tylko z obsługą tego pierwszego. Niestety apt-build nie posiada obsługi tych flag.

Mimo że sam program jest w stadium wersji rozwojowej, zapowiada się bardzo obiecująco. Według mnie, w przyszłości będzie mógł spokojnie konkurować z portage w Gentoo. Jednak na dzień dzisiejszy, system ten jest zbyt młody i mało dopracowany, aby konkurować ze stabilnym, dojrzałym i łatwym w obsłudze portage. Jednak Debian, w odróżnieniu od Gentoo, nie został stworzony do kompilacji a wręcz odwrotnie. Jeżeli tylko możemy, powinniśmy korzystać z domyślnego repozytorium, jednak kto z nas nie pokusi się, aby całkowicie zoptymalizować swój system.

Na koniec nietypowa prośba. Autor tego artykułu jest bardzo proszony o odezwanie się do michuka: michuk@jakilinux.org, najlepiej z CC do t_ziela: t_ziel@jakilinux.org). Niestety w niewyjaśnionych okolicznościach michuk zagubił logi jabbera czy też wymianę mailową z autorem i nie potrafi go teraz zidentyfikować :P

Znalazłeś literówkę? Zgłoś ją używając formularza!

Wpisz wynik działania: pięć - 3:

Komentarze (RSS)

Komentarze są prywatnymi opiniami dodających je osób. Prosimy o zachowanie kultury wypowiedzi. Komentarze obraźliwe oraz obniżające poziom serwisu będą usuwane. Więcej w regulaminie komentowania.

Liczba komentarzy: 23

zwiń wątek Radzio  24 sierpnia 2007 o godz. 0:20 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: +3 [Pokaż komentarz]

Świetny artykuł, na pewno się przyda!!! Mam jednak dwa pytanka
czy da się tego używać pod PCLinuxOS-em ta dystrybucja korzysta z apt-a, ale na pakietach rpm. I drugie pytanie czy istnieje podobne narzędzie do dystrybucji takich jak np. Fedora?

zwiń wątek dave  24 sierpnia 2007 o godz. 2:00 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: +1 [Pokaż komentarz]

czytaj tekst to sie dowiesz ze takie cos jest tylko dla systemow debianowych ;)
PCLOS nie uzywa prawdziwego apta tylko jego przebudowanej kopii wiec to narzedzie nie bedzie dzialac… chyba :P

 
 
zwiń wątek szuman  24 sierpnia 2007 o godz. 8:05 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: +4 [Pokaż komentarz]

zieew… po 3 w nocy wystartowałem apt-build world i coś czarno to widzę :/ dobrą godzinę maglowało Amaroka, teraz dochodzi ósma, więc ponad cztery godziny zabawy i doszliśmy do KDE :| całe szczęście, że mam szybkie łącze, bo pewnie do niedzieli by zeszło, a tak to po cichu mogę liczyć, że jeszcze przed północą będę mógł zrestartować system ;)

zwiń wątek elfstone  28 sierpnia 2007 o godz. 13:43 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: +1 [Pokaż komentarz]

Kompilacja jest zależna od mocy procesora. Mi 2 dni kompilował się Gentoo na Pentium 4 2.0 GHz i 512 Ram

 
 
zwiń wątek t0m3k  24 sierpnia 2007 o godz. 9:32 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]

Świetne, tego mi brakowało. Bawienie się z apt-get source i budowaniem ręcznie każdego pakietu to nie dla mnie. A na zabawy z Gentoo niestety nie mam czasu.

 
zwiń wątek flamenco108  24 sierpnia 2007 o godz. 10:21 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: +1 [Pokaż komentarz]

Cóż, bawiłem się gentoo 2,5 roku. Teraz zmigrowałem na kubuntu, żeby się już nie bawić. Ale brakowało mi możliwości optymalizacji, bo np. mój laptok jest dosyć słaby. Jednakowoż nauczony doświadczeniami z gentoo, poczekam na stabilne wydanie tego pakietu.

 
zwiń wątek LordD  24 sierpnia 2007 o godz. 12:09 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]

Jeśli mam Celerona 2.6, to co mam zaznaczyć przy wyborze architektury? Pentium-MMX?

zwiń wątek andrek  24 sierpnia 2007 o godz. 13:28 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]

Zapewne Pentium4

 
 
zwiń wątek Hipolit.X  24 sierpnia 2007 o godz. 14:55 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]

A jak się ma apt-build do apt-src?

 
zwiń wątek ptecza  24 sierpnia 2007 o godz. 16:52 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: +2 [Pokaż komentarz]

> Mimo że sam program jest w stadium wersji rozwojowej, zapowiada się
> bardzo obiecująco. Według mnie, w przyszłości będzie mógł spokojnie
> konkurować z portage w Gentoo. Jednak na dzień dzisiejszy,
> system ten jest zbyt młody i mało dopracowany, aby konkurować ze
> stabilnym, dojrzałym i łatwym w obsłudze portage.”

Być może ten artykuł został napisany dawno temu, bo apt-build nie jest wcale jakimś młodym projektem, gdyż ma już ponad 5 lat:

$ tail -6 apt-build-0.12.28/debian/changelog
apt-build (0.1-1) unstable; urgency=low

* Initial Release.

— Julien Danjou Tue, 18 Jun 2002 20:23:02 +0200

Nie jest też obecnie jakoś intensywnie rozwijany:

$ head -6 apt-build-0.12.28/debian/changelog
apt-build (0.12.28) unstable; urgency=low

* Fix problem with epochs (Closes: #408346)
* Switch to debhelper 5

— Julien Danjou Thu, 12 Apr 2007 15:40:41 +0200

Przypuszczam, że Julien ma po prostu ciekawsze rzeczy do roboty,
np. rebuildd.

 
zwiń wątek ak47  24 sierpnia 2007 o godz. 18:43 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]

Porównywac ten pakiecik z Gentoo to jak porównywać kalkulator do komputera. Potęga Gentoo polega głównie na doborze flag ale nie kompilatora ale flag USE (czyli tego co chcesz uzywać) tzn nie chcesz gnoma więc nie bedziesz miał do niego suportu w bibliotekach prowadzi to mniejszego czyli szybszego kodu wykonywalnego bibliotek i programów. A do tego nie zostały stworzone dystrybuje tybu *butu czy inne. To narzędzie moze jedynie służyć do rekompilacji systemu i tu się sprawdza z tego jak widać. Jak chcecie miec Gentoo na *buntu no nalezy zrezygnować z apt-geta i zapoznac sie : wget, tar, (./configure, make, make install , i jakis paczkarz do buntu bo bez tego burdel bedzie w systemie za chwilke). Ogólnie nie uda wam się w sposób automatyczyny przerobic ubuntu na Gentoo. Apt nie jest przystosowany do współpracy z flagami socketami. To się nazywa błąd projektowy :), jesliby to uważac za bład, ale jak to sie mówi klient nasz Pan, Jak sie bedziecie długo i żarliwie upierać, Canonical zrobi dla was takie rozszerzenie.

zwiń wątek jellonek  25 sierpnia 2007 o godz. 10:43 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: +1 [Pokaż komentarz]

jak juz to:
apt-get source nazwa_pakietu
(zassie zrodla i pacze, po czym je zalozy)
cd nazwa_pakietu^T
debian/rules binary

w ten sposob sie pod debianem robi paczki, a nie przez wget/configure/make…

zwiń wątek ptecza  25 sierpnia 2007 o godz. 20:51 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: +1 [Pokaż komentarz]

Na pewnym poziomie ogólności można powiedzieć, że pod Debianem używa się wget/configure/make do budowania pakietów binarnych :)

Wprawdzie `apt-get source nazwa_pakietu` nie używa `wget` do pobierania pakietu źródłowego, ale można go z powodzeniem zastąpić tym narzędziem i najczęściej tak właśnie robię,
gdy tworzę backporty na własne potrzeby:

wget nazwa_pakietu*.orig.gz
wget nazwa_pakietu*.diff.gz
wget nazwa_pakietu*dsc

Plik debian/rules uruchamia i configure i make dla oryginalnego Makefile’a.

BTW, nie polecałbym nikomu używania `debian/rules binary`, gdyż nie sprawdza on Build-Depends:, co może spowodować, że paczka nie zostanie zbudowana we właściwy sposób. O wiele lepszym rozwiązaniem jest użycie `dpkg-buildpackage`.

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
zwiń wątek ptecza  25 sierpnia 2007 o godz. 20:54 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]

Oczywiście `wget` musi wiedzieć skąd ma pobrać pliki, czyli powinno być coś w ten deseń:

wget http://mirror/sciezka/do/nazwa_pakietu*.orig.gz
wget http://mirror/sciezka/do/nazwa_pakietu*.diff.gz
wget http://mirror/sciezka/do/nazwa_pakietu*dsc

 
 
 
zwiń wątek jellonek  25 sierpnia 2007 o godz. 10:49 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: +1 [Pokaż komentarz]

co do flag, “blad projektowy” i “canonical zrobi dla was takie rozszerzenie” (dosc zabawne stwierdzenie) to kolega chyba nie rozumie o czym pisze…

poprostu inne zalozenia lezaly u podstaw tworzenia dpkg (apt-get powstal duuuuuuuzo pozniej). system ten od poczatku byl ukierunkowany na dostarczanie enduserowi dobrze wytestowanych paczek binarnych i najwyrazniej sie sprawdzil, skoro debian ma obecnie najsilniejsza baze pakietowa…

zwiń wątek ak47  26 sierpnia 2007 o godz. 18:51 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: -2 [Pokaż komentarz]

Doskonale Jellu rozumiem. Dlatego napisałem o błędzie projektowym :)(no chyba że wolisz to uznać za nie uzględnioną mozliwość, ale to na jedno wychodzi) Poprostu zostały olane flagi i takie tam zabawki jak kompilowanie pod inny system czy kompilacja skrosna pakietów. To narzędzie nie zostało do tego stworzone. Ale jak by się kto uparł można zrobić własne rozszerzenie do apta które cos takiego by wspierało. Pewnie duzo rzeczy byłoby do przebudowania, ale jest do zrobienia.

“skoro debian ma obecnie najsilniejsza baze pakietowa…” a różne buntu mają najwiecej userów (podobno).

blee, blee, blee marketing

To czego się uzywa zależy od potrzeb. Gentoo nie umarło, Redhat nadal zyje nadal najstarszy jest Slackware, więc kazde z tych podejść ma swoich zwolenników i spełnia czyjeś potrzeby.

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
 
 
 
zwiń wątek tomekw  24 sierpnia 2007 o godz. 20:32 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: +1 [Pokaż komentarz]

Można zrobić tzw. “prefix” i używać Portage na innych systemach: http://www.gentoo.org/proj/en/gentoo-alt/prefix/ Ale… po co? :)

A całe kompilowanie ze źródeł dla szybkości to mit, wzrost wydajności niezauważalny dla przeciętnego użytkownika (a sam używam Gentoo od kilku lat i nie mam zamiaru się z nim rozstawać). Liczy się konfigurowalność i łatwość zarządzania, a to z pewnością umożliwia Portage i Gentoo ogólnie :)

zwiń wątek ak47  25 sierpnia 2007 o godz. 10:38 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]

No tak nie do końca to mit. Jak uzywalem slacka i kompilowałem część rzeczy ze źródeł to “widziałem” wzrost wydajnośći (poprostu działało lepiej/wydajniej/stabilniej)

zwiń wątek jellonek  25 sierpnia 2007 o godz. 10:52 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: +1 [Pokaż komentarz]

kiedy to bylo?
zdaje sie ze dopiero od 10tki slack kompilowany jest na i586, bo wczesniejsze byly domyslnie kompilowane na i386…

moze w tym problem?

charakter Patricka powoduje ze ciezko go przekonac do wielu spraw, jesli tylko cos sobie wbije do glowy…

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
zwiń wątek ak47  26 sierpnia 2007 o godz. 18:54 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]

To akurat była 10.
Ale przyznaj się Jellu ze mplayera kompilujesz

 
 
 
 
zwiń wątek atavus  25 sierpnia 2007 o godz. 13:34 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]

przydaloby sie zamiescic jakąś rade jak wywalic pozniej (tj. po /re-/kompilacji systemu) wszystkie niepotrzebne juz pakiety -dev… bo po co maja miejsce zajmowc? :P

zwiń wątek jeronimmo  26 sierpnia 2007 o godz. 12:16 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]

No właśnie ja mam podobne pytanko. Posiadam laptopa p1 mmx 233 Mhz i stoi na nim debian + skompilowane “ręcznie” xfce. Jeśli chciałbym “podrasować” część pakietów (icewm, xfce …) oraz część bibliotek to chyba powinienem najpierw wywalić oryginalne pakiety które chcę optymalizować ?

 
 
zwiń wątek ?  26 sierpnia 2007 o godz. 23:48 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: +1 [Pokaż komentarz]
 

Komentarze do tego wpisu są wyłączone.

O Autorze

Borys Musielak

Twórca i redaktor wortalu jakilinux.org oraz serwisu OSnews.pl. Lobbysta udający eksperta. Znany również jako Ojciec Dyrektor. Zawodowo: deweloper J2EE w Lądku Zdrój.

RSS

Możesz śledzić komentarze do tego artykułu poprzez specjalny kanał; RSS 2.0 .

Porównaj dystrybucje!

vs

Dołącz do nas!

Piszesz teksty o Linuksie? Nie pisz do poduszki! Publikuj na jakilinux.org!
Więcej o współpracy na blogu Grupy Jakilinux.

Butik JL

jakilinux butik
Obejrzyj więcej produktów i wybierz coś dla siebie.

Subskrybuj Biuletyn!

Biuletyn Grupy Jakilinux to okresowy subiektywny przegląd najważniejszych informacji o których piszemy w naszych serwisach, który wysyłamy e-mailem. Subskrybuj biuletyn!