Znalazłem zadanie kompilacji OpenStack na stronie QA Ubuntu, ale jestem trochę zdezorientowany co do kroków kompilacji.
Oto link do kroków kompilacji: https://jenkins.qa.ubuntu.com/view/Openstack_Testing/view/Grizzly/job/precise_grizzly_keystone_stable/275/consoleText
Z dziennika kompilacji Jenkins wiem, w jaki sposób Ubuntu buduje pakiety Openstack:
- pobierz kod openstack z github, użyj
git clone
- skompiluj
openstack tar.gz
plik za pomocąpython setup.py sdist
- służy
bzr
do pobierania plików kontrolnych Debiana, które są obsługiwane przez kanoniczny - użyj
dch
polecenia, aby wygenerować nową wersję kompilacji i zatwierdzić ją lokalnie - służy
bzr builddeb -S -- -sa -us -uc
do generowania pakietu źródłowego i powiązanego pliku kontrolnego, takiego jakdsc
- podpisać paczkę
- służy
mk-build-deps
do instalowania zależności - służy
sbuild
do generowania prawdziwych pakietów deb - przesłać do repozytoriów testowych
Moje pytania to:
- W kroku 5 możemy już wygenerować pakiety deb bez
-S
, ale dlaczego w końcu go używamysbuild
? Czy to tylko do podpisu? - Jaka jest różnica między
bzr builddeb
isbuild
? Znalazłem skrypty kompilacji, których używał Jenkins: tutaj
~openstack-ubuntu-testing/openstack-ubuntu-testing
, ale kiedy próbuję uruchomić dowolne poleceniabin
, zawsze otrzymuję:root@demo:~/openstack-ubuntu-testing/bin# ./build-package Traceback (most recent call last): File "./build-package", line 14, in <module> from openstack_ubuntu_testing.build.component_build import ComponentBuild File "/home/sysadmin/openstack-ubuntu-testing/bin/openstack_ubuntu_testing/build/component_build.py", line 11, in <module> from schroot.executor import SchrootExecutor ImportError: No module named schroot.executor
Próbowałem użyć pipa, aby zainstalować schroota, ale wygląda na to, że nie ma w nim executora.
Proszę pomóż.
package-management
packaging
openstack
Ray Sun
źródło
źródło
Odpowiedzi:
sbuild
buduje pakiet w izolowanym środowisku przy użyciuschroot
. W tym środowisku instalowane są tylko zależności kompilacji zadeklarowane przez pakiet źródłowy i nic więcej. Pomaga to upewnić się, że środowisko programistyczne lub środowisko CI, z którego jest uruchamiany, nie ma wpływu na kompilację. Na przykład bez sbuild obecność pakietu w środowisku CI może sprawiać wrażenie, że kompilacja się powiedzie, podczas gdy w rzeczywistości była to niezadeklarowana zależność kompilacji, a więc zawodzi wszędzie indziej. Ze względu na odtwarzalność i stabilność lepiej jest użyć sbuild.źródło