Strona 1 z 2
dpkg-buildpackage i kompilacja iptables
: 17 września 2009, 14:56
autor: baroo
Witam.
Mam następujący problem przy budowie własnej paczki iptables-1.4.4 (oryginalne źródła oraz własne
łatki). Normalna konfiguracja na zasadzie ./configure, make przechodzi bez problemów, ale już dpkg-buildpackage -rfakeroot zatrzymuje się podczas kompilacji zwracając błąd:
Kod: Zaznacz cały
CC libxt_CHAOS.oo
CCLD libxt_CHAOS.so
libxt_CHAOS.oo: In function `chaos_tg_check':
/usr/src/iptables-1.4.4/extensions/libxt_CHAOS.c:61: undefined reference to `xt_params'
libxt_CHAOS.oo: In function `chaos_tg_ldr':
/usr/src/iptables-1.4.4/extensions/libxt_CHAOS.c:111: undefined reference to `xtables_register_target'
collect2: ld returned 1 exit status
make[3]: *** [libxt_CHAOS.so] Error 1
make[3]: Leaving directory `/usr/src/iptables-1.4.4/extensions'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/usr/src/iptables-1.4.4'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/usr/src/iptables-1.4.4'
make: *** [build-stamp] Error 2
Czy ktoś mógłby mnie uświadomić, gdzie robię błąd i ewentualnie dlaczego tak się dzieje?
Z góry dzięki za wszelkie informacje.
: 17 września 2009, 15:13
autor: fnmirk
Poszukaj na forum, wielokrotnie o tym było.
: 17 września 2009, 15:19
autor: baroo
A mógłbym prosić o jakąś podpowiedź czego mam szukać, bo do tej pory nic nie wygooglowałem?
: 17 września 2009, 15:37
autor: fnmirk
Sprawdź wersje kompilatora. Przedstaw cały błąd.
: 17 września 2009, 15:52
autor: baroo
make puszczony z palca i z dpkg-buildpackage -rfakeroot korzysta z tego samego kompilatora (chyba, że o czymś nie wiem).
Błąd w sumie jest przedstawiony w całości. Dokładniejsze przedstawienie tego poniżej.
Kod: Zaznacz cały
dh_testdir
# Add here commands to compile the package.
/usr/bin/make
make[1]: Entering directory `/usr/src/iptables-1.4.4'
/usr/bin/make all-recursive
make[2]: Entering directory `/usr/src/iptables-1.4.4'
Making all in extensions
make[3]: Entering directory `/usr/src/iptables-1.4.4/extensions'
GEN initext4.c
CC initext4.o
AR libext4.a
GEN initext6.c
CC initext6.o
AR libext6.a
GEN matches4.man
+ ./libipt_addrtype.man
+ ./libipt_ah.man
+ ./libxt_cluster.man
+ ./libxt_comment.man
========= tu trochę wyciąłem ========
GEN targets6.man
+ ./libxt_CLASSIFY.man
+ ./libxt_CONNMARK.man
+ ./libxt_CONNSECMARK.man
+ ./libxt_DSCP.man
+ ./libip6t_HL.man
+ ./libip6t_LOG.man
+ ./libxt_MARK.man
+ ./libxt_NFLOG.man
+ ./libxt_NFQUEUE.man
+ ./libxt_NOTRACK.man
+ ./libxt_RATEEST.man
+ ./libip6t_REJECT.man
+ ./libxt_SECMARK.man
+ ./libxt_TCPMSS.man
+ ./libxt_TCPOPTSTRIP.man
+ ./libxt_TOS.man
+ ./libxt_TRACE.man
CC libxt_CHAOS.oo
CCLD libxt_CHAOS.so
libxt_CHAOS.oo: In function `chaos_tg_check':
/usr/src/iptables-1.4.4/extensions/libxt_CHAOS.c:61: undefined reference to `xt_params'
libxt_CHAOS.oo: In function `chaos_tg_ldr':
/usr/src/iptables-1.4.4/extensions/libxt_CHAOS.c:111: undefined reference to `xtables_register_target'
collect2: ld returned 1 exit status
make[3]: *** [libxt_CHAOS.so] Error 1
make[3]: Leaving directory `/usr/src/iptables-1.4.4/extensions'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/usr/src/iptables-1.4.4'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/usr/src/iptables-1.4.4'
make: *** [build-stamp] Error 2
debian:/usr/src/iptables-1.4.4#
: 17 września 2009, 18:24
autor: fnmirk
Aby zbudować pakiet deb musimy mieć odpowiednio przygotowany do tego system.
Np. w katalogu domowym tworzymy katalog:
Wchodzimy do utworzonego katalogu:
Jako użytkownik wydajemy polecenie:
¬ródła pobrane i rozpakowane. Logujemy się na konto root przez polecenie:
Jako root wchodzimy do rozpakowanego katalogu z plikiem źródłowym pobranego do budowy pakietu:
Wydajemy polecenie:
Wyświetli się lista brakujących w systemie pakietów (lub nie, jeżeli mamy system przygotowany do kompilacji i budowy pakietu). Instalujemy potrzebne pakiety. Opuszczamy konto root.
Teraz możemy przystąpić do budowy pakietu z własnych źródeł lub tych pobranych z repozytorium.
Informacje dostępne na forum:
http://debian.linux.pl/viewtopic.php?p=74955#74955
http://debian.linux.pl/viewtopic.php?p=86266#86266
Pamiętamy o tym aby przed przystąpieniem do budowy pakietu aktualizować system:
http://debian.linux.pl/viewtopic.php?p=89342#89342
: 17 września 2009, 23:05
autor: baroo
Tak. Generalnie tak robimy i gdybym mógł z tego dobrodziejstwa skorzystać pewnie bym to zrobił. Jednak czasami zachodzi potrzeba skompilowania czegoś zupełnie według własnych upodobań, z własnymi łatkami. Do tej pory (jądro 2.6.24.7 ze starszymi iptables) według mojej metody wszystko działało bez problemów. Teraz jakoś nie może i prosiłbym nie pozbywać mnie tekstami, że to już było na forum. Jakby było to bym sobie znalazł i poradził z problemem.
: 17 września 2009, 23:40
autor: fnmirk
baroo, zrozumiałeś mój tekst? Wydaje mi się że nie. Przeczytaj go uważnie. Dostałeś przepis podstawowy, o szczegóły musisz zatroszczyć się sam, zerkając do dokumentacji. Przygotuj według tej zasady - jaką opisuję już nie wiem, który raz - system. Wykonaj najpierw podstawową paczkę, a w drugiej kolejności dopiero swoją.
: 18 września 2009, 10:20
autor: baroo
Jest w tym wszystkim jedno ale... Ja potrzebuję stworzyć paczkę dla Etcha tam najnowsze wydanie iptables to 1.3.6. Mimo wszystko zastanawia mnie dlaczego zwykłe polecenie ,,make'' używając tych samych kompilatorów działa doskonale, a ,,dpkg-buildpackage'' już nie. Powiedziałbym, że wina jakichś ścieżek, ale nie mam za bardzo wiedzy jak dokładnie działa ,,dpkg-buildpackage''.
: 18 września 2009, 12:45
autor: fnmirk
Do zbudowania pakietu potrzebujesz innych pakietów, wynikających z zależności. Do sprawdzenia spełnienia zależności służy polecenie:
Potrzebna też jest aktualizacja wersji systemu na którym budujesz pakiet (dla którego budujesz pakiet).
Etch przeszedł do archiwalnej gałęzi stabilnej i stąd mogą być problemy. Wykonaj aktualizację systemu do aktualnej wersji stabilnej.