In English

Linkstall on pieni ohjelma, jonka tarkoitus on yksinkertaistaa elämää Unix-tyyppisissä käyttöjärjestelmissä siinä tapauksessa että ylläpitäjä haluaa asentaa ohjelmia omiin erillisiin alihakemistoihinsa. Erillisten hakemistojen käyttäminen on mukavaa erityisesti jos käännetään, asennetaan ja poistetaan ohjelmistoja usein.
Yleensä erillisten alihakemistojen hakupolut binääreihin, dynaamisiin kirjastoihin, man-sivuihin jne. hoidetaan ympäristömuuttujilla: PATH, LD_LIBRARY_PATH, PKG_CONFIG_PATH ja MANPATH, tai man:in ja dynaamisen linkkerin konfiguraatiotiedostoilla. Kun enemmän ja enemmän valinnaisia paketteja tulee asennetuksi, nämä polkumuuttujat usein käyvät pitkiksi ja monimutkaisiksi, hidastaen samalla hieman käyttöjärjestelmää kun sen pitää käydä läpi pitkiä polkumuuttujia. Lisäksi LD_LIBRARY_PATH-muuttujaan tukeutuminen pysyvästi ei ole suositeltavaa.
Linkstall pyrkii olemaan ratkaisu tähän tilanteeseen.
Se asentaa kokonaisia hakemistopuita käyttäen linkkejä (symbolisia tai kiinteitä), ja osaa siivota omat jälkensä jälkikäteen, kun ylläpitäjä haluaa poistaa ohjelman.

Käyttöesimerkki:

Ylläpitäjä haluaa tutkia ohjelman foo-1.23 uutta versiota, mutta ei halua vielä asentaa sitä pysyvästi järjestelmään, joten hän asentaa sen hakemistoon /opt/foo-1.23, tutkiakseen mitä tiedostoja ohjelma asentaa jne. foo-1.23 on kuitenkin kohtuullisen monimutkainen ohjelmisto, ja sisältää paljon man- ja infosivuja ja dynaamisia kirjastoja. Näiden kaikkien asentaminen hakupolkuihin on työlästä ja tylsää, erityisesti koska hän haluaa vain kokeilla ohjelmaa tilapäisesti.
Hän päättää käyttää linkstallia, mutta ei ole aiemmin tutustunut siihen, ja hieman epäileväinen sen suhteen, että mitä se tekee. Aluksi hän ajaa
linkstall -d -v /usr/local /opt/foo-1.23
ja saa listauksen, mitä olisi tapahtunut, kuiva-ajotila päällä, joten mitään ei vielä oikeasti tapahtunut.
Kaikki näytti hyvältä, joten seuraavaksi hän ajaa asennuksen oikeasti komennolla
linkstall -v -m /usr/local /opt/foo-1.23
Tällä kertaa hän käytti valitsinta -m koska kuiva-ajo valitti että hänellä ei ole olemassa hakemistoa /usr/share/aclocal.
Ylläpitäjä leikkii uudella foo-1.23:llaan ja päättää ettei haluakaan sitä, joten hän ajaa
linkstall -u -v /usr/local /opt/foo-1.23
rm -Rf /opt/foo-1.23
eikä foo-1.23:sta ole enää jälkeäkään hänen systeemissään, paitsi tietysti lähdekoodit tms. asennuspaketti.
Ilman linkstallia hänen olisi pitänyt editoida ympäristömuuttujiaan tai tehdä linkkejä osoittamaan /opt/foo-1.23:een käsin, ja poistaa kaikki jälkikäteen.

Linkstall siis asentaa kohdehakemistoon tai sen alihakemistoihin linkin osoittamaan jokaiseen lähdehakemiston tiedostoon tai hakemistoon, jota ei ole mainittu sen asetustiedostossa yleiseksi hakemistoksi joita ei pidä linkittää. Asennuksen poistotila tutkii kohdehakemiston, ja poistaa sieltä kaikki sellaiset linkit, jotka viittaavat annettuun lähdehakemistoon tai sen sisältöön. Tällä lähestymistavalla ohjelma voidaan asentaa omaan erilliseen alihakemistoonsa, ja käyttää sitä silti tarvitsematta koskea polkumuuttujiin tai linkkerin asetuksiin. Asennus ja sen poisto onnistuu yhdellä komennolla.

Lähestymistapaa täytyy pitää kokeellisena, ja olenkin kiinnostunut kommenteista ja kritiikistä, mitä ongelmia tällä voisi olla. Käytännössä systeemi on toiminut hyvin, mutta ehkä olen vain ollut onnekas, ja sattumalta vättänyt mahdolliset piilevät ongelmat. Kommentteja otetaan vastaan sähköpostiosoitteessa linkstall(at)typotorPOISTATÄMÄ.fi
Ole hyvä ja ole rakentava. Jos onnistut sotkemaan tiedostojärjestelmäsi tällä ohjelmalla, voin vain sanoa, että sinua on varoitettu etukäteen!

Optionaalinen kiinteiden linkkien (hard link) käyttäminen perustuu siihen, että samaan tiedostoon osoittavat linkit osoittavat samaan inode-numeroon, ja että tämä inode-numero ei voi esiintyä muissa tiedostoissa. Kiinteät linkit olisivat astetta resurssitehokkaampi metodi kuin symboliset, mutta yhteensopivuusongelmat ovat mahdollisia. En ole perehtynyt tiedostojärjestelmiin niin syvällisesti, että olisin varma että periaate on pätevä kaikissa tapauksissa. Käytännön kokeessa ext2-tiedostojärjestelmällä idea toimi, mutta kommentit ovat tervetulleita.

Suosittelen lukemaan mukaan liitetyn dokumentaation ja erityisesti sen sisältämät varoitukset ennen kuin asennat ja käytät linkstallia.
Varoitus: Tämän ohjelman varomaton ( tai jopa varovainen! ) käyttö voi sekoittaa käyttöjärjestelmäsi tiedostorakenteen vakavasti.

Lataa ohjelma

Jussi Nikula, Typotor Oy, 9.5.2008