apt-get - skompilowanie pakietu ze zmian

Tematy związane z oprogramowaniem, instalacją, konfiguracją
giaur
Member
Posty: 1915
Rejestracja: 25 maja 2007, 22:16

apt-get - skompilowanie pakietu ze zmianą w konfiguracji

Post autor: giaur »

Witam,

Wiem, że aby pobrać pakiet źródłowy i automatycznie go skompilować (z utworzeniem .deb), należy postąpić mniej więcej tak:

Kod: Zaznacz cały

apt-get build-dep <pakiet>
apt-get -b source <pakiet>
JA chcę jednak przed zbudowaniem paczki zmienić niektóre opcje kompilacji, dostępne normalnie przez ./configure. A dopiero potem zbudować pakiet .deb na podstawie nowej konfiguracji. W jaki najlepiej sposób to zrobić? Bo takim sposobem jak wyżej nie da sie tego osiągnąć - źródła zostaną automatycznie pobrane i skompilowane, nie dając mi szansy na zmianę konfiguracji.
fnmirk
Senior Member
Posty: 8324
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

Przesadzasz. Skoro pobierzesz źródła to ich automatycznie nie usuwasz z dysku i możesz z nimi robić wszystko. Przejrzyj przykład:
http://debian.linux.pl/threads/16688-ip ... nfigure-ma

Dodane:
A poza tym:

Kod: Zaznacz cały

apt-get source nazwa
Wprowadzasz zmiany i potem budujesz pakiet.
giaur
Member
Posty: 1915
Rejestracja: 25 maja 2007, 22:16

Post autor: giaur »

No właśnie nie przesadzam. Ściągnąłem sobie źródła pakietu libgtk-3-0 i wprowadziłem zmiany w debian/rules:

Kod: Zaznacz cały

DEB_CONFIGURE_EXTRA_FLAGS = \
            --libdir=/$(LIBDIR) \
            --enable-test-print-backend \
            --enable-xinput \
            --enable-x11-backend \
            --enable-broadway-backend
(dodane 2 opcje: --enable-x11-backend i --enable-broadway-backend).

Z tego co wyczytałem, to pakiet buduje się mniej więcej tak (w katalogu ze źródłami - takie polecenie jest też wydawane przez apt-get gdy automatycznie buduje pakiet więc robię tak samo):

Kod: Zaznacz cały

dpkg-buildpackage -b -uc 
A wynik? Kompilacja bezproblemowa, za to budowanie pakietu - błąd:

Kod: Zaznacz cały

h_makeshlibs: dpkg-gensymbols -plibgtk-3-0 -Idebian/libgtk-3-0.symbols -Pdebian/libgtk-3-0 -edebian/libgtk-3-0/usr/lib/x86_64-linux-gnu/libgdk-3.so.0.200.3
 -edebian/libgtk-3-0/usr/lib/x86_64-linux-gnu/libgtk-3.so.0.200.3
 -c4 returned exit code 2
make: *** [binary-fixup/libgtk-3-0] Błąd 2
dpkg-buildpackage: błąd: debian/rules binary zwrócił status błędu 2
No i w czym problem?
fnmirk
Senior Member
Posty: 8324
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

Czy buduje się poprawnie pakiet, z domyślnymi opcjami, tak jak to opisałem w podanym odnośniku?
Awatar użytkownika
Yampress
Administrator
Posty: 6462
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post autor: Yampress »

Ja robie tak

Kod: Zaznacz cały

apt-get build-dep pakiet
apt-get source pakiet
dpkg-source -x pakiet.dsc
cd pakiet
./configure  -opcje -opcje
dpkg-buildpackage

Bo jeśli chcesz budować wg sposobu co piszesz to powinienes użyć

Kod: Zaznacz cały

dpkg-buildpackage -rfakeroot
po wyeksportowaniu opcji kompilacji.
giaur
Member
Posty: 1915
Rejestracja: 25 maja 2007, 22:16

Post autor: giaur »

Robię tak jak ty i:

Kod: Zaznacz cały

dpkg-buildpackage
dpkg-buildpackage: pakiet źródłowy gtk+3.0
dpkg-buildpackage: wersja pakietu źródłowego 3.2.3-1
dpkg-buildpackage: źródła zmienione przez Michael Biebl <biebl@debian.org>
dpkg-buildpackage: architektura gościa amd64
 dpkg-source --before-build gtk+3.0-3.2.3
 debian/rules clean
debian/rules:140: uwaga: polecenia zakrywające dla obiektu `list-missing'
/usr/share/cdbs/1/rules/utils.mk:54: uwaga: ignoruję stare polecenia dla obiektu `list-missing'
dh_testdir
sed \
        -e "s#@SONAME@#0#g" \
        -e "s#@APIVER@#3#g" \
        -e "s#@VERSION@#3.2.3#g" \
        -e "s#@GTK_BINVER_DEP@#gtk3-binver-3.0.0#g" \
        -e "s#@SHARED_PKG@#libgtk-3-0#g" \
        -e "s#@COMMON_PKG@#libgtk-3-common#g" \
        -e "s#@DEV_PKG@#libgtk-3-dev#g" \
        -e "s#@UDEB_PKG@#libgtk-3-0-udeb#g" \
        -e "s#@DOC_PKG@#libgtk-3-doc#g" \
        -e "s#@BIN_PKG@#libgtk-3-bin#g" \
        -e "s#@DEBUG_PKG@#libgtk-3-0-dbg#g" \
        -e "s#@EXAMPLES_PKG@#gtk-3-examples#g" \
        -e "s#@PIXBUF_PKG@#gtk3-engines-pixbuf#g" \
        -e "s#@GNOME_TEAM@#Josselin Mouette <joss@debian.org>, Michael Biebl <biebl@debian.org>, Sjoerd Simons <sjoerd@debian.org>#g" \
        -e "s#@GTK_BINARY_VERSION@#3.0.0#g" \
        -e "s#@LIBDIR@#usr/lib/x86_64-linux-gnu#g" \
        -e 's#@OPTLIBDIR@##g' \
        -e 's#@CONFDIR@#etc/gtk-3.0#g' \
        -e "s#@MODULES_BASE_PATH@#usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0#g" \
        -e "s#@OLD_MODULES_BASE_PATH@#usr/lib/gtk-3.0/3.0.0#g" \
        debian/control.in > debian/control
test -x debian/rules
dh_testroot
rmdir debian/build
rmdir: nie udało się usunąć `debian/build': Nie ma takiego pliku ani katalogu
make: [cleanbuilddir] Błąd 1 (zignorowany)
GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 /usr/bin/make  -C debian/build/shared  -k distclean
make: *** debian/build/shared: Nie ma takiego pliku ani katalogu. Stop.
make: [makefile-clean/shared] Błąd 2 (zignorowany)
rm -f debian/stamp-makefile-build/shared debian/stamp-makefile-install/shared
rm -f debian/stamp-makefile-check/shared
rmdir --ignore-fail-on-non-empty debian/build/shared
rmdir: nie udało się usunąć `debian/build/shared': Nie ma takiego pliku ani katalogu
make: [makefile-clean/shared] Błąd 1 (zignorowany)
rm -f debian/stamp-autotools/shared
GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 /usr/bin/make  -C debian/build/shared_udeb  -k distclean
make: *** debian/build/shared_udeb: Nie ma takiego pliku ani katalogu. Stop.
make: [makefile-clean/shared_udeb] Błąd 2 (zignorowany)
rm -f debian/stamp-makefile-build/shared_udeb debian/stamp-makefile-install/shared_udeb
rm -f debian/stamp-makefile-check/shared_udeb
rmdir --ignore-fail-on-non-empty debian/build/shared_udeb
rmdir: nie udało się usunąć `debian/build/shared_udeb': Nie ma takiego pliku ani katalogu
make: [makefile-clean/shared_udeb] Błąd 1 (zignorowany)
rm -f debian/stamp-autotools/shared_udeb
GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 /usr/bin/make  -C debian/build/static  -k distclean
make: *** debian/build/static: Nie ma takiego pliku ani katalogu. Stop.
make: [makefile-clean/static] Błąd 2 (zignorowany)
rm -f debian/stamp-makefile-build/static debian/stamp-makefile-install/static
rm -f debian/stamp-makefile-check/static
rmdir --ignore-fail-on-non-empty debian/build/static
rmdir: nie udało się usunąć `debian/build/static': Nie ma takiego pliku ani katalogu
make: [makefile-clean/static] Błąd 1 (zignorowany)
rm -f debian/stamp-autotools/static
rmdir --ignore-fail-on-non-empty debian/stamp-makefile-build debian/stamp-makefile-install
rmdir: nie udało się usunąć `debian/stamp-makefile-build': Nie ma takiego pliku ani katalogu
rmdir: nie udało się usunąć `debian/stamp-makefile-install': Nie ma takiego pliku ani katalogu
make: [makefile-clean] Błąd 1 (zignorowany)
rmdir --ignore-fail-on-non-empty debian/stamp-makefile-check
rmdir: nie udało się usunąć `debian/stamp-makefile-check': Nie ma takiego pliku ani katalogu
make: [makefile-clean] Błąd 1 (zignorowany)
rmdir --ignore-fail-on-non-empty debian/stamp-autotools
rmdir: nie udało się usunąć `debian/stamp-autotools': Nie ma takiego pliku ani katalogu
make: [makefile-clean] Błąd 1 (zignorowany)
dh_autoreconf_clean 
for i in ./build-aux/config.guess ./build-aux/config.sub  ; do \
        if test -e $i.cdbs-orig ; then \
            mv $i.cdbs-orig $i ; \
        fi ; \
    done
dh_clean 
rm -f debian/cdbs-install-list debian/cdbs-package-list debian/stamp-copyright-check
rm -f debian/stamp-autotools-files
cd debian/build && \
      rm -f intltool-extract intltool-merge intltool-update po/.intltool-merge-cache; \
      if test -d doc; then find doc -name '*.omf.out' -exec rm -f \{\} \; ; fi; \
      if test -d help; then find help -name '*.omf.out' -exec rm -f \{\} \; ; fi
/bin/sh: 1: cd: can't cd to debian/build
# gross kludge to force control generation with the %.in target
touch debian/control.in
rm -f debian/libgtk-3-0-dbg.links debian/libgtk-3-0.install debian/libgtk-3-0.links debian/libgtk-3-0.postinst debian/libgtk-3-0.postrm debian/libgtk-3-0.triggers debian/libgtk-3-0-udeb.install debian/libgtk-3-bin.install debian/libgtk-3-bin.links debian/libgtk-3-dev.install debian/libgtk-3-dev.links debian/libgtk-3-0-dbg.links debian/gtk-3-examples.install debian/gir1.2-gtk-3.0.install debian/libgail-3-0.install debian/libgail-3-dev.install debian/libgtk-3-common.install debian/libgtk-3-common.preinst debian/libgtk-3-doc.doc-base.gdk debian/libgtk-3-doc.doc-base.gtk debian/libgtk-3-doc.install debian/libgtk-3-doc.links debian/libgtk-3-0-udeb.install
 dpkg-source -b gtk+3.0-3.2.3
dpkg-source: info: używania formatu źródeł "3.0 (quilt)"
dpkg-source: info: budowanie gtk+3.0, używając istniejącego ./gtk+3.0_3.2.3.orig.tar.xz
dpkg-source: ostrzeżenie: prawa dostępu 0755 wykonywalnego pliku "config.status" nie będą dołączone do pliku różnic
dpkg-source: ostrzeżenie: prawa dostępu 0755 wykonywalnego pliku "libtool" nie będą dołączone do pliku różnic
dpkg-source: ostrzeżenie: prawa dostępu 0755 wykonywalnego pliku "config.lt" nie będą dołączone do pliku różnic
dpkg-source: info: local changes detected, the modified files are:
 gtk+3.0-3.2.3/Makefile
 gtk+3.0-3.2.3/build/Makefile
 gtk+3.0-3.2.3/build/win32/Makefile
 gtk+3.0-3.2.3/build/win32/vs10/Makefile
 gtk+3.0-3.2.3/build/win32/vs9/Makefile
 gtk+3.0-3.2.3/config.h
 gtk+3.0-3.2.3/config.log
 gtk+3.0-3.2.3/config.lt
 gtk+3.0-3.2.3/config.status
 gtk+3.0-3.2.3/demos/Makefile
 gtk+3.0-3.2.3/demos/gtk-demo/Makefile
 gtk+3.0-3.2.3/demos/gtk-demo/geninclude.pl
 gtk+3.0-3.2.3/demos/pixbuf-demo/Makefile
 gtk+3.0-3.2.3/docs/Makefile
 gtk+3.0-3.2.3/docs/reference/Makefile
 gtk+3.0-3.2.3/docs/reference/gdk/Makefile
 gtk+3.0-3.2.3/docs/reference/gtk/Makefile
 gtk+3.0-3.2.3/docs/reference/libgail-util/Makefile
 gtk+3.0-3.2.3/docs/tools/Makefile
 gtk+3.0-3.2.3/examples/Makefile
 gtk+3.0-3.2.3/gail-3.0-uninstalled.pc
 gtk+3.0-3.2.3/gail-3.0.pc
 gtk+3.0-3.2.3/gdk-3.0.pc
 gtk+3.0-3.2.3/gdk/Makefile
 gtk+3.0-3.2.3/gdk/broadway/Makefile
 gtk+3.0-3.2.3/gdk/gdkconfig.h
 gtk+3.0-3.2.3/gdk/quartz/Makefile
 gtk+3.0-3.2.3/gdk/tests/Makefile
 gtk+3.0-3.2.3/gdk/wayland/Makefile
 gtk+3.0-3.2.3/gdk/win32/Makefile
 gtk+3.0-3.2.3/gdk/win32/rc/Makefile
 gtk+3.0-3.2.3/gdk/x11/Makefile
 gtk+3.0-3.2.3/gtk+-3.0-uninstalled.pc
 gtk+3.0-3.2.3/gtk+-3.0.pc
 gtk+3.0-3.2.3/gtk+-unix-print-3.0.pc
 gtk+3.0-3.2.3/gtk-zip.sh
 gtk+3.0-3.2.3/gtk/Makefile
 gtk+3.0-3.2.3/gtk/a11y/Makefile
 gtk+3.0-3.2.3/gtk/tests/Makefile
 gtk+3.0-3.2.3/libgail-util/Makefile
 gtk+3.0-3.2.3/libtool
 gtk+3.0-3.2.3/m4macros/Makefile
 gtk+3.0-3.2.3/modules/Makefile
 gtk+3.0-3.2.3/modules/engines/Makefile
 gtk+3.0-3.2.3/modules/engines/ms-windows/Makefile
 gtk+3.0-3.2.3/modules/engines/ms-windows/Theme/Makefile
 gtk+3.0-3.2.3/modules/engines/ms-windows/Theme/gtk-3.0/Makefile
 gtk+3.0-3.2.3/modules/engines/pixbuf/Makefile
 gtk+3.0-3.2.3/modules/input/Makefile
 gtk+3.0-3.2.3/modules/printbackends/Makefile
 gtk+3.0-3.2.3/modules/printbackends/cups/Makefile
 gtk+3.0-3.2.3/modules/printbackends/file/Makefile
 gtk+3.0-3.2.3/modules/printbackends/lpr/Makefile
 gtk+3.0-3.2.3/modules/printbackends/papi/Makefile
 gtk+3.0-3.2.3/modules/printbackends/test/Makefile
 gtk+3.0-3.2.3/perf/Makefile
 gtk+3.0-3.2.3/po-properties/Makefile
 gtk+3.0-3.2.3/po-properties/Makefile.in
 gtk+3.0-3.2.3/po-properties/POTFILES
 gtk+3.0-3.2.3/po/Makefile
 gtk+3.0-3.2.3/po/Makefile.in
 gtk+3.0-3.2.3/po/POTFILES
 gtk+3.0-3.2.3/stamp-h1
 gtk+3.0-3.2.3/tests/Makefile
 gtk+3.0-3.2.3/tests/a11y/Makefile
 gtk+3.0-3.2.3/tests/css/Makefile
 gtk+3.0-3.2.3/tests/css/parser/Makefile
 gtk+3.0-3.2.3/tests/reftests/Makefile
dpkg-source: info: you can integrate the local changes with dpkg-source --commit
dpkg-source: błąd: aborting due to unexpected upstream changes, see /tmp/gtk+3.0_3.2.3-1.diff.4LfEGQ
dpkg-buildpackage: błąd: dpkg-source -b gtk+3.0-3.2.3 zwrócił status błędu 2

Co do fakeroot to nie ma znaczenia bo kompiluję jako root.
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

I przeczytałeś do końca komunikat i zauważyłeś trzy ostatnie linijki

Kod: Zaznacz cały

dpkg-source: info: you can integrate the local changes with dpkg-source --commit
dpkg-source: błąd: aborting due to unexpected upstream changes, see /tmp/gtk+3.0_3.2.3-1.diff.4LfEGQ
dpkg-buildpackage: błąd: dpkg-source -b gtk+3.0-3.2.3 zwrócił status błędu 2
i wiesz zatem co należy zrobić.
Nie? Przeczytaj aż do zrozumienia.
giaur
Member
Posty: 1915
Rejestracja: 25 maja 2007, 22:16

Post autor: giaur »

Gdy robię tak jak proponuje Yampress, dając dodatkowo:

Kod: Zaznacz cały

dpkg-source --commit
otrzymuję komunikat, że źródła są już skonfigurowane i że należy wykonać:

Kod: Zaznacz cały

make distclean
Jeśli wykonam:

Kod: Zaznacz cały

make distclean
znowu każe mi robić:

Kod: Zaznacz cały

dpkg-source --commit
tak jak poprzednio. Czyli błędne koło.
Awatar użytkownika
Yampress
Administrator
Posty: 6462
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post autor: Yampress »

Ewentualnie przeprowadzić samemu debianizację pakietu.
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

giaur pisze:Ty też nic na ten temat nie wiesz, więc po co się odzywasz w temacie, w którym nie masz nic do powiedzenia?
Żadna złośliwość. I pakiety swoje też buduję, jak mi potrzeba.
Gdzie w poprzednim swoim poście wspomniałeś, że wykonujesz to polecenie a mimo to błąd "nie znika". Precyzja... ma znaczenie.
ODPOWIEDZ