dpkg-buildpackage i kompilacja iptables

Tematy związane z oprogramowaniem, instalacją, konfiguracją
baroo
Posty: 15
Rejestracja: 17 września 2009, 14:48

dpkg-buildpackage i kompilacja iptables

Post 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.
fnmirk
Senior Member
Posty: 8321
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

Poszukaj na forum, wielokrotnie o tym było.
baroo
Posty: 15
Rejestracja: 17 września 2009, 14:48

Post autor: baroo »

A mógłbym prosić o jakąś podpowiedź czego mam szukać, bo do tej pory nic nie wygooglowałem?
fnmirk
Senior Member
Posty: 8321
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

Sprawdź wersje kompilatora. Przedstaw cały błąd.
baroo
Posty: 15
Rejestracja: 17 września 2009, 14:48

Post 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# 

fnmirk
Senior Member
Posty: 8321
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

Aby zbudować pakiet deb musimy mieć odpowiednio przygotowany do tego system.
Np. w katalogu domowym tworzymy katalog:

Kod: Zaznacz cały

mkdir ~/iptab
Wchodzimy do utworzonego katalogu:

Kod: Zaznacz cały

 cd ~/iptab
Jako użytkownik wydajemy polecenie:

Kod: Zaznacz cały

apt-get source iptables
¬ródła pobrane i rozpakowane. Logujemy się na konto root przez polecenie:

Kod: Zaznacz cały

su
hasło root
Jako root wchodzimy do rozpakowanego katalogu z plikiem źródłowym pobranego do budowy pakietu:

Kod: Zaznacz cały

 cd /home/nazwa_użytkownika/iptab
Wydajemy polecenie:

Kod: Zaznacz cały

apt-get build-dep iptables
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
baroo
Posty: 15
Rejestracja: 17 września 2009, 14:48

Post 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.
fnmirk
Senior Member
Posty: 8321
Rejestracja: 03 grudnia 2007, 06:37

Post 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ą.
baroo
Posty: 15
Rejestracja: 17 września 2009, 14:48

Post 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''.
fnmirk
Senior Member
Posty: 8321
Rejestracja: 03 grudnia 2007, 06:37

Post 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:

Kod: Zaznacz cały

apt-get build-dep nazwa_pakietu
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.
ODPOWIEDZ