[VODIČ] Kako da instaliram program na Linuxu
- Prijavi se ili registruj da bi postavio komentar
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
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
@RiSK: Tooo, care! 
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[/]
Страница ако се не ваам носи некакав назив: Први пут на Linux-u.
Аутору текста о инсталацијама .deb i .rpm пакета све честитке. То је прави однос скромног а човека са знањем. наступ без препотенција, са искреном жељом да се заједница прошири и стекне нове кориснике.
За ове што возе ферарије, па има страница за програмере.
А ако већ имају добру вољу да искажу и поделе своја рођењем стечена знања, онда би бар коректно било да не помињу двогодишњаке.
Иначе и текст овај други је изузетан и хвала, али баца сенку ово мало претенциозно коментарисање.

) do njihovog izvornog koda i zatim ih prevesti za svoje potrebe. Izvorni kod komercijalnih aplikacija je nedostupan.
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 /usrZa 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.bin games include lib local sbin share src X11R6
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 xmmsNadam 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:/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
[/]rile: ls /usr/localMozemo 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.bin etc games include lib libexec man sbin share src
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/Ostaje nam jos da razjasnimo gde instalirane aplikacije cuvaju svoja podesavanja.desktop
[/]rile: ls /opt/google/desktop/
bin lib plugin README resource VERSION xdg
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/.xmmsNadam 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.config menurc Plugins Skins xmms.m3u
[/]rile: ls /etc/samba
gdbcommands smb.conf smb.conf~
Programmer (noun): an organism that transforms coffe into code.