ďťż
 
 
   [+] iptables i dpkg-buildpackage a ./configure && ma
 
 

Tematy

 
    
 

 

 

 

[+] iptables i dpkg-buildpackage a ./configure && ma





ShinnRa - 13-12-2009 02:53
Wiem, że na forum jest masa tematów na temat iptables i kompilowania ze źródeł do pakietu deb. Można to oczywiście zrobić za pomocą checkinstall jak podano w tym temacie ale takie rozwiązanie nie uwzględnia zależności co dla mnie eliminuje ten sposób.

Najciekawsze jest to, że jak wydam polecenie dpkg-buidpackage -rfakeroot -sa to się wszystko sypie na libxt_CLASSIFY
---(administrator)---(kagami)---(2.6.31-patched-01)---(13-12-2009)---
---(173)--- [/usr/src/iptables-1.4.5] dpkg-buildpackage -rfakeroot -sa
dpkg-buildpackage: use CFLAGS from environment: -march=k8 -O2 -pipe
dpkg-buildpackage: set CPPFLAGS to default value:
dpkg-buildpackage: set LDFLAGS to default value:
dpkg-buildpackage: set FFLAGS to default value: -g -O2
dpkg-buildpackage: use CXXFLAGS from environment: -march=k8 -O2 -pipe
dpkg-buildpackage: source package iptables
dpkg-buildpackage: source version 1.4.5-1
dpkg-buildpackage: source changed by administrator <*******@gmail.com>
dpkg-buildpackage: host architecture amd64
 fakeroot debian/rules clean
dh_testdir
dh_testroot
rm -f build-arch-stamp build-indep-stamp
# Add here commands to clean up after the build process.
[ ! -f Makefile ] || /usr/bin/make distclean
make[1]: Entering directory `/usr/src/iptables-1.4.5'
Making distclean in libipq
make[2]: Entering directory `/usr/src/iptables-1.4.5/libipq'
test -z "libipq.a" || rm -f libipq.a
rm -rf .libs _libs
rm -f *.o
rm -f *.lo
rm -f *.tab.c
test -z "" || rm -f
test . = "." || test -z "" || rm -f
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -rf ./.deps
rm -f Makefile
make[2]: Leaving directory `/usr/src/iptables-1.4.5/libipq'
Making distclean in include
make[2]: Entering directory `/usr/src/iptables-1.4.5/include'
rm -rf .libs _libs
rm -f *.lo
test -z "xtables.h" || rm -f xtables.h
test . = "." || test -z "" || rm -f
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -f Makefile
make[2]: Leaving directory `/usr/src/iptables-1.4.5/include'
Making distclean in extensions
make[2]: Entering directory `/usr/src/iptables-1.4.5/extensions'
rm -f *.o *.oo *.so *.a {matches,targets}[46].man initext4.c initext6.c;
rm -f .*.d .*.dd;
make[2]: Leaving directory `/usr/src/iptables-1.4.5/extensions'
Making distclean in .
make[2]: Entering directory `/usr/src/iptables-1.4.5'
test -z "iptables.8 ip6tables.8" || rm -f iptables.8 ip6tables.8
test -z "libiptc/libip4tc.la libiptc/libip6tc.la libiptc/libiptc.la libxtables.la" || rm -f libiptc/libip4tc.la libiptc/libip6tc.la libiptc/libiptc.la libxtables.la
rm -f "libiptc/so_locations"
rm -f "libiptc/so_locations"
rm -f "libiptc/so_locations"
rm -f "./so_locations"
rm -rf .libs _libs
rm -rf libiptc/.libs libiptc/_libs
 rm -f iptables-multi ip6tables-multi
rm -f *.o
rm -f libiptc/libip4tc.o
rm -f libiptc/libip4tc.lo
rm -f libiptc/libip6tc.o
rm -f libiptc/libip6tc.lo
rm -f *.lo
rm -f *.tab.c
test -z "extensions/GNUmakefile include/iptables/internal.h libiptc.pc xtables.pc" || rm -f extensions/GNUmakefile include/iptables/internal.h libiptc.pc xtables.pc
test . = "." || test -z "" || rm -f
rm -f libiptc/.deps/.dirstamp
rm -f libiptc/.dirstamp
rm -f config.h stamp-h1
rm -f libtool config.lt
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
make[2]: Leaving directory `/usr/src/iptables-1.4.5'
rm -f config.status config.cache config.log configure.lineno config.status.lineno
rm -rf ./.deps libiptc/.deps
rm -f Makefile
make[1]: Leaving directory `/usr/src/iptables-1.4.5'
rm -f config.sub config.guess
dh_clean
 dpkg-source -b iptables-1.4.5
dpkg-source: info: using source format `1.0'
dpkg-source: info: building iptables using existing iptables_1.4.5.orig.tar.gz
dpkg-source: info: building iptables in iptables_1.4.5-1.diff.gz
dpkg-source: warning: newly created empty file 'debian/docs' will not be represented in diff
dpkg-source: warning: ignoring deletion of file config.guess
dpkg-source: warning: ignoring deletion of file config.sub
dpkg-source: info: building iptables in iptables_1.4.5-1.dsc
 debian/rules build
dh_testdir
# Add here commands to configure the package.
cp -f /usr/share/misc/config.sub config.sub
cp -f /usr/share/misc/config.guess config.guess
./configure --build x86_64-linux-gnu --prefix=/usr --mandir=\${prefix}/share/man --infodir=\${prefix}/share/info --with-ksource=/usr/src/linux --libdir=/lib --enable-libipq --enable-devel CLAGS="-march=k8 -O2 -pipe" LDFLAGS="-Wl,-z,defs"
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking whether gcc and cc understand -c and -o together... yes
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 98304
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for ar... ar
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
checking linux/dccp.h usability... yes
checking linux/dccp.h presence... yes
checking for linux/dccp.h... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating extensions/GNUmakefile
config.status: creating include/Makefile
config.status: creating libipq/Makefile
config.status: creating include/xtables.h
config.status: creating include/iptables/internal.h
config.status: creating libiptc.pc
config.status: creating xtables.pc
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
# Add here commands to compile the arch part of the package.
#/usr/bin/make
touch build-arch-stamp
# Add here commands to compile the indep part of the package.
#/usr/bin/make doc
touch build-indep-stamp
 fakeroot debian/rules binary
dh_testdir
dh_testroot
dh_clean -k -s
dh_installdirs -s
# Add here commands to install the arch part of the package into
# debian/tmp.
/usr/bin/make DESTDIR=/usr/src/iptables-1.4.5/debian/iptables install
make[1]: Entering directory `/usr/src/iptables-1.4.5'
Making install in extensions
make[2]: Entering directory `/usr/src/iptables-1.4.5/extensions'
  CC      libxt_CLASSIFY.oo
  CCLD    libxt_CLASSIFY.so
libxt_CLASSIFY.oo: In function `CLASSIFY_final_check':
libxt_CLASSIFY.c:(.text+0x10): undefined reference to `xt_params'
libxt_CLASSIFY.oo: In function `CLASSIFY_parse':
libxt_CLASSIFY.c:(.text+0xf3): undefined reference to `xt_params'
libxt_CLASSIFY.c:(.text+0x13a): undefined reference to `xt_params'
libxt_CLASSIFY.oo: In function `libxt_CLASSIFY_init':
libxt_CLASSIFY.c:(.text+0x38): undefined reference to `xtables_register_target'
collect2: ld returned 1 exit status
make[2]: *** [libxt_CLASSIFY.so] Error 1
make[2]: Leaving directory `/usr/src/iptables-1.4.5/extensions'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/usr/src/iptables-1.4.5'
make: *** [install-arch] Error 2
dpkg-buildpackage: failure: fakeroot debian/rules binary gave error exit status 2
---(administrator)---(kagami)---(2.6.31-patched-01)---(13-12-2009)---
---(174)--- [/usr/src/iptables-1.4.5] a z kolei polecenie ./configure && make przechodzi bez błędów. Więc się pytam jakie są różnice. Bo skoro zwykły sposób przechodzi a build-package się wywala to czegoś tu nie rozumiem no chyba, że mam coś źle skonfigurowane



fnmirk - 13-12-2009 04:30
Zaczynasz jako root:
apt-get update Aktualizacja systemu nie zaszkodzi: apt-get upgrade -u Jako użytkownik tworzymy katalog:
mkdir ~/iptables Wchodzimy do katalogu:
cd ~/iptables Wydajemy jako użytkownik polecenie: apt-get source iptables
Czytanie list pakietów... Gotowe
Budowanie drzewa zależności     
Odczyt informacji o stanie... Gotowe
Konieczne pobranie 496kB archiwów źródeł.
Pob: 1 http://ftp.pl.debian.org squeeze/main iptables 1.4.5-1 (dsc) [1066B]
Pob: 2 http://ftp.pl.debian.org squeeze/main iptables 1.4.5-1 (tar) [461kB]
Pob: 3 http://ftp.pl.debian.org squeeze/main iptables 1.4.5-1 (tar) [33,7kB]                     
Pobrano 496kB w 15s (32,7kB/s)                                                                   
gpgv: blok klucza ,,/home/test/.gnupg/trustedkeys.gpg'': błąd przy otwieraniu pliku.
gpgv: Podpisano w nie, 29 lis 2009, 04:22:35 CET kluczem DSA o numerze 55D3A1E9
gpgv: Nie można sprawdzić podpisu: brak klucza publicznego
dpkg-source: ostrzeżenie: błąd weryfikowania sygnatury w ./iptables_1.4.5-1.dsc
dpkg-source: info: rozpakowywanie iptables w iptables-1.4.5
dpkg-source: info: rozpakowywanie iptables_1.4.5.orig.tar.bz2
dpkg-source: info: rozpakowywanie iptables_1.4.5-1.debian.tar.gz
dpkg-source: info: nakładanie wszystkich łatek z użyciem quilt push -q 0300-iptables-apply.patch
Applying patch 0101-changelog.patch
Applying patch 0600-makefile_jedi_handwaving.patch
Applying patch 0300-iptables-apply.patch
Now at patch 0300-iptables-apply.patch ÂŻródła pobrane i rozpakowane automatycznie. Wchodzimy do katalogu z rozpakowanymi źródłami: cd ~/iptables/iptables-1.4.5/ Przełączamy się na konto root: su Jako root w katalogu ~/iptables/iptables-1.4.5/ wydajemy polecenie: apt-get build-dep iptables
Czytanie list pakietów... Gotowe
Budowanie drzewa zależności     
Odczyt informacji o stanie... Gotowe
Zostaną zainstalowane następujące NOWE pakiety:
  autoconf automake autotools-dev libltdl-dev libtool m4
0 aktualizowanych, 6 nowo instalowanych, 0 usuwanych i 12 nieaktualizowanych.
Konieczne pobranie 2412kB archiwów.
Po tej operacji zostanie dodatkowo użyte 7262kB miejsca na dysku.
Kontynuować [T/n]? Wyświetliła się nam lista pakietów których brakuje w naszym systemie do budowy pakietu. Zatwierdzamy instalację.

Po pomyślnej instalacji opuszczamy konto root: exit Będąc nadal w katalogu ~/iptables/iptables-1.4.5/ wydajemy jako użytkownik polecenie budowy pakietu bez żadnych dodatkowych opcji: dpkg-buildpackage -rfakeroot
...
dpkg-genchanges  >../iptables_1.4.5-1_i386.changes
dpkg-genchanges: dołączanie pełnych kodów źródłowych do wydania
dpkg-buildpackage: pełne wydanie (oryginalne źródła dołączone)
dpkg-buildpackage: ostrzeżenie: Błąd podpisywania plików .dsc i .changes Po pewnym czasie uzyskujemy powyższą informację. Pakiety zbudowane z pobranych źródeł. System jest gotowy do budowy pakietu deb iptables.
Błąd odnośnie podpisywania plików dla własnych celów możemy pominąć. Jak go wyeliminować jest w dokumentacji.

Zbudowane pakiety przenosimy lub usuwamy, są raczej mało przydatne. Takie same uzyskamy z repozytoriów.

Teraz przystępujemy do wprowadzenia naszych zmian i skorzystania z opcji nam potrzebnych do naszego własnego pakietu. Mamy gwarancję, że system jest przygotowany do zbudowania pakietu iptables.

Zmiany i inne opcje wprowadzamy na podstawie dokumentacji.

Np.: dpkg-buildpackage -rfakeroot -sa

...
dpkg-genchanges -sa >../iptables_1.4.5-1_i386.changes
dpkg-genchanges: dołączanie pełnych kodów źródłowych do wydania
dpkg-buildpackage: pełne wydanie (oryginalne źródła dołączone)
dpkg-buildpackage: ostrzeżenie: Błąd podpisywania plików .dsc i .changes



ShinnRa - 13-12-2009 23:04
No niestety zrobiłem tak jak napisałeś i pakiet z repozytorium się buduje a ze źródeł pluje błędami, to log: http://pastebin.com/m4bc6e6e0

[Dodano: |14 Gru 2009|, 2009 00:50]
Tak! Mam drania. Okazuje się, że problem sprawiał LDFLAGS w linijce configure:
po wywaleniu tego LDFLAGS="-Wl,-z,defs" kompilacja poleciała do końca aż miło.

Poszperałem w manie i znalazłem coś takiego odnośnie LDFLAGS:

-Wl,option
Pass option as an option to the linker. If option contains commas, it is split into multiple options at the commas.

-z keyword
The recognized keywords are:
[...]
defs
Disallows undefined symbols in object files. Undefined symbols in shared libraries are still allowed.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis