[ cekic @ 27.03.2010. 21:15 ] @
Pravim prilagodjenu instalaciju Debiana koja bi se automatski instalirala, bez interakcije sa korisnikom. Za ovu priliku koristim FAI koji fenomenalno odradjuje posao. Da bi sve bilo potrebno je instalirati jedan program koji imam u source code-u. Problem je sto ne zelim da taj program kompajliram na target masinama i tako ga instaliram, a automatsko kompajliranje je malo nezgodno. Pokusao sam da napravim deb paket ali posto softver sadrzi biblioteke a ja nisam dovoljno iskusan da bih izasao na kraj sa takvim paketom. Ideja koja mi je pala na pamet je da instaliram ovaj softver u neki folder i od njega napravim tarball i raspakujem ga automatski na target sistemu. I ovde dolazim do pitanja. Kako naterati make da odredjeni folder tretira ka root file system ( / ). Sa configure skriptom mogu da namestim gde ce softver da se instalira na rootu, ali mi je potrebno da postignem da se neki folder tretira kao root i u njemu se softver instalira. Onda u teoriji spakujem taj folder i raspakujem ga na root target racunara i terijski trebalo bi da funkcionise. Na primeru to bi trebalo ovako da izgleda:

defaultna instalacija:
softver se instalira pod sledecim direktorijumima
/usr/local/sbin
/usr/local/lib
/usr/local/libexec
/usr/local/etc itd.

ukoliko odradim configure --prefix=/somefolder --exec-prefix=/somefolder
softver se instalira
/somefolder/sbin
/somefolder/lib itd. i promeni sve putanje u svojim conf fajlovima da pocinju prefiksom /somefolder sto mi neodgovara.
Ako bi kao prefikse stavio sam / onda ne bih mogao da spakujem program na odgovarajuci nacin.

Ono sto mi je potrebno je sledece
/somefolder/usr/local/sbin
/somefolder/usr/local/lib itd. i naravno da putanje u conf fajlovima ostanu na /usr/local

Da li je moguce proslediti make install neku opciju da bi se resio ovaj problem ili je potrebno prepraviti Makefile. Takodje ako neko ima ideju na koji nacin spakovati ovo u deb paket dobrodosao je. Pokusao sam da pronadjem na netu resenje ali jedino sto mogu da nadjem je opcija dva. Pratio sam uputsvo sa debina sajta za pakovanje paketa i uspeo da spakujem softver koji u sebi ne sadrzi biblioteke i to je uspelo, dok sa softverom koji ima biblioteke to ne uspeva. Konacno da li postoji neki nacin da postignem trecu opciju. Hvala.
[ combuster @ 27.03.2010. 21:46 ] @
Najbolje bi ti bilo da napravis deb.

https://wiki.ubuntu.com/HowToB...ackagesFromScratch?action=show

Pa kreni po uputstvu polako i ako zapnes negde tu smo. Jos jedan krajnje koristan link:

http://ubuntuforums.org/showth...003&highlight=checkinstall

[ cekic @ 27.03.2010. 22:00 ] @
Ma znam da mi je najbolja opcija da napravim paket, to mi je i bio prvi izbor. Medjutim nikako da uspem. Skidao sam source code za druge aplikacije i glat uspevao da napravim paket. Ukratko dh_make, malo editovanja i dpkg-buildpackage -rfakeroot bas kao postupak na ovim linkovima. Medjutim moj softver sadrzi kod za libove koje koristi. I onda dh_make prodje kako treba, ali mi dpkg-buildpackage javlja gresku -- undefinded reference na neke funcije. Ne mogu trenuto postaviti tacnu gresku, ali mogu reci da su sve funkcije u okviru koda za libove. Probao sam da prepravim rules da prvo odradi ove libove pa onda ostatak ali mrka kapa. U svim uputsvima, tekstovima i u Debian New Maintainers Guide-u nasao sam da je pakovanje libova poprilicno tesko i da nije bas za pocetnike u pakovanju. Onda kako spakovati libove? Ovaj softver se naravno moze naci na debian repozitorijumu ali je prepravljen malo za specificne potrebe pa ga zbog toga treba prepakovati ili na neki drugi nacin instalirati a da na target racunaru ne radim kompajliranje.
[ combuster @ 27.03.2010. 22:23 ] @
Onda probaj ovako:

./configure --prefix=/somefolder/usr/local (instalirace ti u /somefolder/usr/local/sbin itd)

Onda buduci da pravis kasnije paket za dalje distribuiranje samo edituj rucno conf fajlove i izmeni putanje rucno.

Mozda te i ja nisam najbolje razumeo, jel mozes da kazes o kom se programu radi? Pa da vidim ja konkretno sta je u pitanju...
[ cekic @ 27.03.2010. 22:57 ] @
U vezi sa ovim poslednjim to mi je i palo na pamet. Mada bih ja probao po svaku cenu da izbegnem rucno prepravljanje,posto nisam siguran da negde nema hardcodovane putanje u fajlovima, nisam ulazio u potpun rad softvera samo je zamnjen deo koji je od interesa. U pitanju je strongswan. Trenutna verzija koja je ukljucena u debian je 4.2.x mada ja koristim neku raniju. U principu struktura izvornog koda je potpuno ista. Mada sam i ja krenuo po onoj narodnoj prvo pa musko.

[ combuster @ 28.03.2010. 08:26 ] @
http://aur.archlinux.org/packages/strongswan/strongswan/PKGBUILD

Citat:

./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib \
--with-ipsecdir=/usr/lib/strongswan --enable-curl \
--enable-sql --enable-sqlite --enable-attr-sql --enable-openssl \
--enable-cisco-quirks --disable-static --enable-shared


http://www.linuxscrew.com/2008...-from-targz-with-checkinstall/

Ja mislim da bi ti ovo trebalo pomoci.
[ niceness @ 28.03.2010. 11:47 ] @
Citat:
cekic:Ono sto mi je potrebno je sledece
/somefolder/usr/local/sbin
/somefolder/usr/local/lib itd. i naravno da putanje u conf fajlovima ostanu na /usr/local

Da li je moguce proslediti make install neku opciju da bi se resio ovaj problem ili je potrebno prepraviti Makefile.

    ./configure --prefix="/usr/local"
make
make DESTDIR="/somefolder" install

Ovo ce instalirati program u /somefolder/usr/local, dok ce sve putanje ostati konfigurisane na /usr/local.
Samo prvo proveri da li strongswan podrzava DESTDIR (u Makefile-ovima ; verovatno podrzava, ali ponekad programi nemaju dobro urađen build sistem).

Naravno ako ti treba deb paket, onda je checkinstall koji je naveo combuster odlično/brzo rešenje.
[ combuster @ 28.03.2010. 12:06 ] @
make DESTDIR=${pkgdir} install

Trebalo bi da podrzava, ovo sam izvukao iz pkgbuild-a.
[ cekic @ 29.03.2010. 12:20 ] @
Zahvaljujem obojici. Upseo sam sa checkinstall da odradim pakovanje u deb paket.
Pozdrav