Portabilne aplikacije: testovi

Teme koje se tiču programiranja

Moderator: Urednik

Post Reply

Administrator
Administrator
offline
User avatar

Posts: 4048
Joined: 04 Feb 2011, 20:32
Location: Beograd
Contact:

Post Napisano: 07 Jan 2012, 22:51


Evo mog pokušaja kreiranja portabilne aplikacije.

Code: Select all

#!/bin/sh
set -e

CFLAGS="-march=i686 -O2 -pipe"
LDFLAGS="-s"

PATHS="--bindir=./ \
	--datadir=./ \
	--sysconfdir=./ \
	--localstatedir=./ \
	--libdir=./ \
	--includedir=./ \
	--mandir=./ \
	--program-prefix=portable-" 
CUSTOM_CONF="--enable-graphics --with-ssl $PATHS"

if [ ! -e links-2.5.tar.bz2 ];then
	wget http://links.twibright.com/download/links-2.5.tar.bz2
fi

if [ -d links-2.5 ];then
	rm -fr links-2.5
fi

tar xvf links-2.5.tar.bz2
zcat links_currdir.patch.gz | patch -p 0

cd links-2.5
export CFLAGS LDFLAGS
./configure $CUSTOM_CONF

make clean
make

make install DESTDIR=../portable-links/
rm -fr ../portable-links/man1
links_currdir.patch.gz
(538 Bytes) Downloaded 149 times
Quick'n'dirty patch kako bi Links čuvao podešavanja u trenutnom direktorijumu (ovo sam na brzini iščačkao, može to i lepše):
build.sh.gz
(382 Bytes) Downloaded 138 times
I rezultat (i686, čuva podešavanja u pod-direktorijumu links trenutnog direktorijuma) :
portable-links.tar.gz
(1.77 MiB) Downloaded 159 times
Izlaz ls -R nakon pokretanja binarne datoteke:

Code: Select all

$ ls -R
.:
links  portable-links

./links:
bookmarks.html  links.cfg  links.his
Izmena (24. mart 2017):
Hakovana verzija gornje izvršne datoeke hakovana sa patchelf. Trebalo bi da radi na više Slackware izdanja. Radi i na 14.2.
portable-links.fixed.tar.gz
(1.77 MiB) Downloaded 37 times
Last edited by bocke on 09 Jan 2012, 23:15, edited 1 time in total.



Administrator
Administrator
offline
User avatar

Posts: 4048
Joined: 04 Feb 2011, 20:32
Location: Beograd
Contact:

Post Napisano: 09 Jan 2012, 16:42


Nisam imao sreće sa statičkim linkovanjem. Izgleda da se negde u kodu koristi dlopen i neke od funkcija koje je nemoguće statički linkovati. Aplikacija se linkuje, ali javlja se greška pri pokretanju.

Ova dinamička datoteka ima nekoliko zavisnosti, mada se to može skresati ako bi se uklonili grafički frontendi (--disable-graphics). E sad, po kom osnovu je ovo portabilna aplikacija - podešavanja čuva u trenutnom direktorijumu. Znači da ga je moguće strpati na usb i pokretati odatle, a da ne ostavlja repove u home (mešanje opicja i bookmarksa sa instaliranom verzijom, itd).

Btw, ovo ovde je neophodno samo za instalaciju i u slučaju da se negde koristi fiksirana putanja:

Code: Select all

PATHS="--bindir=./ \
	--datadir=./ \
	--sysconfdir=./ \
	--localstatedir=./ \
	--libdir=./ \
	--includedir=./ \
	--mandir=./ \
	--program-prefix=portable-" 
Bacio sam pogled nakon što sam postavio temu i došao do zaključka da bi se ovo moglo svesti na:

Code: Select all

PATHS="--bindir=./ \
	--mandir=./ \
	--program-prefix=portable-" 
S obzirom da mislim da nisu u upotrebi fiksirane putanje, ovo se koristi samo za "make install".



Administrator
Administrator
offline
User avatar

Posts: 4048
Joined: 04 Feb 2011, 20:32
Location: Beograd
Contact:

Post Napisano: 09 Jan 2012, 16:50


Btw, što se tiče nečeg korisnijeg, gledao sam malo... Ali nekako mi se ne kompajlira nešto ogromno na ovoj mašini. To bi trajalo sto godina. Ako aplikacija nema configure/make opciju za korisničke direktorijume, morala bi i da se patchuje na jednom ili više mesta u izvornom kodu.

Neki bi rekli da je i Firefox binarni paket portabilan, ali to nije tako. Problem je u tome što za sva podešavanja koristi podrazumevani profil u ~/.mozilla. Da bi bio u potpunosti portabilan trebao bi biti kompajliran sa opcijom da koristi trenutni direktorijum ili neki njegov poddirektorijum. U ovom slučaju bi se informacije čuvali na mediju na kome se nalazi (USB?). Isto važi i za Thunderbird. Samo što su ovi paketi preveliki za eksperimentisanje.



Prijatelj foruma
Prijatelj foruma
offline
User avatar

Posts: 699
Joined: 08 May 2007, 12:39
Location: Banja Luka

Post Napisano: 09 Jan 2012, 21:41


Odlično je ovo, bocke. Nisam nikad pokušao, ali će mi svakako biti dobra odskočna daska. ;) Mene upravo zanimaju te kompleksnije aplikacije, sa GUI-em naravno (bar većina). Nažalost, sad nemam vremena da se igram sa tim, ali biće nešto uskoro i od mene na ovu temu. :)

Btw, na primjeru Ff-a recimo, teorijski kako i šta bi ti uradio? Da li bi kompajlirao iz sorsa ili koristio onaj njihov Linux build? Još neke pojedinosti?



Administrator
Administrator
offline
User avatar

Posts: 4048
Joined: 04 Feb 2011, 20:32
Location: Beograd
Contact:

Post Napisano: 09 Jan 2012, 22:27


Trebalo bi promeniti putanje. Recimo umesto da čuva podatke u /home/user/.mozilla/firefox, namestiti da ih čuva u ./data/. Takođe bi trebalo podesiti i da ne traži pluginove u sistemskom direktorijumu /usr/share/mozilla. Kao i lokaciju download foldera (ajde ovo se može namestiti i iz GUI-a.

Problem je što binarna distribucija ova podešavanja već koristi. Ukoliko ne postoji neko skriveno podešavanje u okviru samog Firefoxa, ovi bi se moralo specifikovati prilikom pravljenja paketa iz izvornog koda. Ukoliko to nije moguće, onda bi trebalo patchovati izvorni kod svuda gde Firefox nešto učitava (ili upisuje) iz spoljnih direktorijuma.

Kako? Ne znam. :) Rekoh, veliki bi to bio posao, pogotovo na sporim mašinama. Može se pogledati kako su to radili drugi (recimo kako to rešavaju portabilne aplikacije za Windows).

Edit: Da se ispravim, možda je moguće i sa binarnom distribucijom korišćenjem  "-profile" opcije: http://kb.mozillazine.org/Command_line_arguments. Baciću pogled pa javljam (za ovo ne treba mnogo vremena).

Edit 2:
Radi ovo fino. Sad ću da napišem skript koji pravi portabilnu instalaciju u trenutnom direktorijumu. ;)
Last edited by bocke on 09 Jan 2012, 23:46, edited 1 time in total.



Administrator
Administrator
offline
User avatar

Posts: 4048
Joined: 04 Feb 2011, 20:32
Location: Beograd
Contact:

Post Napisano: 09 Jan 2012, 23:44


Primetio sam grešku pa brišem poruku dok ne ispravim.



Administrator
Administrator
offline
User avatar

Posts: 4048
Joined: 04 Feb 2011, 20:32
Location: Beograd
Contact:

Post Napisano: 09 Jan 2012, 23:57


Evo ispravljene verzije skripta. Probao sam da je pomerim u drugi direktorijum i radi.
mkffportable.sh.gz
(282 Bytes) Downloaded 152 times
Btw, ovo će raditi u Xfceu (testirano na 4.6). U Gnomu će verovatno biti potrebno napraviti firefox.desktop datoteku (možda i za KDE, nisam u mogućnosti da testiram). Možete kopirati /usr/share/applications/firefox.desktop u trenutni direktorijum i promeniti liniju exec u ./firefox %u umesto firefox %u.

Inače datoteka "firefox" koja će biti kreirana u trenutnom direktorijumu je mali wrapper skript koji odrađuje ceo posao. Može se pokrenuti i iz terminala sa ./firefox. Podaci se čuvaju u ./data. Firefox binarne datoteke se nalaze u ./bin.

Edit: da li će raditi u Gnomu ili KDEu zavisi od vaših podešavanja za izvršne skriptove. Mislim da se u Gnomu podrazumevano pojavljuje dijalog u kome pita da li želite da izvršite skript.
Attachments
Screenshot - 01102012 - 12:42:21 AM.png
Last edited by bocke on 10 Jan 2012, 00:03, edited 1 time in total.


Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest