[VODIČ] Kako da instaliram program na Linuxu

27 odgovora [Poslednji unos]
RiSK
Slika korisnika RiSK
Offline
User
Član od: 29/05/2006

Pozdrav!
Ovo je tekst koji sam pre nekog vremena pisao za www.gradnis.net
Ideja je objasniti pocetnicima kako se instalira softver i sta se ustvari desava na sistemu prilikom instalacije.
Citav tekst je namenjen apsolutnim novajlijama. Termini nisu korisceni precizno, i molim vas da mi ne zamerite na tome.
Kako sam je dugogodisnji korisnik Debiana, najvise ima stvari o dpkg/apt masineriji. Korisnici Debiana, a i distribucija iz Ubuntu porodice ce naci sasvim dovoljno stvari ovde da mogu da instaliraju i odrzavaju instalilrane programe na svom sistemu.

Mislim da bi bila dobra ideja da se iskusniji korisnici drugih distribucija ukljuce i da ispisu mehanizme za instalaciju softvera na distribucijama koje oni koriste. Tako bi imali finu temu na koju bismo mogli da uputimo novajlije koji se pitaju kako da instaliraju programe koje zele.

Ako se kojim slucajem ne ucitaju slike: Sve slike su hostovane na Geocities free hostingu koji ima brandwith limitiran na nekoliko megabajta po satu. Ukoliko se prekoraci, slike necete moci da vidite, ali sacekajte oko sat vremena, osvezite stranu, i pomolite se Wink Kad nadjem vremena, prebacicu ove slicke negde drugde.

Originalni tekst je ovde:
http://www.gradnis.net/forum/kako_da_instaliram_program_na_linuxu_vodic_za_pocetnike-t6927.0.html

0
__________________

Programmer (noun): an organism that transforms coffe into code.

RiSK
Slika korisnika RiSK
Offline
User
Član od: 29/05/2006

Predpostavljam da je svako od Vas koristio nekakav operativni sistem i na njega instalirao razno-razne programe. Svrha ovog tutorijala je da apsolutnim pocetnicima koji pokusavaju da instaliraju nesto softvera na svoj GNU/Linux operatvini sistem pojasnim kako se to radi i sta konretno trba da urade da bi ispravno instalirali softver.

1. Kako izgleda jedan program? Gde se cuvaju datoteke programa?

Jedna aplikacija se obicno sastoji iz vise fajlova. Ne ulazeci dublje u problematiku izvrsavanja binarnog programa na racunaru, mozemo da konstatujemo sledece cinjenice.

Program se cuva negde na spoljnjoj memoriji (disk,...). Pri pokretanju programa datoteka u kojoj je on pohranjen se ucitava u RAM. Ova datoteka sadrzi niz instrukcija koje procesor moze da razume (i jos po nesto, ali sada necemo o tome). Program se pokrece tako sto se procesoru salju jedna po jedna od tih instrukcija, a ovaj ih izvrsava. Osim instrukcija, taj fajl sadrzi i osnovne podatke kojima program barata. Sta je sa ostalim stvarima? Npr. pokrenite xmms. On na ekranu prikazuje prozor prekriven slikom (skin). Ta slika mora da bude sacuvana negde na disku. Slicna je stvar i sa drugim vrstama podataka (cujete zuk nakon narezanog diska, ucitavate podatke iz baze, pregledate 'help' fajlove,...) - svi se cuvaju negde na hard disku. Aplikacija mora da zna gde su.

Sta vise, program se, obicno, ne sastoji samo od jednog izvrsnog fajla. Najcesce je za izvrasavanje programa potrebno vise izvrsnih fajlova koji se podizu u memoriju istovremeno. Jedan od tih fajlova shvatimo kao "glavni". Ostale cemo zvati bibliotekama. "Glavni" program po potrebi poziva funkcije implementirane u bibliotekama. Ovakav model se pokazao znatno bolji od 'strpavanja' svega u jedan fajl. Prednosti i mane takvog modela necemo diskutovati, vec cemo se samo zadrzati na konstataciji da je ovakav model prisutan i dominantan u GNU/Linux sistemu.

Dakle, pri instaliranju jedne aplikacije, na nasem disku dobijamo kopije izvrsnog fajla, raznih biblioteka, datoteka u kojima su pohranjeni podaci potrebni za rad aplikacije, datoteke u kojima se cuva dokumentacija za koriscenje aplikacije, datoteke u kojima se cuvaju (inicijalna) podesavanja za aplikaciju, .... Operativni sistem treba da definise gde se i kako cuvaju svi ovi fajlovi. Predpostavljam da je dobar deo vas imao priliku da instalira nku aplikaciju na nekom MS Windows operativnom sistemu. Windows "filozofija" je da se aplikacija instalira u jedan direktorijum (obicno unutar "C:\Program files") osim biblioteka, koje mogu da se instaliraju u isti taj direktorijum ili u neki za to specijalizovani direktorijum (to su obicno C:\Windows i C:\Windows\System32).
GNU/Linux sistem ima nesto drugacije lokacije za ove fajlove. Pogledajmo na cas strukturu direktorijuma /usr. To je jedan od standardnih direktorijuma LSTa.
[/]rile: ls /usr
bin  games  include  lib  local  sbin  share  src  X11R6
Za sad cemo obratiti paznju na direktorijume bin, lib i share unutar /usr direktorijuma. Unutar /usr/bin se nalaze izvrsni fajlovi Unutar /usr/share su podaci koji su potrebni programu za rad. Adresar /usr/lib sadrzi biblioteke programa.
Primetimo neke razlike u odnosu na Windows nacin instaliranja programa. Svi izvrsni programi su unutar istog direktorijuma (kod Windowsa je svaki od njih imao poseban direktorijum). Isto vazi i za biblioteke. Dodatne datoteke (sa podacima) su obicno organizovane tako da za svaku aplikaciju postoji po jedan direktorijum u ./share adresaru.
Uzmimo na primer program xmms. Na mom sistemu ovako izgledaju neki od fajlova ovog programa:
[/]rile: which xmms
/usr/bin/xmms
[/]rile: ls /usr/bin/xmms -l
-rwxr-xr-x 1 root root 1034508 2007-03-28 13:47 /usr/bin/xmms
[/]rile: ls /usr/share/xmms -l
total 16
-rw-r--r-- 1 root root  928 2005-11-14 15:33 infinite_states
drwxr-xr-x 2 root root 4096 2007-05-28 18:26 Skins
-rw-r--r-- 1 root root 7972 2007-03-28 13:47 wmxmms.xpm
[/]rile: ls /usr/lib|grep xmms
libxmms.a
libxmms.la
libxmms.so
libxmms.so.1
libxmms.so.1.3.1
xmms
Nadam se da Vam je ovo pomoglo da shvatite sta je gde. No, tu nije kraj. Porgrami ne moraju da se nalaze u ovom direktorijumu.Pogledajmo sada direktorijum /usr/local:
[/]rile: ls /usr/local
bin  etc  games  include  lib  libexec  man  sbin  share  src
Mozemo uociti da ima strukturu slicnu direktorijumu /usr. Tu se takodje mogu instalirati programi. Naravno, direktorijumi /usr/local/bin, /usr/local/lib  i /usr/local/share su ekvivalentni sa /usr/bin, /usr/lib, /usr/share.
U principu, mozemo koristiti bilo koji direktorijum za instaliranje programa. U nasa dva primera koristili smo direktorijume /usr i /usr/local. Direktorijum u koji instaliramo program zvacemo jos i prefiks. /usr i /usr/local su (koliko se to moze reci za Linux) standardni direktorijumi za instaliranje programa. U zavisnosti od distibucije, mogu biti jos neki. Obraticemo paznju jos i na direktorijum /opt. Njega obiocno koristimo za instaliranje programa na 'Windows' nacin. Znaci, pri instairanju velike aplikacije, ona dobije svoj direktorijum unutar /opt i tu smesti sve potrebne fajlove. Neke distribucije forsiraju ovakav nacin instaliranja. Neke ga isbegavaju.
[/]rile: ls /opt/google/
desktop
[/]rile: ls /opt/google/desktop/
bin  lib  plugin  README  resource  VERSION  xdg
Ostaje nam jos da razjasnimo gde instalirane aplikacije cuvaju svoja podesavanja.
Globalna podesavanja programi obicno cuvaju unutar direktorijuma /etc. Izgled ovog direktorijuma moze znatno da varira od jedne do druge distribucije. Podesavanja za svakog korisnika aplikacija cuva unutar korisnickog direktorijuma ($HOME). Podesavanja su u obliku fajlova (najcesce tekstualnih) i direktorijuma, i njihovi nazivi pocinju tackom (.) Po konvenciji, fajlovi koji pocinju sa tackom se ne izlistavaju u fajl menadzereima (osim ukoliko nije eksplicitno naglaseno), tako da ovakvo imenovanje umanjuje kolicinu fajlova koje korisnik 'vidi' u svom korisnickom direktorijumu.
Evo primera konfiguracionih fajlova za xmms i smbd:
[/]rile: ls $HOME/.xmms
config  menurc  Plugins  Skins  xmms.m3u
[/]rile: ls /etc/samba
gdbcommands  smb.conf  smb.conf~
Nadam se da je posle ovoga jasno gde se koji fajl nalazi i cemu sluzi. Za sve one kojima je rad u Windowsu blizi, primetimo jos da u GNU/Linux sistemu ne postoji nesto sto bi bilo ekvivalent 'registry' bazi Windowsa. Sve sto je potrebno aplikacijama cuva se u vidu regularnih fajlova.

__________________

Programmer (noun): an organism that transforms coffe into code.

RiSK
Slika korisnika RiSK
Offline
User
Član od: 29/05/2006

2. U kakvom obliku dolaze programi? Sta da radim sa programom koji sam skinuo sa interneta / dobio na disku?

Pre svega, pojasnimo kako izgleda program pri njegovom stvaranju a kako pri radu.
Pri stvaranju programa, programer koristi tekstualne fajlove koji predstavljaju naredbe na nekom od programskih jezika (izvorni kod, source code). Uz njih je potreban i izvestan broj fajlova u kojima se nalaze podaci (slike, zvukovi, ...). Da bi se program izvrsio na konkretnom racunarskom sistemu, mora se prevesti (kompajlirati, kompilirati) u 'binarni oblik'. To je oblik u kom ih racunar moze direktno izvrsiti. (Postoje i programi koji se kompajliraju do nekog medju-oblika (metacode) a zatim se takav kod interpretira odgovarajucim softverom. Postoje i jezici kod kojih se interpretira direkto izvorni kod. Za sad zanemarite programe pisane na ovim jezicima.)
Vi mozete dobiti program u vidu izvornog koda ili u vidu izvrsnog (binarnog) koda. Vecina aplikacija koje se koriste pod GNU/Linux operativnim sistemom su aplikacije otvorenog koda (open source). To znaci da mozete doci (legalno Smile) do njihovog izvornog koda i zatim ih prevesti za svoje potrebe. Izvorni kod komercijalnih aplikacija je nedostupan.

Programi obicno dolaze u vidu kompresovanih arhiva. Ukoliko je rec o programu u vidu izvornog koda, potrebno je: otpakovati arhivu, prevesti izvorni u izvrsni kod i zatim prekopirati fajlove na odgovarajuca mesta. Ako se radi o arhivi sa binarnim programom, obico je ta arhiva u nekom specijalizovanom formatu (.deb, .rpm, ...) i moze se na sistem instalirati koriscenjem odgovarajuceg programa. Druga, cesta, varijanta je 'sefl-extracted' arhiva, odnosno arhiva ciji je deo program koji je raspakuje i instalira softver. (Ovo zadje odgovara next-next instalacijama koje su poznata vecini korisnika Windowsa).

Instaliranje programa iz izvornog koda ima svoje prednosti, ali i mane, u odnosu na instaliranje prekompajlirane aplikacije. Evo nekih:
- Instaliranje iz izvornog koda podrazumeva da na racunaru morate imati dodatan softver: kompajler, linker, header-fajlovi...
- Instaliranjem iz izvornog koda mozete prilagoditi aplikaciju svom sistemu: mozete izbaciti delove koje ne koristite, zatim, mozete kompajlirati kod koriscenjem optimizacija kompajlera koje odgovaraju konkretnom sistemu, ...
- Instaliranje iz izvornog koda je znatno sporije od instaliranja binarnog fajla

3. Zavisnosti (dependency)

Pre nego sto predjemo na instaliranje programa, da dodamo jos par recenica o zavisnostima.
Uzmimo za primer Firefox. Pod Linuxom on za prikaz na ekranu koristi GTK2 biblioteku. Ova biblioteka sadrzi brojne funkcije za rad sa grafickim korisnickim interfejsom. Ukoliko na sistemu imamo instaliran Firefox a nemamo ovu biblioteku, Firefox nece moci da radi! Zato kazemo da Firefox zavisi od GTK2.
Uzmimo sada za primer neku drugu GTK2-baziranu aplikaciju, recimo OpenOffice. I ova aplikacija zavisi od GTK2 biblioteke.
Sa druge strane GTK2 biblioteka iscrtava korisnicki interfejs koriscenjem funkcija nekih drugih biblioteka. Recimo, potrebna jeoj je JPEG biblioteka (za slike) i jos mnoge druge. (Sve ovo su samo bezveze primeri, cisto da bi pokazali o cemu se radi.)

Ukoliko bi posmatrali sav softver instaliran na jednom GNU/Linux sistemu, mogli bi smo da napravimo 'stablo zavisnosti'. Zamislite to ovako: Uzmemo poveci list papira, za svko parce softvera nacrtamo po jenu tacku, pa spojimo tacke koje oznacavaju medjusobno zavisne programe. Ovako bi smo dobili graf. Za poznavaoce teorije grafova, ovaj graf je stablo (nema cikluse).

Dakle, vecina programa na Vasem sistemu zavisi od nekih drugih programa (biblioteka, ...). Takodje, vecina instaliranog softvera predstavlja zavisnost nekim drugim programima.

__________________

Programmer (noun): an organism that transforms coffe into code.

RiSK
Slika korisnika RiSK
Offline
User
Član od: 29/05/2006

4. Instaliranje programa iz izvornog koda

Postojanje velikog broja kompajlera za razlicite programske jezike na GNU/Linux sistemu uslovljava  postojanje razicitih nacina (komandi shella) na koje se moze da kompajlira neki program. Pre nego sto pocnete prevodjenje nekog programa u binarni oblik, obazvezno pogledajte dokumentaciju koja stize uz program. U arhivi se nalaze INSTALL ili README fajl koji detaljno opisuju kako se vrsi prevodjenje programa. Vecina programa koji se pisu za GNU/Linux su C ili C++ programi koji koriste gcc (odnosno g++) kompajler za prevodjenje. Programeri obicno koriste neke specijalizovane alate za prevodjenje koda koji uveliko olaksavaju posao. Jedan od njih, i verovatno najcesce koriscen, je GNU Automake. Zadrzacemo se na ovom alatu i opisati proces kompajliranja i instaliranja programa iz izvornog koda koji koristi Automake i gcc.
Ovo je ubedljivo najcesca kombinacija.

Jos jednom: *Pre nego sto zapocnete kompajliranje procitajte dokumentaciju koju ste dobili u arhivi sa programom.*

Slede koraci koje trebamo preduzeti radi kompajliranja i instaliranja programa:

4.1 Raspakujte arhivu

Izvorni kod obicno dolazi u kompresovanoj arhivi. To je najcesce .tar.gz ili .tar.bz2 arhiva. Za raspakivanje ovih arhiva koristicemo komandu `tar`. Naravno, arhivu mozete raspoakovati i bilo kojim drugima alatom. Konzolni menadzer fajlova "Midnight Commander" radi vrlo fino sa ovim arhivama i mozete koristiti njega. Takodje, vecina "grafickih" menadzera fajlova dobro integrisu funkcije za rad sa arhivama. Mozte arhivu raspakovati iz Konquerora ili Nautilusa. Osim toga, postoji veliki broj aplikacija za grafickim interfejsom koje sluze za rad sa arhivama. Pomenimo File-Roller i Ark.

Vratimo se na program `tar`. Ovo je klasicna konzolna aplikacija. Ukoliko zelite da vidite kompletnu listu operacija koje moze da izvrsi ovaj program ukucajte `man tar` ili `tar --help`. Lista "sviceva" je pozamasna, a mi cemo se osvrnuti na nekoliko nama ovde bitnih. Evo dela teksta koji stampa `tar --help` i koji ce nama biti potreban:

-x, --extract, --get      extract files from an archive
-v, --verbose              verbosely list files processed
-z, --gzip, --gunzip, --ungzip  filter the archive through gzip
-j, --bzip2                filter the archive through bzip2
-f, --file=ARCHIVE        use archive file or device ARCHIVE

Dakle, -x znaci da zelimo da odpakujemo arhivu, -v znaci da program ispisuje informacije o tome koji fajl obradjuje na standardni izlaz (u terminal). Naziv fajla pisemo iza -f opcije, znaci u formatu -f(razmak)/ime/fajla. U zavisnosi od toga kojim algoritmom je arhiva kompresovana (gz ili bz2), koristicemo opciju -z za gzip, odnisno -j za bzip2. Citava komanda ce imati jedan od ovih formata:
tar -xvzf ime_arhiva.tag.gz
tar -xvjf ime_arhive.tar.bz2

Sta rade ove komande?
Ova komanda uzima arhivu koja je navedena kao argument programa i raspakuje njen sadrzaj u tekuci direktorijum. Znaci, ukoliko hocemo da raspakujemo arhivu u direktorijum /home/username/instalacije a arhiva se zove /home/username/download/kdevelop.tar.gz, uradicemo to sa:
cd /home/username/instalacije
tar -xvzf /home/username/download/kdevelop.tar.gz

Evo kako moze da izgleda deo izlaza komande:

[/mnt/lfs/src.6.0]lfs: tar -xvjf bison-2.0.tar.bz2
bison-2.0/
bison-2.0/m4/
bison-2.0/m4/alloca.m4
bison-2.0/m4/cxx.m4
bison-2.0/m4/dirname.m4
bison-2.0/m4/dmalloc.m4
........

Arhivu smo odpakovali u direktorijumu u kom se nalazila.

Nakon ovoga, podrazumevacu da ste program na neki od nacina raspakovali u zeljeni direktorijum.

4.2 Konfigurisanje izvornog koda programa

Osvrnimo se na nekoliko cinjenica koje smo izneli u prva tri poglavlja.
Vratimo se na zavisnosti: Da bi nas program mogli da pokrenemo (i prevedemo) potrebno je da su na sistemu vec instalirani svi programi od kojih on zavisi. Sada nam je potreban mehanizam koji ce to da ustanovi.
Trebamo izabrati prefiks (direktorijum u koji zelimo da instaliramo program). To, takodje moramo nekako da zadamo.
Osim toga, razlicite distribucije imaju razlicite verzije instaliranih biblioteka, na primer. Takodje, one mogu da se nalaze na razlicitim lokacijama. Za program koji prevodimo su potrebne neke od tih biblioteka, i moramo da ustanovimo gde se one nalaze.
Zatim, mozemo odabrati da neku od funkcionalnosti koje ima program koji zelimo da instaliramo bude ukljucena ili iskljucena iz finalnog programa. Izbacivanjem nepotrebnih stvari se dobija manji i brzi porgram.

Sav ovaj posao odradice jedna skripta koja dolazi uz izvorni kod. Njen naziv je `configure` i mozete je naci u direktorijumu u kom ste raspakovali izvorni kod. Mozete da "udjete" u taj direktorijum i da pokrenete tu skriptu.
cd /gde/je/izvorni/kod
./configure

Ova skripta moze da prihvati neke argumente i na taj nacin prilagodi program Vasim potrebama. Prvo pogledajmo opciju --prefix. Ona se koristi u obliku --prefix=/ime/direktorijuma i, naravno, sluzi za izbor direktorijuma u koji zelimo da instaliramo program.
Ja, obicno, programe iz izvornog koda instaliram u /usr/local. U tom slucaju ce predhodna komanda configure imati sledeci oblik
./configure --prefix=/usr/local

Da bi izbacili, odnosno ubacili, odgovarajuce funkcije programa navedite odgovarajuce argumente skripti configure. Ovi argumenti obicno imaju oblik --enable-ovo --disable-ono. Ponekad ti argumenti traze i neki dodatan parametar. Naravno, spisak ovih argumenata usko zavisi od konkretnog programa koji prevodite i instalirate. Pozovite
./configure --help
ako zelite da vidite kompletan spisak podrzanih argumenata. Obicno dokumentacija koja dolazi uz program opisuje svaki od tih argumenata.

Evo jednog primera poduzeg i neobicnog (ali ispravnog) poziva skripte configure za program gcc
./configure --prefix=/tools --with-local-prefix=/tools --disable-nls --enable-shared --enable-languages=c
Najcesce necete pisati ovoliko opcija za konfigurisanje.

Sta radi `configure` skripta?
Prvo, ova skripta pretrazuje zavisnosti. Ukoliko pronadje sve sto je potrebno za prevodjenje programa, nastavice svoja rad. Ukoliko ne pronadje neku od potrebni zavisnosti, prekinuce rad i informisati korisnika. Obicno `configure` ispise po jedan red za svaki porgram koji trazi na sistemu. Tako mozete videti sta je instalirano a sta fali.
Zatim, `configure` pravi fajlove Makefile. Postoji po jedan ovakav fajl za svaki od poddirektorijuma u kojima je smesten izvorni kod, kao i za direktorijum iz kog smo pozvali `configure`. Oni sadrze informacije bitne za dalje prevodjenje programa. U ove fajlove su "ugradjeni" parametri koje smo prosledili nasoj `configure` skripti.

Podrazumevacu da je konfiguracija prosla dobro. Ukoliko nije, trebate instalirati potrebne zavisnosti, a zatim ponovo pokrenuti ovu skriptu.

__________________

Programmer (noun): an organism that transforms coffe into code.

RiSK
Slika korisnika RiSK
Offline
User
Član od: 29/05/2006

4.3 Prevodjenje programa

Pre nego sto se upustimo u prevodjenje, pojasnimo strukturu fajlova Makefile i komandu `make`.
Osnovna svrha komande `make` je da omoguci lako prevodjenje i povezivanje velikih programa. Medjutim, njena fleksibilnost je omogucila primenu ovog mehanizma i u mnoge druge svrhe.

Kako radi make?
Komanda `make` koristi fajl Makefile za opis akcija koje treba da obavi. Bez ulazenja u sintaksu ovog fajla mozemo reci sledece. Makefile sadrzi nekoliko reci (stringova) koje nazivamo "target" (meta). Uz svaki target se nalazi spisak komandi koje se izvrsavaju pozivom `make ime_targeta`. Dakle, ukoliko u datoteci Makefile postoji target sa imenom install pozivom `make install` izvrsi ce se jedna za drugom komande (misi se na komande shell-a, naravno) koje su dodeljenje ovoj meti. Jedna od meti je podrazumevana. Pozivom sam `make` bez naziva targeta u komandnoj liniji izvrsice se komande koje odgovaraju podrazumevanoj meti (default target).
Obratite paznju na to da make pretrazuje samo direktorijum iz kog je pozvan radi pronalazenja datoteke Makefile. Ako Makefile postoji u tekucem direktorijumu, izvrsi ce se odgovarajuce komande. U suprotnom, make ce prijaviti gresku i prekinuti rad. Takodje, doci ce do greske i prekida programa ukoliko 'target' koji smo naveli kao argument komande `make` ne postoji u Makefile-u tekuceg direktorijuma.

Opisani mehanizam cemo koristiti za prevodjenje programa. Skripta `configure` je u direktorijumu iz kog je pozvana (podrazumevacu da je to i direktorijum u kom je raspakovan program) kreirala Makefile cija podrazumevana meta sluzi za prevodjenje programa. Dakle, sve sto trebamo uraditi je da postavimo direktorijum u kom je raspakovan program (t.j. iz kog je pozvana skripta configure) za radni direktorijum sa `cd /ime/direktorijuma` (ukoliko vec nismo "u" tom direktorijumu), a zatim pozovemo
make
Sta radi ova komanda?
Ova komanda prevodi izvorne kodove programa u binarne. Prevodjenje vecih programa moze znatno da potraje. Brzina procesora i kolicina radne memorije imaju znacajan uticaj na brzinu prevodjenja programa. Ako sve prodje kako treba, dobicete program u binarnom obliku. U suprotnom cete dobiti informaciju o gresci.
Nakon izvrsene komande `make` najveci deo posla je za nama.

4.4 Instaliranje i drugi administrativni zahvati

Nakon sto je program preveden, trebamo fajlove kopirati na odgovarajuce lokacije. Ovo cemo, takodje, izvrsiti upotrebom komande `make`.

Osim podrazumevanog, u Makefile-u koji je dobijen pri konfigurisanju su definisani jos neki targeti. Oni imaju sledeca imena: install, uninstall, clean. Target install sluzi za instaliranje programa na odgovarajucu lokaciju (izabranu pri konfiguraciji). Direktorijumi u koje se ovom prilikom vrsi upis (najcesce unutar /usr ili /opt direktorijuma) su podeseni tako da "obican" korisnik nema privilegije upisa. Upis u te direktorijume mozemo vrsiti kao korisnik root. Naravno, privilegije se mogu promeniti te na taj nacin mozemo dozvoliti i drugim korisnicima upis u ove direktorijume. Ovo je krajnje nepozeljno i savetujm Vam da ne radite to.
Dakle, da bi smo instalirali program na zeljenu lokaciju (izabranu pri konfiguraciji) moramo prvo "postati" root. To cemo postici pozivom komande su i, naravno, unosenjem lozinke. Nakon toga, ukucajmo (podrazumevam da se nalazite u direktorijumu u kom ste raspakovali izvorni kod, odnosno iz kog ste pokrenuli `configure`) make install
`make install` ce prekopirati fajlove na odgovarajuca mesta, cime je instalacija zavrsena.

Mete `uninstall` sluzi za uklanjanje programa sa sistema. Pokrenite make uninstall kao root i uklonicete program. Primetimo da je potrebno sacuvati izvorni kod (raspakovanu arhivu) ukoliko zelimo da uklonimo program.

Meta `clean` sluzi za uklanjanje binarnih fajlova dobijenih prilikom kompajliranja. Pri prevodjenju izvornog u izvrsni kod u direktorijumu u kom je odpakovana arhiva se generisu binarni fajlovi programa. Ukoliko iz nekog razloga zelite da ih uklonite, pozovite make clean

__________________

Programmer (noun): an organism that transforms coffe into code.

RiSK
Slika korisnika RiSK
Offline
User
Član od: 29/05/2006

4.5 Instaliranje programa iz izvornog koda - rezime

Da bi instalirali program potrebno je da ga: (1) odpakujemo, (2) konfigurisemo, (3) prevedemo, (4) instaliramo. Prve tri akcije mozemo preduzeti kao bilo koji korisnik. Pozeljno je izbegavati korisnika `root` za ovo. Cetvrtu akciju moramo preduzeti kao korisnik root.
Instaliranje programa iz izvornog koda moze da ima puno konfiguracionih opcija, medjutim najcesce se svodi na sledeci niz komandi:
tar -xvzf /ime/arhive #ili j umesto z
cd /direktorijum/u/kom/je/arhiva/raspakovana
./configure --prefix=/usr/local
make
su
make install

Obavezno pre instaliranja programa procitajte dokumentaciju koja dolazi uz instalaciju!
Obratite paznju na to da je ovo samo jedan od nacina instaliranja programa iz izvornog koda. Mozda program koji zelite da instalirate koristi neku drugu metodu.

4.6 Tips & tricks

(1) Umesto komande `make instrall` mozete koristiti komandu `checkinstall` ili neku slicnu. Svrha ove komande je da od kompajliranog programa napravi binarni paket u nekom od formata (obicno .rpm, .deb, .tgz, ...) koji koristi vasa ditribucija. Zatim mozete instalirati ovaj paket kao svaki drugi paket koji dolazi uz distribuciju. O instaliranju paketa u sledecem poglavlju Wink

(2) Mozete razdvojiti direktorijum u kojem se nalazi izvorni kod od onog u kom se vrzi prevodjenje. Recimo da ste arhivu izvornog koda programa raspakovali u /source/program. Napravite neki diektorijum, recimo /build/program. Uradite `cd /build/program` a zatim `/source/program/configure`. U /build/program cete dobiti Makefile, i u odnosu na ovaj direktorijum dalje prevodite program.
Postoje programi za koje je ovo preporucljivo uraditi. Za vecinu, ovo je nepotrebno.

(3) Mozete testirati prevedeni program u smislu da li je on dobro preveden. Nakon `make` a pre `make install` ukucajte `make check` da bi ste pokrenuli test.

(4) Kompajler moze da optimizuje kod na razlicite nacine. Ukoliko zelite da dobijete brz program naucite kako da optimizujete kompajler za vas sistem. Vodite racuna o tome da preterana optimizacija moze da dovede do lose prevedenog programa.

(5) Da bi C(++) kompajler mogao da prevede i poveze kod, potrebni su mu heder fajlovi za sve biblioteke (preciznije module) koje koristi. Sto se tice instaliranja heder fajlova, distribucije to uglavnom resavaju na dva nacina: (prvi) Ako ste instalirali paket za biblioteku xyz dobicete i heder fajlove ili (drugi) postoje dva paketa, jedan za biblioteku xyz a drugi za njene heder fajlove. Primetite da program moze da radi, ali ne moze da se prevede bez heder fajlva. (Ustvari, moze i da se prevede, ali bi to zahtevalo modifikaciju koda. To se moze uraditi elementarnim znanjem jezika C, ali bi posao bio velik i mukotrpan.) Distribucije koje koriste drugi od ova dva pristupa, za paket koji se zove xyz i uz koji mogu da se instaliraju hederi, sadrzi i paket koji se obicno zove xyz-dev, xyz-devel ili slicno. Ako vasa distribucija koristi ovu filozofiju, instalirajte potrebne -dev pakete pre kompajliranja.

__________________

Programmer (noun): an organism that transforms coffe into code.

RiSK
Slika korisnika RiSK
Offline
User
Član od: 29/05/2006

5. Instaliranje programa iz paketa (Package Managment System)

Instaliranje binarnih paketa je daleko lakse i brze od instaliranja programa iz arhive izvornog koda. Jedan od najboljih, i na GNU/Linux sistemima najkoriscenijih, nacina za ovo je sledeci. Program u binarnom formatu spakujemo u jednu arhivu. Uz program, obicno se tu upisu i nekoliko skripti, kao i dodatne informacije o programu (naziv, verzija, ko je prepakovako, za koju arhitekturu je kompajliran,...). Ovakva arhiva se naziva paketom. Paketi imaju standardnu strukturu i njima se moze baratati specijalizovanim softverom. Taj softver omogucuje instaliranje i uklanjanje paketa i jos neke dodatne funkcionalnosti.
Postoji vise tipova paketa, a najrasprostranjeniji su rpm i deb paketi, pa cemo najvise paznjeobratiti na njih.

Kako izgleda implementacija programa za upravljanje paketima?
Na ovo pitanje cemo odgovoriti samo povrsno, ne upustajuci se dublje u to kako ovi programi rade.
Generalno, paket mozemo posmatrati kako kompresovanu arhivu (obicno je to neka posebna arhiva koja se definse pri projektovanju i implementaciji paketa ili je to neka 'standarda' arhiva kao sto su .tar.gz ili .tar.bz2 arhiva). U toj arhivi se, pre svega, nalaze fajlovi koji se prilikom instaliranja kopiraju na sistem. Distributer softvera planira gde ce se instalirati ovi fajlovi. Korisnik moze da promeni lokaciju na kojoj ce se instalirati fajlovi paketa, ali se ovo, obicno, jako retko radi. Osim ovih fajlova, tu se nalazi i nekoliko skripti. Nakon kopiranja fajlova, pokrece se neka od skripti. Njen zadatak je da napravi inicijalna podesavanja za program koji instaliramo.
Zatim, u paketu se nalaze oznake njegovog imena i verzije. Odmah napravite razliku izmedju imena fajla paketa i imena samog paketa! Softver za rad sa paketima ima jednu internu bazu podataka u kojoj cuva podatke o paketima. U toj bazi paketi se referenciraju po njihovim imenima.
Recimo, naziv fajla naseg paketa moze da bude "gnomebaker_0.6.0-1_i386.deb" dok je naziv ovog paketa "gnomebaker". Naziv fajla paketa se obicno pise tako da sadrzi naziv paketa i njegovu verziju. Kada jednom skinemo ovaj paket sa interneta (ili ga dobavimo na neki drugi nacin), mozemo ga instalirati. Softver za upravljanje paketima ce ovaj paket zapisati u svoju bazu pod nazivom 'gnomebaker'. Ukoliko zatim zelimo da preduzmemo neku akciju nad ovim paketom, recimo da ga uklonimo sa sistema, moramo koristiti njegovo ime zapisano u bazi.

Softver za upravljanje paketima ume da prepozna zavisnosti izmedju paketa. Prepostavimo da je sav softver na nasem sistemu instaliran koriscenjem paketa. Uzmimo primer programa Firefox i biblioteke GTK2: Firefox zavisi od ove biblioteke. Neka se firefox nalazi u paketu firefox.deb a GTK2 biblioteka u libgtk2.deb. Dovoljno je nekako objasniti softveru za upravljanje paketima da pri instaliranju paketa firefox.deb treba da instalira i paket libgtk2.deb. Ovo se radi belezenjem zavisnosti uz ostale podatke o paketu. Znaci, u svakom paketu je zapisano od kojih paketa zavisi. Citanjem tih zapisa i uporedjivanjem sa beleskama o instaliranim paketima koje softver za upravljanje paketima cuva u svojoj internoj bazi, ovaj softver moze zakljuciti da li su zadovoljene sve zavisnosti za instaliranje paketa. Najcesce je zavisnost nesto komplikovanija. Obicno jedan paket zavisi od tacno jdne verzije drugog paketa, ili od verzije drugog paketa koja je "veca ili jednaka" nekoj. Evo kako moze da izgleda lista zavisnosti za jedan paket:

Osim zavisnosti, paketi mogu biti i u nekom drugom odnosu. Najbitnije je istaci da paketi mogu biti u konfliktu. To znaci da ne mogu istovremeno biti instalirati na sistem. Informacije o tome sa kojim paketom je konfliktan su, obicno, zapisane u paketu.

Evo kako mogu da izgledaju sve informacije vezane za jedan paket
Package: nano
Priority: important
Section: editors
Installed-Size: 1624
Maintainer: Jordi Mallach
Architecture: i386
Version: 2.0.2-1
Replaces: pico
Provides: editor
Depends: libc6 (>= 2.3.6-6), libncursesw5 (>= 5.4-5)
Suggests: spell
Conflicts: nano-tiny (<= 1.0.0-1), pico
Size: 546858
Description: free Pico clone with some new features
GNU nano is a free replacement for Pico, the default Pine editor. Pine is
copyrighted under a restrictive licence, that makes it unsuitable for
Debian's main section. GNU nano is an effort to provide a Pico-like
editor, but also includes some features that were missing in the original,
such as 'search and replace', 'goto line' or internationalization support.

5.1. Paketi tipa .deb (Debian package)

Razvoj ovih paketa i menadzera za rukovanje njima je poceo kao jedan od pod-projekata Debiana. Kako je veliki broj distribucija zasnovan (posredno ili neposredno) na Debianu, ova vrsta paketa se prosirila i na brojne druge distribucije. Debianovi paketi imaju vrlo dobru strukturu, a menazder paketa ima brojne komande koje mozete upotrebiti za manipulisanje ovim paketima. Nikako necemo preispitivati sve mogucnosti ovog menadzera paketa, vec cemo se zadrzati na najosnovnijim.

Uz distribucije koje koriste ovaj menzadzer paketa (Debian, sve iz Ubuntu familije, SymplyMepis i jos mnoge) dolazi nekoliko alata za rad za .deb paketima. Pogledajmo prvo program koji zauzima "centralno" mesto medju ovim alatima: dpkg.
dpkg je konzolna aplikacija. Kao argumente ovom programu prenosicemo ime paketa ili ime fajla u kom je paket sacuvan i oznaku neke od radnji koje dpkg treba da obavi nad ovim paketom. Za instaliranje paketa koristicemo opciju -i, odnosno u "dugom obliku" --install. Dakle, .deb paket instaliramo na sistem sa
dpkg -i ime_fajla.deb ili sa dpkg --install ime_fajla.deb
Kod ovih komandi je sa ime_fajla.deb oznaceno ime fajla paketa koji zelimo da instaliramo. Ukoliko kmandu ne pozivao iz direktorijuma u kom se ovaj fajl nalazi, moramo navesti potpunu putanju (apsolutnu ili relativnu).

Za uklanjanje paketa sa sistema mozemo koristiti opciju -r, odnosno --remove. Paket sa sistema uklanjamo sa
dpkg -r ime_paketa ili sa dpkg --remove ime_paketa
Obratite paznju na to da je ovde sa ime_paketa oznacen naziv samog paketa, ne ime fajla iz kog je instaliran.

Informacije o paketu koji je instaliran mozete dobiti koriscenjem opcije -s, odnosno u "dugom formatu" --status. Pri ovome komanda dpkg, naravno, koristi ime paketa a ne ime fajla. Oblik komande je
dpkg -s ime_paketa ili dpkg --status ime_paketa
Slicno, informacije o .deb fajlu koji ne mora da bude instaliran na sistem dobijamo pomocu opcije --info. Njoj se prosledjuje ime fajla, odnosno putanja do .deb fajla.
dpkg --info ime_fajla.deb

Prilikom instaliranja .deb paketa na sistem pokrecu se izvesne skripte koje imaju za cilj da izvrse odredjene promene na sisemu koje su neophodne, ili bar pozeljne, za rad upravo instaliranog programa. Tako, na primer, ako instliramo X server, logicno je izvrsiti konfiguraciju fajla xorg.conf i prilagoditi ga konkretnom sistemu (hardveru i instaliranom softveru koji je usko vezan za X server).
Ponekad je potrebno pokrenuti takvu skriptu ponovo. To se moze uraditi komandom `dpkg-reconfigure`. Prenosenjem imena paketa kao argumenta ove komande, ponovo se izvrsavaju skripte za njegovo kofigurisanje. Dakle, komandu pozivamo u obliku
dpkg-reconfigure ime_paketa

Lista konzolnih programa koje sluze za rukovanje .deb paketima je pozamasna. Evo, na primer koji su programi instalirani na mom sistemu a pocinju sa dpkg

dpkg            dpkg-genchanges      dpkg-scanpackages
dpkg-architecture    dpkg-gencontrol      dpkg-scansources
dpkg-buildpackage    dpkg-name            dpkg-shlibdeps
dpkg-checkbuilddeps  dpkg-parsechangelog  dpkg-source
dpkg-deb            dpkg-preconfigure    dpkg-split
dpkg-distaddfile    dpkg-query          dpkg-statoverride
dpkg-divert          dpkg-reconfigure

Vecinu ovih alata necete koristiti u svakodnevnom radu. Narocito ne sve mogucnosti koje oni pruzaju. Instaliranje, uklanjanje i rekonfiguracija paketa su najcesce operacije koje cete obavljati nad .deb paketima, i mislim da je za pocetak sasvim dovoljno znati kako se koriste ovih par komandi koje smo prodiskutovali. Ukoliko imate potrebu da obavite neku drugu (ne tako cestu) operaciju nad .deb paketom, pogledajte `man` stranice gore izlistanih komandi i pretrazite internet.

btw: Primetite da je .deb paket obicna .tar.gz arhiva. Mozete ga otvoriti softverom za rad sa regularnim arhivama. Evo kako izgleda jedan paket u Arku:

Osim konzolnih alata, za rad sa paketima postoje i GUI alati. Ukoliko imate neku distribuciju prilagodjenu desktopu i lakoci koriscenja, verovatno cete dvoklikom na .deb paket iz vaseg menadzera datoteka pokrenuti ovakav softver. Ja nikada nisam koristio ovakve programe, tako da ne mogu reci nesto posebno na tu temu. Umesto reci, pokazacu Vam sliku programa KPackage. To je KDE-orijentisana aplikacija i sluzi za rad sa pakerima (.deb, .rpm, ...).

Ovaj alat je vise nego intuitivan, i mislim da cete se lako snaci bilo u ovom bilo u nekom slicnom programu.

5.2. Paketi tipa RPM (Red Hat Package Mandatory)

RPM pakete i alate za rad sa njima je razvio Red Hat za potrebe svoje distribucije. Veliko broj distribucija je (neposredno ili posredno) zasnvan na Red Hatu, tako da RPM pakete osim Crvenkape koristi jos mnogo distroa (Mandriva, PC Linux OS, Suse, Fedora, CentOS, ...). Ovo je, verovatno, najpopularniji format paketa.

Kao i za .deb pakete, i za .rpm pakete postoje konzolni alati kojima ovi mogu da se instaliraju, uklone, ... Osnovna alatka se zove `rpm`. Izlaz komande `rpm --help` daje kratak opis fantasticno velikog broja akcija koje mozete izvrsiti koriscenjem ovog alata. Zadrzacemo se samo na instaliranju i uklanjanju ovih paketa.

RPM paket mozete instalirati na sistem sa
rpm -i ime_fajla odnosno
rpm --install ime_fajla
Opet Vam skrecem paznju da se navodi ime *fajla* a ne ime paketa. Za ukalanjanje paketa koristi se opcija -e ili u dugom obliku --erase. Paket uklanjamo sa sistema komandom oblika
rpm -e ime_paketa ili u "dugom" obliku
rpm --erase ime_paketa
Promenu verzije paketa na noviju ('upgrade') se moze izvrsiti uz upotrebu opcije -U odnosno --update. Ovo je ekvivalentno uklanjanju strijeg paketa i zatim instaliranju novog. Komanda ima oblik
rpm -U ime_fajla odnosno rpm --upgrade ime_fajla
Jos jednom: Obratite paznju kada se navodi ime fajla a kada ime paketa kao argument naredbe `rpm`.

RPM pakete koristi mnogo distribucija sto je dovelo do stvaranja razlicitih GUI alata za rad za ovim paketima. Na zalost, ja ne koristim ove distribucije pa nemam takve alate, ali mogu otvoriti RPM paket programom KPackage.

RPM paket se, takodje, moze otvoriti kao obicna arhiva. Evo kako izgleda jedan paket otvoren aplikacijom "File roller":

Ukoliko zelite da saznate vise stvari o RPM paketima i radu sa njima procitajte prirucnik `man rpm` i pretrazite internet.

5.3. Jos nesto o paketima

Prica o paketima je ovim tek naceta. Raznovrsnost distribucija i menadzera paketa koje dolaze uz njih je velika. Naporno bi bilo i pobrojati sve, a kamoli reci po nesto o njima. Sledi par reci o jos nekim formatima i konceptima vezanih za pakete.

Nikako ne smemo zaobici Slackware i njegov menadzer paketa. Ovo je najstarija ziva distribucija i uz nju dolaze paketi koji imaju prilicno primitivan format. Ekstrnzija ovih paketa je .tgz. Ovi paketi nemaju mogucnost pracenja zavisnosti. Osim alata koji dolaze uz instalaciju Slackware-a, postoje i drugi alati koje je razvila zajednica korisnika. Ti programi su nesto bogatiji mogucnostima. Izmedju ostalog, umeju da razresavaju zavisnosti. Meni ovakav menadzer paketa smeta i to je glavni razlog zbog kog sam odustao od Slackware-a pre nekoliko godina. Ipak, mnogi su odusevljeni ovakvim ponasanjem menadzera paketa.
Postoji dosta distribucija koje su zasnovane na Slackwareu. Veliki broj njih je uneo neke promene u menadzer paketa. Primeri su Zenwalk i KateOS.

Jedna, po menadzeru paketa vrlo specificna, distribucija je Arch. Za potrebe ove distribucije je razvijen mali ali mocan menadzer `pacman`. Ovaj menadzer je prihvatilo jos nekoliko distribucija (npr. Frugalware). Za "Pacman" postoji nekoliko GUI aplikacija koje predstavljaju njegov front-end, i ma koliko Pacman bio dobar, ovi programi su prilicno lose odradjeni.

Sve do sada smo precutno prelazili preko jedne stvari. Razmatrali smo pakete koji predstavljaju binarne programe. Medjutim, postoji jos jedan koncept. Ovaj koncept je predstavljen paketima koji sadrze izvorne kodove programa. Prilikom instaliranja ovakvih paketa, oni se kompajliraju "u pozadini". Ideja je napraviti mehanizam koji kombinuje dobre osobine instaliranja programa iz izvornog koda i instaliranja paketa. Ovakva mogucnost je ostavljena kod sistema koji se zasnivaju na deb ili rpm paketima. Postoje arhive izvornih kodova (obicno sa ekstenzijama .debs i .src.rpm) koje se mogu instalirati na sistem jednom komandom, a nadalje ponasati kao da je instliran odgovarajuci binarni paket. Za razliku od ovog pristupa, postoje distribucije koje forsiraju pakete sa izvornim kodom. Daleko najpopularnija medju njima je distribucija Gentoo. Uz Gentoo dolazi izuzetno dobar menadzer paketa "Portage" koji donosi alate za manipulaciju ovim paketima.
Rad sa ovakvim paketima je nesto sto prevazilazi nivo pocetnika, te se necemo zadrzavati na ovoj temi.

5.4. Tips & tricks

(1) Svaka distribucija koristi odredjenu vrstu paketa. Moguce je instalirati i pakete drugog formata, ali je ovo krajnje nepozeljno. Ovim se, na primer, stvaraju problemi pri odredjivanju zavisnosti.
Postoje alati koji mogu da konvertuju pakete iz jednog formata u drugi (npr. alien), ali ovakvi alati obicno ne eliminisu probleme koje donosi instaliranje paketa "stranog" formata.
Instalirajte paket koji nije u formatu "prirodnom" za vasu distribuciju samo ukoliko nemate drugog izbora!

(2) Primetite da se paketi stvaraju za odredjenu distribuciju, cak sta vise za odredjenu verziju te distribucije. Instaliranje paketa koji odgovara drugoj distribuciji (ili drugoj verziji Vase distribucije) moze da se zavrsi neupotrebljivim programom.

__________________

Programmer (noun): an organism that transforms coffe into code.

RiSK
Slika korisnika RiSK
Offline
User
Član od: 29/05/2006

6. Repository (riznica)

Za vecinu distribucija menadzer paketa predstavlja jedan od centralnih programa oko kojih se organizuje ostatak distribucije. Prirodan i pozeljan nacin instaliranja softvera je instaliranje koriscenjem menadzera paketa. Da bi korisniku distribucije omogucili lakse instaliranje paketa, obicno te pakete organizujemo u vidu riznica (eng. repository ili skraceno repo). Repo je kolekcija paketa koja se cuva na nekom hostu na mrezi ili na lokalnoj sekundarnoj memoriji (obicno CD ili DVD). Paketi su na odgovarajuci nacin razvrstani, a uz njih se cuvaju i izvesni opisi tih paketa koje koristi softver za rukovanje njima. Sta dobijamo ovakvom organizacijom? Osvrnimo se prvo na zavisnosti. Kada pokusamo da instaliramo jedan paket iz repoa, menazder paketa moze da utvrdi sve njegove zavisnosti. Zatim, ukoliko na sistem nije instaliran neki od paketa koji predstavlja zavisnost, moze istovremeno iz repoa da pribavi i taj dodatni paket. Organizacija u vidu riznice olaksva posao oko instalacije paketa. Bez repoa moramo sami naci paket (na disku ili na internetu), zatim eventualno naci sve zavisnosti koje nam nedostaju, i na posletku instalirati sve te pakete. Sa riznicom je dovoljno uporebiti komandu koja kaze instaliraj taj-i-taj paket i sav posao ce biti obavljen za nas.

Sarenolikost distribucija i paketa je uslovila i veliki broj razlicitih organizacija riznica. Odmah cemo se dotaci Debiana i njegove organizacije. Debian je razvio APT (Advanced Package Tool) koji predstavlja jedan od najboljih alata za rad sa riznicma. Sve Debian-bazirane distribucije su prihvatile ovaj alat, tako da je organizacij apaketa i riznica kod ovih distribucija uniformna. Ovaj alat cemo u nastavku detaljnije razmotriti.
Osim APTa, postoje i drugi alati. Skrenimo odmah paznju na distribucije koje koriste RPM pakete. Vecina njih ima neke sebi svojstvene alate. Pomenimo da postoji i APT koji radi sa .rpm umesto sa .deb paketima (apt4rpm). Ako me secanje dobro sluzi, taj alat je razvila Conectiva. Jedna od distribucija koje koriste apt4rpm je PC Linux OS. Vredan paznje je i yum. Yum je razvijen pod okriljem Red Hata i koristi se u Fedori (mislim i Rad Hatu) i distribucijama baziranih na ovima. Pacman je specifican alat koji istovremeno predstavlja i alatku za rad sa pojedinim paketima i alatku za rad sa riznicama.

6.1. APT - Advanced Package Tool

APT je razvijen pod okriljem Debiana i razvijen je tako da ima sto je moguce vise funkcionalnosti. Distribucije koje koriste APT imaju mogucnost jednako efikasnog instaliranja paketa sa interneta (sa udaljene riznice) ili sa lokalnih diskova. Alati ukljuceni u apt rade vrlo brzo i dobro. Debian, inace, uziva ugled distribucije koja ima najbolje sredjene pakete.

Ovde cemo se osvrnuti na neke osnovne funkcionalnosti APTa.


6.2. Dodavanje repoa

Kao sto smo rekli, repo u aptu predstavlja udaljenu lokaciju na inernetu ili lokalni CD/DVD. Da bi apt znao gde se koji paketi nalaze, moramo mu dati opis lokacije odnosno diska sa paketima. Svoje konfiguracione fajlove apt cuva u /etc/apt direktorijumu. Osvrnimo se prvo na fajl  /etc/apt/sources.list. Evo kako taj fajl izgleda ko mene:
deb cdrom:[Debian GNU/Linux 4.0 r0 _Etch_ - Official i386 DVD Binary-3 20070407-11:40]/ etch contrib main
deb cdrom:[Debian GNU/Linux 4.0 r0 _Etch_ - Official i386 DVD Binary-2 20070407-11:40]/ etch contrib main
deb cdrom:[Debian GNU/Linux 4.0 r0 _Etch_ - Official i386 DVD Binary-1 20070407-11:40]/ etch contrib main
# Line commented out by installer because it failed to verify:
# deb http://security.debian.org/ etch/updates main contrib
# Line commented out by installer because it failed to verify:
# deb-src http://security.debian.org/ etch/updates main contrib
#debian multimedia repo
deb http://www.debian-multimedia.org etch main
#debian beryl repo
deb http://debian.beryl-project.org etch main
#main contrib non-free sa mirora
#deb http://ftp.de.debian.org/debian/ etch main contrib non-free

Linje ovog fajla koje pocinju sa tarabom (#) (eng. sharp) predstavljaju komentare. Iza tarabe mozete pisati bilo sta. To nece uticati na konfiguraciju. Ostale linije predstavljaju opise repoa. Svaka linija koja nije komentar (i nije prazna) predstavlja opis jednog repoa. To moze da bude repo koji sadrzi binarne pakete ili pakete za izvornim kodom. U prvom slucaju linija pocinje odrednicom 'deb' a u drugom recju 'deb-src'. Drugi slucaj necemo razmatrati. Dakle za nas svaka konfiguraciona linija pocinje sa 'deb'. Nakon te linije sledi (odvojena razmakom) adresa repoa. To moze da bude internet adresa ili labela CD/DVD diska. Obratimo paznju na sintaksu adrese. Prvih nekoliko karaktera oznacava da li se radi o optickom disku ili o udaljenom http/ftp serveru. Dakle, adresa pocinje sa cdrom: , http: ili ftp: . Moze da pocne i sa jos nekoliko direktiva (file, rsh, ...) ali se one daleko redje koriste. Iza znaka "dve tacke" (Smile sledi labela optickog diska, ukoliko adresa pocinje sa cdrom: odnosno adresa hosta na kom se nalazi repo ukoliko adresa pocinje sa http: ili ftp:.
Nakon adrese sledi naziv distribucije. Na istim serverima se mogu hostovati (a i na istim diskovima nalaziti) paketi za vise verzija Debiana, i za odgovarajucu granu se odlucujemo navodjenjem njenog imena ovde. Nakon naziva distribucije (i razmaka) sledi spisak sekcija (komponenti) odvojenih razmakom. Debian deli pakete koje distribuira prema licenciranju na tri vrste: main, contrib i non-free. Oni se cuvaju kao zasebne sekcije. Korisnik moze da bira da li hoce da ukljuci neku od ovih sekcija ili ne. Kod drugih distribucija koje koriste apt moze da postoji i drugacija organizacija. Procitajte dokumentaciju Vase distribucije, tu je opisan nacin na koji je organizovan apt repo.

Dakle, jedan moguci ulaz u sources.list fajl moze da ima oblik:

deb http://ftp.de.debian.org/debian/ etch        main contrib non-free
|    |  \                        /  |        \                /
bin vrsta      adresa_hosta        ime_distroa        sekcije

Za vise detalja o ovom konfiguracionom fajlu pogledajte prirucnik `man sources.list`.

Kako dodati repo?
Ako dodajemo repo hostovan na internetu, prvo trebamo dopisati odgovarajucu liniju u /etc/apt/sources.list. Nakon toga, cemo pozvati komandu
apt-get update
Ova komanda za sve repoe opisane u sources.list dovlaci opise paketa i dodaje ih u lokalnu bazu. Naravno, apt je dovoljno "pametan" da preskoci opise koji su vec u lokalnoj bazi u svojoj najnovijoj verziji. Tek nakon sto ova komanda zavrsi posao mozemo koristiti zeljeni repo.
Ukoliko dodajemo CD/DVD mozemo koristiti elegantniji nacin. Ukucajmo u shellu:
apt-cdrom add
Ovaj program ce zatraziti od nas da ubacimo CD/DVD koji dodajemo i pritisnemo 'enter'.
[/home/rile]root: apt-cdrom add
Using CD-ROM mount point /cdrom/
Unmounting CD-ROM
Waiting for disc...
Please insert a Disc in the drive and press enter

Nakon toga ce sam ubaciti odgovarajucu liniju u sources.list i osveziti intarnu bazu. Nakon ove komande nema potrebe za pozivanjem `apt-get update`.

Obratite paznju: Na vasem sistemu postoji uredjaj /dev/cdrom. To je simbolicki link na neki od cd ili dvd citaca. Apt koristi /dev/cdrom za sve operacije sa optickim diskovima. Dakle, CD onosno DVD morate ubaciti u uredjaj na koji pokazuje link /dev/cdrom.

Unutar direktorijuma /etc/apt se nalazi poddirektorijum sources.list.d.
[/home/rile]root: ls /etc/apt/sources.list.d/
winehq.list

Fajlovi ovog direktorijuma se ponasaju kao da je njihov sadrzaj kopiran u /etc/apt/sources.list prilikom pozivanja komandi APTa. Ovaj direktorijum se moze koristiti za lakse konfigurisanje repoa.

6.3. Instaliranje i uklanjenje paketa

Pre nego sto predjemo na rad sa paketima koriscenjem alata koji donosi APT: Pri bilo kakvom operacijom na d paketima se ovde koristi ime paketa a ne ime fajla! Cak sta vise, obicno .deb fajlove necete ni koristiti direktno.

Centralno mesto medju alatima APTa zauzima konzolna aplikacija `apt-get`. Ona sluzi za instaliranje i uklanjanje paketa, zatim za nadogradjivanje programa na sveziju verziju i nadogradjivanje citave distribucije na novu verziju i za jos neke pomocne operacije.
Sintaksa ove nardbe ima oblik
apt-get (opcije) komanda (lista imena paketa)

Za instaliranje paketa koristi se komanda 'install' programa apt-get. Za njom se navode imena paketa koje zelimo da instaliramo. Dakle citava komanda ima oblik
apt-get install paket1 paket2 ... paketN

Sta radi ova komanda?
Prvo, proverava postojanje navedenih paketa u bazi. Ukoliko neki od paketa ne postoji, prikazace poruku o gresci i zavrsiti izvrsavanje. Ukoliko svi paketei postoje, proverice od kojih paketa oni zavise. Zavisnosti se ovde proveravaju 'rekurzivno'. Ako je potreban neki od paketa kao zavisnost, proverice i njegove zavisnosti. Kada pronadje sve potrebne pakete, apt-get ce izracunati koliko prostora na disku je potrebno za instaliranje i koliko stvari treba da skinete sa interneta. Uz ove informacije, prikazace i koje je pakete preoprucljivo da instalirate uz one koje ste izabrali i jos par korisnih informacija i uctivo Vas pitati da li pod tim okolnostima zelite da nastavite instalaciju.
[/home/rile]root: apt-get install wmaker
Reading package lists... Done
Building dependency tree... Done
The following extra packages will be installed:
  libwraster3
Suggested packages:
  wmaker-data asclock
The following NEW packages will be installed:
  libwraster3 wmaker
0 upgraded, 2 newly installed, 0 to remove and 6 not upgraded.
Need to get 0B/2540kB of archives.
After unpacking 6640kB of additional disk space will be used.
Do you want to continue [Y/n]?

Nakon sta date odobranje za nastavak instalacije, apt-get ce krenuti sa pribavljanjem paketa. Ukoliko su potrebni paketi na nekom od hostova na internetu, apt-get radi sledecu stvar. Prvo, proverava da li paket koji instalira postoji u direktorijumu /var/cache/apt/archives. Ako postoji, koristi paket odatle. U suprotnom skida sa interneta odgovarajuci paket i kopiraga u ovaj direktorijum. Nakon instalacije, paket ostaje u tom direktorijumu. Ukoliko se instalacija paketa vrsi sa CDa/DVDa, zatrazice da ubacite odgovarajuci disk u uredjaj (ne zaboravite na link /dev/cdrom). Ovaj program ne instalira pakete neposredno, vec za svaki od paketa poziva komandu dpkg u pozadini.
Sadrzaj direktorijuma /var/cache/apt/archives moze posluziti za pravljenje rezervnih kopija instaliranih paketa. Ove kopije mogu ustedeti vreme i kolicinu podataka skinutih sa interneta. Takodje mogu postedeti zivce u ne-daj-Boze situacijama Wink

Za uklanjanje paketa sa sistema koristicemo komandu 'remove' programa apt-get. Sintaksa citave naredbe je
apt-get remove paket1 paket2 ... paketN

Sta radi ova komanda?
Ova komanda prvo proverava da li su uneti paketi instalirani. Ukoliko nisu, prijavice gresku i prekinuti rad.
[/home/rile]root: apt-get remove fluxbox
Reading package lists... Done
Building dependency tree... Done
Package fluxbox is not installed, so not removed
0 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.

U suprotnom, proverice koji paketi zavise od paketa koji zelimo da uklonimo. Primeticete da uklanjanjem zeljenog paketa svi ovi paketi ostaju bez svoje zavisnosti. Zato, moramo ukloniti i njih. Nakon sto apt-get proveri kakvo je stanje sa paketima, izdace obavestenje i pitati da li zelite da nastavite.
[/home/rile]root: apt-get remove xmms
Reading package lists... Done
Building dependency tree... Done
The following packages will be REMOVED:
  xmms xmms-cdread xmms-dev xmms-infinity xmms-skins
0 upgraded, 0 newly installed, 5 to remove and 6 not upgraded.
Need to get 0B of archives.
After unpacking 9052kB disk space will be freed.
Do you want to continue [Y/n]

Nadogradjivanje programa na noviju verziju se radi komandom 'upgrade' programa apt-get. Citava komanda ima sintaksu:
apt-get upgrade paket1 paket2 ... paketN

__________________

Programmer (noun): an organism that transforms coffe into code.

RiSK
Slika korisnika RiSK
Offline
User
Član od: 29/05/2006

6.4. Jos neke funkcionalnosti APTa

Osim navedenih, pomenucemo jos neke komande naredbe apt-get. Komanda 'clean' sluzi za brisanje paketa arhiviranih u /var/cache/apt/archives. Dakle, sve pakete odatle izbrisacemo sa `apt-get clean`.
Komanda 'dist-upgrade' sluzi za upgrade citave distribucije na novu verziju. Komanda 'check' proverava da li negde postoji greska u zavisnostima. Za ove i sve ostale komande pogledajte prirucnik `man apt-get`.

Jedan od oblika apt-get komande koji moze da koristi je
apt-get -f install
Ovim se proveravaju paketi koji imaju nezadovoljene zavisnosti (broken dependencies) i te zavisnosti se instaliraju ako su dostupne.

Jos jedna korisna komanda iz porodice apt je apt-cache. Ima sintaksu slicnu komandi apt-get. Obraticemo paznju na opciju 'search'. Sa
apt-cache search neki pojam pretrazicete lokalnu bazu podataka i pronaci sve one u cijem se imenu ili opisu nalaze reci zadate iza direktive 'search'.
[/home/rile]root: apt-cache search divx player
libvlc0-dev - development files for VLC
vlc-plugin-arts - aRts audio output plugin for VLC
vlc-plugin-ggi - GGI video output plugin for VLC
vlc-plugin-svgalib - SVGAlib video output plugin for VLC
vlc-plugin-glide - Glide video output plugin for VLC
gaupol - subtitle editor for text-based subtitle files
vlc - multimedia player and streamer
vlc-nox - multimedia player and streamer (without X support)
libvlc0 - multimedia player and streamer library
mozilla-plugin-vlc - multimedia plugin for web browsers based on VLC
vlc-plugin-alsa - dummy transitional package
wxvlc - dummy transitional package
vlc-plugin-esd - Esound audio output plugin for VLC
vlc-plugin-sdl - SDL video and audio output plugin for VLC
3gpwiz - 3gp movie wizard
mencoder - MPlayer's Movie Encoder
mplayer - The Ultimate Movie Player For Linux
mplayer-nogui - The Ultimate Movie Player For Linux
w32codecs - win32 binary codecs

Alata iz APT porodice ima mnogo. Evo nekih od programa na mom sistemu pocinju sa apt
apt-cdrom             apt-extracttemplates  apt-get               apt-key             apt-cache
apt-config            apt-ftparchive        aptitude              apt-sortpkgs

Vecinu stvari necete koristiti svakodnevno. Ukoliko Vam zatrebaju, pogledajte prirucnike i pretrazite internet.

6.5. APT na pristupacniji nacin

Iako navedene naredbe predstvljaju odlicne alate, najcesce ih necete koristiti ditektno vec preko njihovih front-endova. (Da se podsetimo: front-end je program koji sluzi umesto drugog programa i radi tako sto u pozadini izdrsava taj drugi program. Obicno se front-end pravi da bi od konzolne aplikacije dobili aplikaciju koja ima GUI.) Postoji mnogo front-endova za ove alate. Tu spadaju ncurses-bazirani aptitude, zatim Qt-bazirani Adept i GTK2-azirani Synaptic. Zadrzacemo se na Synapticu jer je on najkorisceniji. Moja preporuka ide ovom  programu. Aptutude je takodje fina alatka koju treba imati pri ruci za slucaj da zakaze grafika. Svi ovi alati imaju jednostavan interfejs i vrlo su intuitivni za koriscenje.

Radna povrsina glavnog prozora Synaptica je podeljena na tri dela.

Sa leve strane nalazi se pano u kom se mogu birati sekcije paketa. Svi paketi su grupisani u sekcije prema nameni programa. (Ne mesajte ove sekcije sa main, contrib i non-free sekcijama koje smo pomenuli predhodno.) Tako imamo sekcije Developement, Editors, Electornics, .... Ovakva podela omogucava lakse upravljanje velikim brojem paketa. Osim toga, u ovom panou mogu da se izaberu i drugi pogledi. Zanimljiva opcija je 'Serach Results'. Verovatno cete ovu opciju koristiti vrlo cesto, s obzirom da je pretraga najlaksi nacin za dolazenje do zeljenog paketa.
Ostatak radne povrsine je podeljen na dva dela. U gornjem delu se nalazi spisak svih paketa koji pripadaju oznacenoj sekciji levog panoa. Naravno, spisak ovih paketa zavisi od toga sta je izabrano sa leve strane. U donjem delu se nalazi opis paketa koji je selektovan.

Ispred naziva svakog od paketa nalazi se ikonica u obliku kvadratica. Zelena ikonica znaci da je paket instaliran na sistem, bela da nije instaliran. Desnim klikom na oznaceni paket se otvara pomocni meni u kom mozete izabrati neku od akcija koju mozete primeniti na paket. Iste kacije se nalaze i u meniju 'Edit'. Akcije se razlikuju kod razlicitih stanja paketa (instaliran, nije instaliran, oznacen, ...)

Spisak svih ikonica koje mogu da se pojave sa uz ime paketa mozete videti u Help->Icon Legend. Evo kako izgledaju

Nakon sto ste markirali sve promene koje zelite da izvrsite, upotrebite 'Apply marked changes' opciju menija 'Edit', ili jednostavno kliknite na alatku 'Apply' iz linije sa alatima. Otvorice se prozor koji nudi kratak izvestaj o tome sta ste izabrali za uraditi.

Nakon klika na dugme 'Apply' ovog dijaloga, pocece primena izabranih operacija (instaliranje, uklanjanje, ...).

Meni koji se dobija desnim klikom na paket i odnosno meni 'Package' sadrze opciju 'Properties'. Ovim se otvara prozor u kome mozete pregledati osnovne podatke vezane za paket: velicinu, zavisnosti, fajlove koji su na sistem instalirani iz ovog paketa i slicno. U meniju 'Settings' postoji stavka 'Preferences' kojom se mogu konfigurisati pojedini parametri ovog programa. U istom meniju postoji jos nekoliko stavki koje sluze za konfigurisanje ovog programa. Obraticemo paznji na stavku Settings->Repositories. U njoj se mogu dodavati i iskljucivati riznice, slicno kao sto se mogu dodavati i izbacivati editovanjem fajla /etc/apt/sources.list.

Ukoliko promenite konfiguraciju repoa u ovom prozoru, ne zaboravite da izaberete opciju 'Edit->Reload Package Information' ili da kliknete dugme 'Reload' iz linije sa alatima. Ovo ce odraditi posao ekvivalentan komandi `apt-get update`. Ukoliko dodajete CD/DVD, mozete to uraditi na prostiji nacin, izborom 'Edit->Add CD-ROM'.

Vrlo koriscena stavka je 'Edit->Search'. Kao sto predpostavljate, ona omogucava pretragu svih paketa na osnovu unetih pojmova.

Kako je kod nas vrlo zastupljen spori dial-up  internet, pokazacu vam trik: Kako skinuti pakete na jednom kompu a instalirati ih na drugom.
Ovo se moze vrlo lako odraditi uz pomoc Synaptic-a. Prvo na racunaru na kom zelite da instalirate pakete dodajte opise repozitorijuma i odradite `apt-get update`. Ovo ce zahtevati minimalni transfer podataka sa interneta. Zatim, otvorite Synaptic i odaberite pakete koje zelite da instalirate. Nakom selekcije paketa, izaberite opciju 'File->Save Markings as...' i sacuvajte selekciju u nekom fajlu. Nakon toga, odaberite opciju 'File->Generate package download script...' i odaberite fajl u kome cete sacuvati skriptu za download. Ovo je obicna bash skripta koja skida sve potrebne pakete sa interneta i smesta ih u direktorijum iz kog je pozvana. Zatim prekopirajte tu skriptu na neki prenosni medijum (CD, USB flesh memorija, ...) i odnestite na masinu koja ima brz internet. Sve sto treba da postoji na toj masini je program wget i bash (ili ma koji drugi shell). Napravite tu jedan prazan direktorijum, kopirajte ovu skriptu u njega i pokrenite je iz shella. Nakon sto se download zavrsi, kopirajte sve pakete koje je skripta "dovukla" u novokreirani direktorijum na Vas prenosni medij, pa ih zatim prebacite na masinu koja nema brz internet (onu sa pocetka price) i kopirajte u direktorijum /var/cache/apt/archives. Nakon toga, pokrenite Synaptic, odaberite opciju 'File->Read Markings' i odaberite fajl u koji ste sacuvali selekciju paketa. Zatim odaberite stavku 'Edit->Apply Marked Changes', i paketi ce biti instalirani bez velikog downloada.

Synaptic ima jos dosta mogucnosti, ali cemo njih zaobici ovom prilikom.

6.6. Tips & tricks

(1) Primetite da i dpkg i rpm alati imaju opciju za instaliranje paketa bez provere zavisnosti. Ovo je generalno vrlo losa ideja. Medjutim, ponekad je vrlo korisna. Evo kako na brzaka mozete instalirati .deb paket koji se nalazi van repoa, bez bojazni da cete pogubiti zavisnosti:
Upotrebite --force-depends (ili --force-all) kao argument programa dpkg, i instalirajte paket na sistem:
dpkg --force-depends --install ime_fajla.deb
A zatim "pokrpite" zavisnosti sa
apt-get -f install
Naravno, podrazumevamo da se u Vasim repoima nalaze sve potrebne zavisnosti.

(2) apt-get i ostali konzolni alati (kao i synaptic) mogu da koriste proxy servere za dovlacenje paketa sa interneta. Postoji precizniji nacin konfiguracije proxy servera za apt-get, ali cemo mi odve izneti laksi. Pod predpostavkom da ste ograniceni na pristup mrezi preko http proxy servera, sve sto treba da uradite je da pre pozivanja apt-get komande postavite promenljivu okruzenja http_proxy na odgovarajucu vrednost. Ako koristite bash, postarajte se da je pre poziva komande `apt-get` pozvana komanda
export http_proxy=http://ime_ili_ip_servera:port
Naravno, parametre zamenite stvarnim parametrima koji odgovaraju Vasoj mrezi. Proxy u Synapticu mozete podesiti u 'Settings->Preferences'.

7. Jos nacina za instaliranje softvera

Softver mozete da dobijete i kao "instaler": Izvrsni program koji pokrenete i on za Vas obavi sve sto je potrbno za instaliranje programa.
Ovakvi programi su raznoliki. Mogu imati graficki interfejs a mogu raditi u terminalu. Obicno se na ovaj nacin instaliraju prekompajlirani binarni paketi, ali ima slucajeva da graficki instaler instalira program iz izvornog koda pri cemu ga kompajlira u pozadini. Ovako, recimo, mozete na vrlo prost nacin instalirati KDE ili XFCE iz izvornih kodova. Neki instaleri kombinuju instalaciju iz izvornog i izvrsnog koda (npr. instaler za drajvera za nVidia graficka kartice).

Ne mogu reci nista konkretno o ovoj vrsti instalacije, jer razliciti instaleri rade razlicito. Obicno su ovi programi u obliku carobnjaka (wizzard) ili narodski "na next-next". Prilikom instalacije obicno nude korisniku izbor nekoliko parametara, npr. lokaciju na kojoj zeli da instalira program. Uglavnom su vrlo prosti i bez problema cete se snaci u njima.

Takodje, mozete dobiti arhivu u kojoj je spakovan program bez ikakvog instalera. Ovakvi programi se mogu pokrenuti direktno iz raspakovane arhive. Ukoliko zelite da omogucite drugim korisnicima Vaseg sistema da ih koriste, sve sto treba da uradite je da prekopirate sadrzaj odpakovane arhive na neko logicno mesto (/usr/local, /opt, ...), sredite privilegije i vlasnistvo nad tim fajlovima i napravite jedan simbolicki link u nekom od direktorijuma koji su obicno ukljuceni u PATH promenljivu okruzenja (recimo u /usr/local/bin) koji pokazuje na izvrsni fajl ovog programa.

__________________

Programmer (noun): an organism that transforms coffe into code.

foxbunny
Slika korisnika foxbunny
Offline
ModeratorUser
Član od: 30/10/2006

@RiSK: Tooo, care! Afro

Arch Linux i Pacman

(ovaj tekst je inspirisan wiki stranicom na Arch Wikiju)

Svi koji koriste Arch Linux (ovde su to retke zverke), a posebno oni koji su na njega prešli sa Slackwarea, verovatno su naučili da cene pacman, alat za instalaciju softvera na ovoj distribuciji. Kako je Arch Linux distribucija za ljude sa većim iskustvom u svetu računara, ovde se nećemo mnogo zadržavati na detaljima koji mogu interesovati samo apsolutne početnike. Objašnjavati razliku između pacmana i ostalih programa za rad sa paketima karakterističnih za druge distribucije je takođe van opsega ovog teksta (ali ako vas zanima, pročitajte i ostale tekstove u ovoj temi pa ćete verovatno uspeti da pronađete razlike i sličnosti).

Pacman je tekstualni alat za rad sa paketima veoma sličan apt-getu objašnjenom u prethodnim tekstovima autora RiSKa. Ovaj program omogućava instalaciju binarnih paketa iz repozitorijuma kako na Internetu, tako i na lokalnoj mreži. Pacman je dakle, jedan od dva načina za instalaciju softvera na Arch Linuxu, gde je drugi način upotreba ABSa (Anti-Break System Arch Build System).

Konfiguracija Pacmana

Pre nego što počnete sa skidanjem i instaliranjem paketa, bilo bi pametno pregledati konfiguracioni fajl. To nije neophodno (zapravo, ja to retko radim), ali ponekad dobro dođe. Što se pre upoznate sa fajlom /etc/pacman.conf, to bolje po vas. Dakle, otvorite konzolu (ili mozda niste ni usli u X?) i otvorite taj fajl u svom omiljenom editoru:

vi /etc/pacman.conf

Naravno, da biste otvarali ovaj fajl, morate imati administratorske privilegije (to su one supermoći koje vam omogućavaju da letite veoma visoko i odbijate metke).


[current]
Include=/etc/pacman.d/current
[extra]
Include=/etc/pacman.d/extra
[community]
Include=/etc/pacman.d/community
[unstable]
Include=/etc/pacman.d/unstable
[kdemod]
Server=http://kdemod.ath.cx/repo/current/i686
[options]
HoldPkg=pacman glibc
IgnorePkg=
LogFile=/var/log/pacman.log
NoUpgrade=
XferCommand = /usr/bin/wget -c --passive-ftp -c %u

Konfiguracioni fajl je veoma jednostavan i osim konfiguracije samog Pacmana, sadrži i lokacije repozitorijuma koje Pacman koristi.

Pogledajte sada ovaj deo koda:

[current]
Include=/etc/pacman.d/current

Prvi red je naziv repozitorijuma (u primeru je to "Current"). Drugi red govori pacmanu da pregleda sadržaj fajla /etc/pacman.d/current. Taj fajl sadrži spisak servera koje sadrže pakete iz Current repozitorjuma.

Malo niže imamo ovo:

[kdemod]
Server=http://kdemod.ath.cx/repo/current/i686

To je opis repozitorjuma "Kdemod". Drugi red počinje sa Server= i daje lokaciju servera na kome se nalaze paketi iz repozitorijuma Kdemod.

Poslednji blok je "Options". To su opcije za sam način rada Pacmana. Najčešće ne morate da dirate ovaj deo, ali kod mene se nalazi jedan red koji nije inače prisutan:

XferCommand = /usr/bin/wget -c --passive-ftp -c %u

Ovaj red govori Pacmanu da umesto internog softvera za skidanje paketa koristi wget. To donekle ubrzava skidanje paketa, ali isto tako umanjuje preglednost. Ako imate dovoljno brz Internet, ne morate ubacivati ovaj red.

U ovom redu:

IgnorePkg=

trenutno nema upisanih paketa, ali on inače služi za pakete koje želite da zaštitite od operacija kao što su uklanjanje ili ažuriranje. Na primer, ako želite da jezgro (kernel) ostavite na miru kada radite ažuriranje celog sistema, onda samo upišite:

IgnorePkg=kernel26

Spisak svih opcija koje možete koristiti u pacman.conf fajlu dobćete sa:

man pacman.conf

Binarni repozitorijumi

Kao što sam već napomenuo, Pacman je softver za instalaciju binarnih repozitorijuma. Ovde ću dati kratak pregled zvaničnih binarnih repozitorijuma (i jednog nezvaničnog):

CURRENT: (current/os/i686 ili current/os/x86_64) sadrži osnovne pakete (one koji se distribuiraju na instalcionom CDu), i glavna odlika mu je da postoji jedan dobar (subjektivno, naravno) program za svaki posao.

EXTRA: (extra/os/i686 ili extra/os/x86_64) sadrži veliki broj korisnog softvera koji se ne nalaze u current repozitorijumu, uključujući i softver kao što su KDE ili GNOME okruženja.

UNSTABLE: (unstable/os/i686) sadrži eksperimentalne i/ili razvojne verzije softvera, posebno u slučajevima kada takav softver postane popularan i pored dostupnosti stabilne verzije (na primer GIMP 2.2 vs GIMP 2.3). Nema konflikata u imenima programa (na primer GIMP 2.2 = gimp, GIMP 2.3 = gimp-devel).

TESTING: sadrži pakete koji se testiraju. Ovo je repozitorijum koji nećete koristiti osim ako znate šta radite. Iz ovog repozitorijuma pakete instaliraju dobrovoljci koji žele da pomognu razvoj Arch Linuxa testiranjem softvera. Paketi iz ovog repozitorijuma najčešće NE rade kako treba.

COMMUNITY: (community/os/i686 ili community/os/x86_64) ovaj repozitorijum ne održava razvojni tim Arch Linuxa, već ekipa od dvadesetak dobrovoljaca zaduženih samo za ovaj repozitorijum. Ovaj repozitorijum sadrži veoma veliki broj popularnih paketa za koje razvojni tim Arch Linuxa nije imao dovoljno vremena.

KDEMOD: (http://kdemod.ath.cx/repo/current/i686) sadrži naroćito modifikovanu verziju KDEa, posebno prilagođenu za Arch Linux. Za korisnike KDE okruženja ovo je nezaobilazan dodatak pacman.conf fajlu.

Repozitorijume možete pretraživati uz pomoć komande:

pacman -Ss ključna_reč

Na primer:

pacman -Ss wmii
extra/wmii 3.5.1-3
    Next generation WMI (Window Manager Improved 2)

Ako želite da pretražujete repozitorjume isključivo prema nazivu paketa:

pacman -Sl grep ime_paketa

Argument "-Sl" govori pacmanu da prikaže kompletan spisak imena svih dostupnih paketa. Mi ovde samo grepujemo tu listu (vadimo redove koji sadrže "ime_paketa"). Na primer:

pacman -Sl | grep wmii
extra wmii 3.5.1-3

Rad sa paketima

Paket za Arch Linux je jednostavan tarball (fajl kompresovan alatima tar i gzip) sa ekstenzijom .pkg.tar.gz, i njegov sadržaj su:

  • * fajlovi softvera za koji je paket napravljen
  • PKGBUILD fajl koji opisuje paket (naziv, paketi od kojih zavisi, itd itd)
  • FILELIST fajl koji daje Pacmanu spisak svih fajlova u paketu kako bi mogao da rešava
  • INSTALL skripta koja se izvršava nakon instalacije paketa (da bi se instalacija upotpunila akcijama koje nisu jednostavno kopiranje fajlova)

Kada pozivamo Pacman, zadajemo argumente po sledećem šablonu:

pacman -Xx ime_paketa

Veliko X označava glavnu grupu akcija, a malo x označava dodatno preciziranje. Ukoliko ne zadamo drugi argument, pacman će da odradi podrazumevanu akciju.

Na primer:

pacman -S wmii
resolving dependencies... done.
looking for inter-conflicts... done.
Targets: libixp-0.2-1  dmenu-3.2-1  wmii-3.5.1-3
Total Package Size:  0.10 MB
Proceed with installation? [Y/n] y
:: Retrieving packages from extra...
--01:21:47--  ftp://ftp.archlinux.org/extra/os/i686/libixp-0.2-1.pkg.tar.gz
          => `libixp-0.2-1.pkg.tar.gz'
Resolving ftp.archlinux.org... 209.85.41.145, 209.85.41.144
.....
checking package integrity... done.
cleaning up... done.
(3/3) checking for file conflicts                  [#####################] 100%
(1/3) installing libixp                            [#####################] 100%
(2/3) installing dmenu                              [#####################] 100%
(3/3) installing wmii                              [#####################] 100%

Ovim smo instalirali paket wmii.

Ako vas zanimaju opcije koje odgovaraju malom x, za neki od argumenata velikog X, onda kucamo:

pacman -Xh

Na primer:

-Rh
usage:  pacman {-R --remove} [options]
options:
  -c, --cascade        remove packages and all packages that depend on them
  -d, --nodeps        skip dependency checks
  -k, --dbonly        only remove database entry, do not remove files
  -n, --nosave        remove configuration files as well
  -s, --recursive      remove dependencies also (that won't break packages)
      --config   set an alternate configuration file
      --noconfirm      do not ask for any confirmation
      --ask   pre-specify answers for questions (see manpage)
      --noprogressbar  do not show a progress bar when downloading files
      --noscriptlet    do not execute the install scriptlet if there is any
  -v, --verbose        be verbose
  -r, --root     set an alternate installation root
  -b, --dbpath   set an alternate database location
      --cachedir set an alternate package cache location

Da bih uklonio maločas instalirani wmii (koji mi ne treba), mogu da kucam:

pacman -R wmii

i to će ukloniti wmii. Međutim, wmii je sa sobom povukao i pakete libixp-0.2-1 i dmenu-3.2-1, koji mi takođe ne trebaju. Te pakete mogu ukloniti zajedno sa paketom wmii, tako što zadam naredbu Pacmanu da ukloni i pakete na koje se oslanja wmii (recursive):

pacman -Rs wmii
checking dependencies... done.
Targets: wmii  dmenu  libixp
Do you want to remove these packages? [Y/n] y
(1/3) removing wmii                                [#####################] 100%
(2/3) removing dmenu                                [#####################] 100%
(3/3) removing libixp                              [#####################] 100%

Pre nego što instalirate neki paket, dobro je da sinhronizujete lokalnu bazu paketa sa onom koja se nalazi u repozitorijumu na Interetu. To se postiže dodavanjem malog argumenta "y" na argument "S" (instalacija):

pacman -Sy ime_paketa

Ova komanda takođe ažurira paket ako ste kao ime_paketa naveli ime već instalirnog paketa. Ako želite da ažurirate sve pakete koje ste instalirali, onda kucajte:

pacman -Syu

To će sa Interneta (ili lokalne mreže, ako ste tako udesili) skinuti nove verzije svih instaliranih paketa.

Tokom ažuriranja ili instalacije paketa, Pacman će povremeno ispisivati važne napomene. Ako vam nešto od toga promakne (a to zaista ne bi valjalo) pogledajte /var/log/pacman.log.

Evo primera jedne takve napomene:


[2007-09-04 23:28] warning: /etc/php.ini installed as /etc/php.ini.pacnew
[2007-09-04 23:28] ==>
[2007-09-04 23:28] ==>  PHP has been built with some optional modules.
[2007-09-04 23:28] ==>  To enable these modules, uncomment the modules from php.ini
[2007-09-04 23:28] ==>
[2007-09-04 23:28] ==>  The optional modules included in php require extra packages
[2007-09-04 23:28] ==>  to be installed.
[2007-09-04 23:28] ==>
[2007-09-04 23:28] ==>  - mysql  : libmysqlclient
[2007-09-04 23:28] ==>  - pgsql  : postgresql-libs
[2007-09-04 23:28] ==>  - ldap  : libldap
[2007-09-04 23:28] ==>  - sqlite : sqlite3
[2007-09-04 23:28] ==>  - odbc  : unixodbc
[2007-09-04 23:28] ==>  - snmp  : net-snmp
[2007-09-04 23:28] ==>  - mcrypt : mcrypt
[2007-09-04 23:28]
[2007-09-04 23:28] ==>  FOR PHP-CGI usage:
[2007-09-04 23:28] ==> There are several cgi relevant settings in your /etc/php.ini. Make sure
[2007-09-04 23:28] ==> you understand them and adjust them according to your needs. At least you
[2007-09-04 23:28] ==> should activate the cgi.fix_pathinfo directive in php.ini by setting it
[2007-09-04 23:28] ==> to 1 and uncommenting it.
[2007-09-04 23:28] upgraded php (5.2.3-4 -> 5.2.4-1)

Spisak svih instaliranih paketa možemo dobiti sa:

pacman -Q

Takođe možemo pretraživati instalirane pakete prema ključnoj reči:

pacman -Qs ključna_reč

Na primer:

pacman -Qs vim
local/vim 7.1.94-1
    a highly configurable, improved version of the vi text editor

Rad sa ručno skinutim paketima

Ako nemate direktnu vezu sa Internetom (što u slučaju Arch Linuxa zaista nije dobro!), možete skinuti pakete sa ftp sajtova (kao što je ftp.archlinux.org) i instalirati ih ručno.

Da biste instalirali neki paket kucajte:

pacman -A ime_paketa

Da biste ažurirali instalirani paket uz pomoć ručno skinutog .pkg.tar.gz fajla, kucajte:

pacman -U ime_paketa

Ova dva argumenta ("A" i "U") se odnose ISKLJUČIVO na ručno skinute .pkg.tar.gz fajlove i ne mogu se koristiti za instalaciju paketa iz repozitorijuma.

Više informacija o Pacmanu možete dobiti uz pomoć komande:

man pacman[/]

rtanjvrh
Slika korisnika rtanjvrh
Offline
User
Član od: 28/06/2007

Страница ако се не ваам носи некакав назив: Први пут на Linux-u.
Аутору текста о инсталацијама .deb i .rpm пакета све честитке. То је прави однос скромног а човека са знањем. наступ без препотенција, са искреном жељом да се заједница прошири и стекне нове кориснике.
За ове што возе ферарије, па има страница за програмере.
А ако већ имају добру вољу да искажу и поделе своја рођењем стечена знања, онда би бар коректно било да не помињу двогодишњаке.
Иначе и текст овај други је изузетан и хвала, али баца сенку ово мало претенциозно коментарисање.