LAKI PINGVINI<>
082018<><>

Instaliranje softvera u Linuxu (1)

Od sorsa do paketa

Kada se iskusniji korisnici Windowsa prvi put ozbiljno susretnu sa Linuxom, neke stvari na njih ostavljaju snažan utisak, koji često zna biti negativne prirode. Ljudima naviklim na udobnosti grafičkog interfejsa pre svega teško pada potreba za čestim korišćenjem tekstualnih komandi. Naravno, Linux odavno ima mogućnost rada sa grafičkim interfejsom, ali je njegova prava snaga duboko ukorenjena u komandnoj liniji. Neko ko pretenduje da se nazove iole naprednijim korisnikom Linuxa, jednostavno mora da vlada sa barem nekoliko desetina CLI (Command Line Interface) komandi.

Na ovo se naslanjaju problemi u vezi sa instaliranjem softvera. Umesto udobnog rada sa instalacionim čarobnjacima u Windowsu, kod Linuxa se instaliranje često obavlja kucanjem naredbi, a ponekad i kompajliranjem programskog koda. Upravo je ovo bio jedan od glavnih razloga zašto je autor teksta u svoje vreme imao prilično razvijen animozitet prema Linuxu. Istina je da savremene distribucije imaju grafičke klijentske programe za instaliranje softvera, ali i pored toga kursor miša često moramo zameniti kucanjem po tastaturi.

Ipak, nakon kraćeg vremena, korisnici se navikavaju na osnovne CLI naredbe i one im „ulaze pod kožu”, tako da njihovo korišćenje predstavlja rutinu koja na neki način postaje i zarazna, pa se bez njih u radu oseća izvesna praznina.

U ovom tekstu ćemo pokušati da objasnimo neke stvari u vezi sa instaliranjem programa u Linuxu i one su, pre svega, namenjene početnicima na toj platformi, ali će tu da bude i zanimljivosti za iskusne korisnike. Akcenat ćemo staviti na rad sa Debian/Ubuntu baziranim distribucijama, pošto su one danas najrasprostranjenije, ali ćemo se ukratko osvrnuti i na rad sa ostalim važnijim distribucijama.

Alhemija sorsa

Iako odavno nemamo naročitu potrebu za kompajliranjem kao načinom za instaliranje softvera, svakako je dobro poznavati kako se to radi. Ovo je posebno korisno kada želimo da instaliramo najsvežiju verziju nekog programa koja se još ne može naći u repozitorijumima. Dodatna pogodnost ovakvog pristupa je veliki stepen portabilnosti, malo veća brzina izvršavanja, mogućnost optimizacije, konfigurabilnost i mogućnost da se analizira funkcionisanje koda.

Da bi se program kompajlirao, potrebno je da na računaru budu instalirani alati koji taj posao čine mogućim. Najčešće sve što nam je potrebno za kompajliranje dolazi sa distribucijom, a ukoliko to nije slučaj, neophodne programe instaliramo sa:

sudo apt-get install build-essential

Posle ovoga sistem ima sve potrebno (C/C++ kompajler, make, asembler, linker, osnovne biblioteke i alat za formiranje paketa) za početak procesa pretvaranja sorsa u izvršni program.

Izvorni kod programa se obično distribuira unutar arhiva sa ekstenzijama .tar.gz, .tar.bz2 i tar.xz. Dakle, prvi korak je da raspakujemo njihov sadržaj:

tar -xzvf sors_fajl.tar.gz

Argument x znači da želimo da raspakujemo arhivu, z sugeriše da sadržaj bude procesiran kroz program gzip, v ispisuje ekstraktovane fajlove, dok f prethodi nazivu fajla.

Slično je i u slučaju tar.bz2 arhiva:

tar -xjvf sors_fajl.tar.bz2

jedino se razlikuje argument j koji arhivu procesira kroz bzip2.

Za tar.xz arhive pišemo:

tar -xvf sors_fajl.tar.xz

Na kraju krajeva, moguće je raspakovati arhivu i pomoću drugih arhivatora, uključujući i one za rad iz grafičkog režima.

Nakon ovoga prelazimo u direktorijum sa raspakovanim fajlovima i kucamo:

./configure && make && make install

„./„ nam govori da je u pitanju direktorijum u kojem se trenutno nalazimo i obavezan je deo sintakse u ovakvim situacijama. Zatim sledi izvršenje configure skripta iz tekućeg direktorijuma, koji proverava da li sistem trenutno raspolaže svim sredstvima potrebnim za kompajliranje. U pojedinim scenarijima ovaj fajl može da bude odsutan. Sledeće dve naredbe – make i make install -završavaju posao oko instaliranja.

Nažalost, retko se dešava da se instaliranje završi „iz prve”, pošto na sistemu obično nedostaju određene biblioteke potrebne za kompilaciju. Pokušaćemo da opišemo situaciju na konkretnom primeru instaliranja poznatog torrent menadžera Transmission. Nakon prvog startovanja ./configure, dobijamo sledeću poruku:

No package ’libcurl’ found

Pomenuti libcurl predstavlja biblioteku za podršku raznoraznim mrežnim protokolima. Postoji nekoliko načina da se instalira, a mi smo koristili OpenSSL varijantu biblioteke:

sudo apt-get install libcurl4-openssl-dev

Nakon ovoga ponovo pokrećemo ./config i dobijamo grešku:

No package ’libevent’ found

Libevent je biblioteka za obradu asinhronih sistemskih događaja i taj paket instaliramo preko:

sudo apt-get install libevent-dev

Paketi koji imaju „-dev” u nazivu, uglavnom sadrže zaglavlja C fajlova i statičke biblioteke. Nakon novog pozivanja ./configure, pojavljuje se dosta specifična greška iz koje ne možemo zaključiti koja biblioteka je u pitanju:

error: Unable to find any supported crypto library.

U takvim situacijama nam preostaje da se oslonimo na pretraživanje interneta i tamo smo saznali da se ono što nedostaje ispravlja instaliranjem biblioteke libssh (omogućuje upotrebu SSH protokola):

sudo apt-get install libssh-dev

Nakon što se uverimo da više nema grešaka, možemo krenuti sa izvršavanjem make i make install naredbi (ili sve zajedno, kao u primeru sa početka), što će nakon par minuta rezultirati izvršnom verzijom programa. Ponekad će biti potrebno da make install izvršavamo uz pomoć naredbe sudo.

Da bi sebi olakšali život, prilikom instaliranja najnovije verzije nekog programa putem sorsa, pod uslovom da se njegove starije verzije nalaze u okviru dostupnog repozitorijuma, možemo se poslužiti malim trikom kucajući:

sudo apt-get build-dep neki_program

Sistem od nas traži da prihvatimo instalaciju zavisnih fajlova koji će stvoriti preduslove da se željeni program kompajlira.

Da se razumemo, instaliranje programa preko sors koda ne spada u najjednostavnije poslove u kosmosu, ali nije ni naročito teško. Ceo posao se svodi na instaliranje nedostajućih biblioteka nakon izvršenja ./config skripta. Svaki računar ima instalirane različite biblioteke, pa tako nije moguće znati tačnu recepturu i broj fajlova koje treba da instaliramo da bi uopšte došli u poziciju da kompajliramo izvorni kod. Generalno, što više kompajliramo sors, to će više biblioteka biti prisutno na računaru. Nakon stečenog iskustva sa nekoliko uspešno instaliranih naslova, sve postaje mnogo jednostavnije i pretvara se u rutinu. Odmah da upozorimo, kompajliranje zahteva dosta vremena i dosta prostora na disku. Proces može generisati po više gigabajta pratećih fajlova.

Razni programi imaju razne zahteve, pa se najtoplije savetuje da pogledamo u neki od pratećih tekstualnih fajlova koji dolaze kao deo sors arhive i koji se najčešće zovu INSTALL ili README, pošto ćemo u njima pronaći instrukcije potrebne za uspešnu instalaciju.

Binarni paketi

Pomenuti Transmission je relativno mali program čija arhiva zauzima oko tri megabajta, pa stoga nekoliko minuta za njegovo instaliranje ne predstavlja problem. Problemi nastupaju kada sors kod počinje da se meri desetinama i stotinama megabajta. Takvi programi zahtevaju dosta više vremena, pa proces zna da potraje i po nekoliko časova.

Zbog toga su još davno u upotrebu uvedeni takozvani binarni paketi (binary packages) koji u sebi sadrže unapred kompajlirani kôd, zajedno sa još nekim propratnim fajlovima. Osim ubrzavanja procesa, oni olakšavaju nadogradnju novih verzija i uklanjanje programa koje ne nameravamo koristiti.

Na pratećoj ilustraciji je prikazan sadržaj .deb instalacionog paketa za program Skype. Binarni paketi predstavljaju obične zip arhive sa sadržajem za instalaciju. Unutar osnovne arhive se nalaze dve nove tar arhive od kojih jedna sadrži kontrolne informacije, a u drugoj (data.tar.xz) su smešteni podaci koji će biti instalirani. Direktorijum /usr/share/skypeforlinux/ skriva glavne fajlove, uključujući izvršni fajl i biblioteke libffmpeg.so (podrška za video kodeke) i libnode.so (Node.JS za C++). Logično je da će fajlovi nakon instalacije biti smešteni upravo na pomenutoj lokaciji u lokalnom fajl sistemu. Pomenuti .deb format je namenjen radu sa distribucijom Debian i brojnim drugim distribucijama koje su je koristile kao osnovu (Ubuntu, Mint, Kali, Raspbian...)

Da bi se paket instalirao na računar, potreban je program koji će njegov sadržaj rasporediti na prava mesta. Kada se radi o Debianu, osnovni program za tu namenu nosi naziv dpkg (Debian package). On je namenjen kreiranju, održavanju i instaliranju paketa i predstavlja temelj infrastrukture na koju se naslanjaju neki napredniji sistemi za upravljanje paketima. Istovremeno služi i kao frontend za srodne programe kao što su dpkg-deb i dpkg-query.

Ukoliko imamo neki paket sa .deb ekstenzijom (podrazumeva se da odgovara našem hardveru), instaliramo ga sa:

dpkg -i paket.deb

Deinstalacija se vrši sa:

dpkg -r paket.deb

Jasno je da ovde parametar -i predstavlja install, a -r je remove. Možemo ih pisati kao --install i --remove. Tabela sadrži spisak nekih od najkorisnijih oblika upotrebe naredbe dpkg. Ove komande su od koristi kada instaliramo program koji se nalazi na lokalnom disku. Inače se ne koriste naročito često.

Program dpkg ne može da rešava pitanja zavisnosti paketa, pa je u tu svrhu nakon njega potrebno izvršiti:

sudo apt-get -f install

Još da spomenemo i program pod nazivom Gdebi, koji predstavlja grafički front-end za naredbu dpkg i omogućava nam da instaliramo .deb pakete bez potrebe za korišćenjem komandne linije. Uz to vrši i proveru zavisnosti paketa, implicitno izvršavajući prethodno navedenu sekvencu.

Iako je .deb format paketa zbog Ubuntua i drugih distribucija baziranih na Debianu danas najpopularniji, on nije i jedini predstavnik svoje vrste. Solidan deo distribucija za instaliranje koristi pakete sa ekstenzijom .rpm. RPM Package Manager je potekao sa platforme Red Hat Linux i danas je u upotrebi od strane distribucija kao što su OpenSUSE, CentOS, Fedora, PCLinuxOS, Oracle Linux i mnoštva drugih.

Na sreću, lako možemo izvršiti konverziju iz jedne vrste paketa u drugu, a to se postiže korišćenjem CLI programa Alien. Ukoliko želimo konvertovati neki fajl iz .rpm formata u .deb, kucamo:

sudo alien paket.rpm

Alien izvorno prevodi rpm pakete u deb oblik, pa mu nije potrebno zadavati dodatne parametre. U slučaju da želimo postići suprotno, tj. prevesti deb paket u rpm, sintaksa je sledeća:

sudo alien -rcv paket.deb

Još jedan menadžer paketa vredan spominjanja je onaj koji se koristi u okviru distribucija Arch Linux i koji nosi naziv Pacman. Osim mogućnosti karakterističnih za dpkg i rpm, možete i da preuzimete fajlove putem interneta. Datoteke sa paketima u ovom slučaju dolaze sa ekstenzijama pkg.tar.xz i pkg.tar.gz.

Da bismo konvertovali .deb pakete u format pogodan za upotrebu sa Pacmanom, koristimo sledeću naredbu:

debtap paket.deb

U ovom broju smo obradili neke od osnovnih stvari vezanih za instaliranje programa za Linux sisteme. Naravno, tema je preopširna da bi bila obrađena do najsitnijih detalja. Svi pomenuti menadžeri paketa imaju veliki broj parametara i njihovih kombinacija, pa smo se trudili da prikažemo samo one najvažnije. U sledećem broju ćemo se baviti radom sa repozitorijumima, što je jedna od tema bez koje nema ozbiljnog poznavanja Linuxa.

Igor S. RUŽIĆ

 
Instaliranje softvera u Linuxu (1)
Šta mislite o ovom tekstu?
Turtl 0.6.4
BleachBit 2.0
Arduino: OLED i e-paper
Raspberry Pi 3 B+
DIY: Thermocouple
Home / Novi brojArhiva • Opšte temeInternetTest driveTest runPD kutakCeDetekaWWW vodič • Svet igara
Svet kompjutera Copyright © 1984-2018. Politika a.d. • RedakcijaKontaktSaradnjaOglasiPretplata • Help • English
SKWeb 3.22
Opšte teme
Internet
Test Drive
Test Run
PD kutak
CeDeteka
WWW vodič
Svet igara



Naslovna stranaPrethodni brojeviOpšte informacijeKontaktOglašavanjePomoćInfo in English

Svet kompjutera