Eli kun sitä aina joskus tekee mieli laittaa jotain semmoisiakin ohjelmia koneelle, mitä ei pakettivarastoista löydy, niin ajattelin tämmöistä vähän kysellä. Eli ainakin seuraavat tavat laittaa ohjelmia ovat ihan yleisiä, luulisin:
1) Asennus kotihakemiston alle
Tämä taitaa olla näistä vaihtoehdoista turvallisin. Tässähän ei edes root-oikeuksia välttämättä tarvitse, jos vaan asennettavan ohjelman riippuvuudet on ennestään täytetty, joten systeemiä harvemmin onnistuu pahemmin sekoittamaan. Oman kotihakemistonsa toki voi sotkea, mutta minusta tämä ei ole erityisen vaarallista, jos tietää, mitä tekee. Monesti olen ensin asentanut itse kääntämäni ohjelmat kotihakemistoon ja sitten myöhemmin /usr/localin alle, jos ohjelmalla tuntuisi olevan laajempaakin tarvetta.
Haittapuolena on ehkä ylimääräisten hakemistojen syntyminen kotihakemiston alle, minkä tosin itse olen melkein ratkaissut tekemällä ensinnä hakemiston ~/Ohjelmat/ , jonka alle olen sitten antanut ohjelmien laittaa tiedostojaan normaalin Unix -tyyppisen hierarkian mukaan. Lisäksi olen sitten joskus linkittänyt ~/Ohjelmat/bin -hakemiston tiedostoja ~/bin -hakemistoon, jolloin niitä pääsee kätevämmin käyttämään komentoriviltä. Tällöinhän selviää kahdella ylimääräisellä hakemistolla kotihakemiston juuressa. Useinhan ~/bin sisältyy PATH -ympäristömuuttujaan, jolloin siellä olevia ohjelmia voikin käynnistellä aivan samoin kuin muitakin. Ubuntussa tosin oletuksena näin ei taida olla?
2) Asennus /usr/local -hakemistoon
Tämä sitten onkin jo vähän riskialttiimpaa, koska root -oikeudet ovat tarpeen systeemihakemistoja puukotettaessa. Suurimmat vaarat ovat varmaankin omissa töppäilyissä, mutta toki ohjelmien Makefile saattaa jotain ikävääkin, joko vahingossa tai tahallaan, sisältää. Sehän periaatteessa pitäisi kai itse aina etukäteen katsoa, mitä make install -komento sitten tekeekään, mutta harvemmin sitä kuitenkaan tulee katsottua.
Tässä aluksi asensin ohjelmat suoraan /usr/localin juureen, jolloin sen tiedostot päätyivät tietenkin siellä olevan hierarkian alle, mikä vaikutti minusta ihan kohtuuhyvältä.
Myöhemmin sitten alkoi ärsyttämään se, että jos halusin joko poistaa tai päivittää jonkun ohjelman sieltä /usr/localin syövereistä, niin sen vanhan version hävittäminen kokonaan oli usein ongelmallista. Ei sinne systeemihakemistoon kuitenkaan haluttanut jättää mitään ylimääräistäkään.
Tähän sitten olen nyt käyttänyt semmoista taktiikkaa, että olen jokaiselle ohjelmalle antanut sinne /usr/localin alle oman hakemistonsa, jonka alle sitten saavat sen oman hierarkiansa laittaa. Sitten olen linkkejä näiden bin -kansioissa oleviin tiedostoihin laittanut /usr/local/bin -hakemistoon, jolloin ne ovat suoraan PATH -muuttujan listassa mukana ja suoraan käytettävissä. Myös monen eri version asentaminen samasta ohjelmasta helpottuu mukavasti.
Eli esim. Warzone 2100 minulla on asennettuna hakemistoon /usr/local/warzone2100-2.0.5-rc1. /usr/local/bin/warzone2100 on sitten linkki /usr/local/warzone2100-2.0.5-rc1/bin/warzone2100 -tiedostoon, joten pelin saa helposti aina käyntiin warzone2100 -komennolla.
Tässäkin lähestymistavassa varmaan on omat ongelmansa? Kirjastoja ei varmaan näin kannatakaan asennella, kun niiden on varmaan kätevämpi olla vähän vähemmän monessa paikassa. Tuolleen muutamalle ohjelmalle tuo ratkaisu on minusta kuitenkin ihan ok.
Eli tämmöistä... tuli aika pitkä pätkä tekstiä. Mitäs keinoja muut ovat käyttäneet? Checkinstall tietenkin on myös vaihtoehto, mutta itse mieluummin hoidan homman näin kuin tekemällä puolivillaisen (esim. riippuvuuksista huolehtiminen) paketin.
Jos jollekin on epäselvää se, miten asennushakemisto valitaan, niin selitän sen vielä tässä.
Eli kun normaalisti asennus menee suunnilleen mallilla:
./configure
make
sudo make install
niin nyt pitäisi se ./configure korvata komennolla ./configure --prefix=/polku/sinne/minne/asennetaan
Tämä toimii useimpien ohjelmien kanssa, yleensä kannattaan ensin ajaa
./configure --help
jolloin näkee, mitä kaikkea sillä scriptillä voi säätää.