|
[+] 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.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|