Zawsze niebezpieczne jest nie zgadzać się z Emmetem, więc zacznę od potwierdzenia, że jego odpowiedź jest prawdopodobnie bardziej poprawna. Jednak osobiście uważam, że pbuilder jest bardziej przyjazny dla użytkownika i bardziej wydajny od samego początku.
Jeśli korzystasz z systemu Ubuntu 12.10 lub nowszego, zainstaluj doskonałe skrypty pbuilder, które są zestawem bardzo przyjaznych owijarek wokół surowego pbuildera.
Jeśli korzystasz z systemu Ubuntu 12.04, możesz zainstalować skrypty pbuilder z repozytorium backports.
Teraz porównajmy i porównajmy łatwość obsługi równoważnych operacji. W tych przykładach omówię korzystanie z chroota ARM hostowanego na x86, ale koncepcje nadal dotyczą chroota x86 hostowanego na x86. Pamiętaj, że używam owijaczy skryptów pbuilder.
Należy zauważyć, że skrypty pbuilder implementują trochę konwencji, podobnie jak Ruby on Rails podejmuje pewne decyzje, abyś mógł szybko zacząć. Spróbuję wskazać to na bieżąco.
Utwórz chroot
mk-sbuild --arch=armhf quantal
vs
# in addition to the chroot, creates a new, empty directory named ~/Projects/quantal-armhf
pcreate -a armhf -d quantal quantal-armhf
werdykt: remis , obie linie poleceń są dość proste i obie mogą w razie potrzeby skorzystać z dodatkowych opcji dla bardziej wyszukanych przypadków użycia. Zwróć jednak uwagę na dodatkowy nowy katalog utworzony przez pcreate.
Pobierz pakiet źródłowy
# standard debian/ubuntu method, works in any directory
apt-get source casper
vs.
# 'quantal-armhf' is the name of the chroot created earlier
# results in downloading package to: ~/Projects/quantal-armhf/casper/
pget quantal-armhf casper
werdykt: niewielka przewaga dla sbuild , ponieważ używasz standardowej najlepszej praktyki debian / ubuntu. Konwencja stosowana przez pget może początkowo wydawać się dziwna, ale ponieważ pracuję nad wieloma pakietami w wielu wersjach Ubuntu, podoba mi się organizacja, którą narzuca. Zauważ też, że apt-get source również wypakowuje źródło gdziekolwiek uruchomisz polecenie, pozostawiając ci * .orig.tar.gz, * .debian.tar.gz, * .dsc i rozwinięty katalog, który osobiście znajduję być niechlujnym. Obiecuję, że piękno tej organizacji będzie wkrótce.
Wpisz chroot, efemeryczną wersję
schroot -c quantal-armhf
vs.
ptest quantal-armhf
werdykt: niewielka przewaga kompilacji , mniej znaków do wpisania to mniej znaków. Zwróć uwagę, że w tej wersji wchodzenia do chroot wszelkie wprowadzone tutaj zmiany zostaną utracone po wyjściu z chroot. Zauważ też, że w schroot pozostaniesz normalnym użytkownikiem, podczas gdy z ptest będziesz w chroot jako użytkownik root.
Wprowadź chroot, zapisz zmiany wersji
sudo schroot -c quantal-armhf-source -u root
vs.
ptest quantal-armhf --save
werdykt: niewielka przewaga dla pbuild , mniej znaków i bardziej intuicyjne argumenty wiersza poleceń, moim zdaniem. W tej wersji wprowadzania chroota wszelkie wprowadzone w nim zmiany zostaną zapisane dla przyszłych wywołań.
Zbuduj pakiet w chroot
debuild -S -sa -I -i
sbuild -A --arch armhf -d quantal-armhf /path/to/casper-1.315.dsc
vs.
# must be invoked when pwd is ~/Projects/quantal-armhf/casper/casper-1.315
pbuild
werdykt: pbuild , teraz widzimy pierwszą znaczącą wygraną przy użyciu konwencji pbuild. Jest to bardzo prosta komenda, której nie trzeba zapamiętywać, w przeciwieństwie do architektury, nazwy chroot i wymagającej ścieżki do pliku * .dsc wymaganego przez sbuild. Dodatkowo musisz pamiętać o wygenerowaniu nowego pliku * .dsc z sbuild, podczas gdy pbuild zrobi to automatycznie.
Zbuduj ten sam pakiet w chroot, po raz drugi
W powyższym przykładzie zarówno sbuild, jak i pbuild pobiorą i zainstalują build-deps w swoich odpowiednich chrootach. Jednak pbuild zapisuje pobrane pliki .deb w / var, więc jeśli wywołasz pbuild po raz drugi, nie musisz ponownie pobierać wszystkich build-dep (chociaż muszą one być nadal zainstalowane w chroot). sbuild nie buforuje plików .deb (przynajmniej domyślnie), dlatego musisz ponownie pobrać wszystkie build-dep oprócz czekania na ich instalację w chroot.
werdykt: buduj z dystansu. Buforowanie kompilacji jest świetnym ustawieniem domyślnym, a pbuild jest wystarczająco inteligentny, aby wykryć, czy w archiwum jest nowsza wersja kompilacji i w razie potrzeby ściągnie nową wersję. W przypadku złożonego pakietu z wieloma wersjami kompilacji to proste ustawienie pozwoli Ci zaoszczędzić minuty życia.
Podsumowanie
Po wyjęciu z pudełka uważam, że skrypty pbuilder są znacznie bardziej przyjazne i szybsze niż ich odpowiedniki. Oczywiście istnieją sposoby, aby pbuilder był jeszcze szybszy (budowanie w tmpfs, wyłączanie niektórych haków chroot), i prawdopodobnie są też takie same sztuczki dla sbuilda, ale nie jestem ich świadomy.
Mam nadzieję że to pomoże.
sbuild
służy do tworzenia pakietów Ubuntu, mimo że starter (z tego, co rozumiem) działapbuilder
...