21. Tulostimet

Tulostus Unixissa tapahtuu perinteisesti joko tekstipohjaisena rivikirjoittimella tai muotoiltuna Adoben kehittämällä PostScript-sivunkuvauskielellä. Käytännössä kaikki ohjelmat, joista voi tulostaa tuottavat PostScriptiä joko tiedostoon tai suoraan tulostusjonoon. PostScript on itse asiassa täysiverinen ohjelmointikieli ja mahdollistaa tulostimen parhaan tarkkuuden käytön riippumatta siitä, millaisella laitteella tulostus on tehty. PostScript-tiedostot tunnistaa tarkentimesta ps.

Tärkeitä käsitteitä Unix-tulostuksessa ovat jonot ja filtterit. Jonot ovat joko paikallisella tai etäkoneella sijaitsevia puskureita, joihin tulostettavat työt menevät kunnes tulostusdemoni (lpd) syöttää ne tulostimelle. Jonojen hakemistot sijaitsevat paikassa /var/spool/lpd. Filtterit ovat ohjelmia, joilla tulostusta voidaan muokata ennen kuin se syötetään tulostimelle. Tavallisin filtteri on ghostscript, joka muuttaa PostScript-tyyppisen tulosteen tulostimen ymmärtämään muotoon. Red Hatissa on käytössä älykäs filtteri, joka osaa muuttaa lennossa jotkin erityyppiset tiedostot kuten teksti ja jpeg PostScriptiksi.

Tulostimen asennus

Helpointa, joskaan ei joustavinta, on asentaa tulostimet Red Hatin graafisella asetustyökalulla. Control-panelissa on tätä varten kohta 'Printer Configuration'. Uutta jonoa lisättäessä valitaan Add, jonka jälkeen asetustyökalu kysyy minkä tyyppinen tulostin halutaan asentaa. Tyyppejä ovat:

Valittaessa paikallinen tulostin, asetustyökalu ilmoittaa mitä rinnakkaisportteja koneesta löytyy. Portit ovat nimillä /dev/lp0, lp1 ja lp2. Seuraavaksi aukeavassa valintaikkunassa valitaan tulostusjonon nimi. Jos halutaan useampia nimiä, ne erotetaan putkimerkillä (|). Muita valintoja ovat jonon puskurihakemisto, suurimman mahdollisen työn koko tai nolla jos kokoa ei haluta rajoittaa, tulostimen portti ja filtteri. Filtteri valitsee käytännössä tulostimen tyypin ja asetukset. Tärkeitä valintoja filtterin valinnassa ovat tulostimen asetusten lisäksi 'Send EOF after job to eject page' ja 'Fix stair-stepping text', joista edellinen aiheuttaa tekstimuotoisten tiedostojen viimeisen sivun automaattisen tulostamisen kokonaan ja jälkimmäinen korjaa tekstitulosteiden rivinvaihto-ongelman. Alareunan kohta 'Suppress headers' estää tulostuksen otsikkosivujen tulostamisen. Valinta kannattaa jättää päälle ellei ole tarkoitus valvoa käyttäjien tulostuksia.

Etätulostin asennetaan muuten samalla tavoin, mutta tulostinportin sijasta asetetaan etäkoneen tai -tulostimen nimi tai IP-numero ja tulostusjono. Eräs huomattava seikka on, että filtterin valinta ei vaikuta mitenkään etätulostimen kanssa, vaan filtteröinti tapahtuu etäkoneella. Mikäli filtteröinti halutaan välttämättä suorittaa paikallisella koneella, täytyy luoda kaksi tulostusjonoa, joista ensimmäinen on paikallinen ja tulostaa toiselle, joka on etäjono. Asetustyökalu ei anna tähän valmista mahdollisuutta. Jos paikallinen tulostin halutaan jakaa verkkoon, luetellaan tiedostossa /etc/hosts.lpd koneet, joilla on oikeus käyttää tulostinta.



Kuva 21.1 Etätulostusjonon asetukset

/etc/printcap

Tiedosto /etc/printcap sisältää tulostusjonojen asetukset. Tiedostoa voi olla tarpeen muokata, mikäli graafinen asetustyökalu ei anna tyydyttäviä tuloksia. Tulostusjonon asetukset alkavat sen nimellä, jota seuraavat kaksoispisteillä erotetut asetukset. Rivin loppuun tulee kauttaviiva. Tavallisia asetuksia ovat:

Esimerkki paikallisen laserjet-nimisen jonon asetuksista:

laserjet:\
        :sd=/var/spool/lpd/laserjet:\
        :mx#0:\
        :sh:\
        :lp=/dev/lp1:\
        :if=/var/spool/lpd/laserjet/filter:

lpr, lprm ja lpq

Joskus ohjelmat tuottavat ainoastaan PostScript-tiedostoja tai on muuten tarve tulostaa komentoriviltä. Komennolla lpr voidaan tulostaa tiedosto haluttuun jonoon. Komento lprm poistaa tulostustyön jonosta ja lpq näyttää jonossa odottavat työt. Eri jonoja käsitellään antamalla komennoille ensimmäiseksi parametriksi -P ja heti sen perään halutun jonon nimi. Jos jonoa ei anneta parametrina, menee tulostus oletusjonoon lp.
Esimerkkejä:

lpr kirje.ps
Tulostaa PostScript-tiedoston kirje.ps oletusjonoon.

lpq -Plaserjet
Näyttää jonossa laserjet olevat tulostustyöt.

lprm -Plaserjet 12
Poistaa jonosta laserjet työn numero 12.

Ghostview

PostScript-muotoisten tiedostojen esikatseluun X:ssä voidaan käyttää ohjelmaa Ghostview, joka käynnistyy komennolla gv. Sivua voi vierittää vasemmalla hiirennapilla ja zoomata keskinapilla. Sivuja voi tulostaa yksitellen tai useampia valitsemalla niitä alakulman luettelosta keskimmäisellä hiirennapilla.


Kuva 21.2 Ghostviewin pääikkuna


22. Ohjelmien asennus

Kolme tavallisinta tapaa asentaa ohjelmia Red Hat Linuxiin ovat rpm-paketit, valmiit binäärit ja ohjelmien kääntäminen. Distribuution mukana tulevat ohjelmat ovat valmiina rpm-paketteina, kun taas esim. internetistä saatavat ohjelmat ovat usein tar-tyyppisiä paketteja, joissa on joko valmiiksi käännetyt ohjelmabinäärit tai ohjelman lähdekoodi. Muissa Linux-distribuutioissa on käytössä omia paketinhallintamenetelmiä kuin rpm, esim. Debian käyttää deb-paketteja.

rpm

Red Hatin rpm-paketit ovat yksinkertaisin tapa asentaa ohjelmia. Paketeissa on valmiina sekä ohjelmatiedostot että asetustiedostot ja ne asentuvat automaattisesti oikeisiin hakemistoihin ja ohjelma on heti käyttövalmis. Rpm-paketit tukevat myös riippuvuuksia, eli jos ohjelma vaatii toisen paketin toimiakseen, rpm osaa ilmoittaa puuttuvan paketin nimen. Rpm-paketteja voi hallita graafisella Glint-työkalulla, joka käynnistyy komennolla glint tai Control-panelin kohdasta 'Package management'.

Komentoriviltä pakettien hallinta tapahtuu komennolla rpm. Vivulla -i asennetaan paketti. Mikäli jokin toinen tarvittava paketti puuttuu, rpm ilmoittaa siitä. Riippuvuudet voi ohittaa lisäämällä komentoriville vivun --nodeps. Vanhan paketin voi ylikirjoittaa vivulla --force. Vivulla -q ja sen vivuilla kysellään tietoja pakettien sisällöstä. Kyselyn vipu -pl kertoo mitä tiedostoja paketissa on, vipu -a näyttää kaikki asennetut paketit ja -pi antaa kuvauksen paketin sisällöstä. Vipu -e poistaa parametrina annetun paketin järjestelmästä. Paljon lisää vipuja löytyy rpm:n manuaalisivulta.
Esimerkkejä:

rpm -i xlockmore-4.11-3.i386.rpm
Asentaa paketin xlockmore-4.11-3.i386.rpm järjestelmään.

rpm -e xlockmore-4.11-3
Poistaa paketin xlockmore-4.11-3. Poistettaessa pakettia ei anneta sen tarkenninta eikä i386-osaa.

rpm -q -pi xlockmore-4.11-3.i386.rpm
Näyttää paketin xlockmore-4.11-3.i386.rpm yleiset tiedot.

tar ja gzip

Yleisin Unixissa käytetty pakkaustapa on se, että komennolla tar kerätään tiedostot pakettiin ja filtteröidään ne gzip-pakkausohjelman läpi. Tar (tape arcive) on alkujaan tarkoitettu hakemistojen varmuuskopiointiin nauhalle. Internetistä saatavat ohjelmat on useimmiten pakattu juurikin tar+gzipillä, tällaisten tiedostojen tarkennin on joko tar.gz tai tgz. Gzip-filtteröinnistä ei tarvitse juurikaan huolehtia, sillä tar osaa tehdä sen vivulla z. Tavallisimpia tarin vipuja:
Esimerkkejä:

tar tzf tiedostot.tar.gz
Näyttää paketin tiedostot.tar.gz sisältämät tiedostot.

tar xzf ssh-1.2.25.tar.gz
Purkaa paketin ssh-1.2.25.tar.gz tiedostot levylle.

tar czf tekstit.tar.gz *.txt
Pakkaa pakettiin tekstit.tar.gz kaikki txt-päätteiset tiedostot. Kokonaisia hakemistopuun osia voidaan pakata samalla tavalla.

Ohjelmien kääntäminen

Ennemmin tai myöhemmin tulee vastaan tilanne, jossa ohelmasta on saatavissa vain lähdekoodi. Näin on erityisesti monien ilmaisohjelmien kohdalla. Tällaisessa tapauksessa ohjelma on käännettävä manuaalisesti C- (tai C++) kääntäjällä. Helpoimmillaan tämä tekniseltä vaikuttava vaihe tarkoittaa käskyn make ja mahdollisesti make install antamista. Jos ohjelman hakemistossa on komentojono configure, ajetaan se ensin. Configure nuuskii järjestelmän asetuksia ja tekee niiden perusteella sopivan ns. Makefilen jonka jälkeen jatketaan kuten edellä. Tiedostoissa README ja INSTALL on yleensä ohjeita ohjelman asennukseen, mikäli asennuksessa on jotain poikkeuksellista. Suurin ongelma ohjelmien käännössä on yleensä kirjastojen puuttuminen.
Esimerkki SSH-ohjelmiston käännöksen vaiheista koneella eno:

[root@eno stuff]# tar xzf ssh-1.2.25.tar.gz
[root@eno stuff]# cd ssh-1.2.25
[root@eno ssh-1.2.25]# ./configure
...
[root@eno ssh-1.2.25]# make
...
[root@eno ssh-1.2.25]# make install
Tämän jälkeen SSH-ohjelmisto on käännetty ja asennettu järjestelmään. Tutkimalla tiedostoa Makefile voi tarkemmin selvittää, mitä käännöksen aikana tapahtuu ja minne ohjelmat asentuvat, ellei sitä ole mukana tulevissa tiedostoissa kerrottu.


23. Ympäristömuuttujat

Muissakin järjestelmissä käytössä olevat ympäristömuuttujat ovat yksi tärkeä tapa ohjata järjestelmän ja ohjelmien toimintaa. Ympäristömuuttujien nimet kirjoitetaan perinteisesti isoilla kirjaimilla. Ympäristömuuttujien sisältämää arvoa voidaan käyttää komentorivillä lisäämällä muuttujan nimen eteen dollarimerkki ($). Ympäristömuuttujien arvoja voi muutella komennolla export, myöskin pelkkä yhtäsuuruusmerkki (=) toimii, mutta silloin muuttujan arvo ei periydy istunnosta käynnistettäville shelleille. Suositeltavaa on siis käyttää komentoa export. Muissa shelleissä kuin bash on oma tapansa säätää ympäristömuuttujien arvoja, esim. komento setenv. Kaikki asetetut ympäristömuuttujat arvoineen näkee komennolla set.
Esimerkkejä:
export TERM=vt100
Säätää ympäristömuuttujan TERM arvoksi vt100. TERM-ympäristömuuttuja ilmoittaa käytettävän päätteenohjauskoodin.

echo $HOME
Näyttää ympäristömuuttujan HOME sisällön ts. kotihakemiston nimen.

set | more
Näyttää kaikkien ympäristömuuttujien arvot ja katkoo tulostuksen ruudun mittaisiksi paloiksi.

Tavallisimmat ympäristömuuttujat

Useimmista ympäristömuuttujista ei tarvitse juurikaan kantaa huolta, mutta muutamien avulla voidaan lukea hyödyllisiä tietoja ja asettaa järjestelmän ominaisuuksia. Erityisesti komentojonoissa ympäristömuuttujista on suurta hyötyä. Seuraavassa luettelossa on joitakin tärkeimpiä ympäristömuuttujia käyttötarkoituksineen:

Kehotetta muokattaessa voidaan käyttää mm. seuraavia optioita:

Red Hatin oletusasetus on PS1=[\u@\h \W]\$ . Esimerkki hieman toisenlaisen kehotteen asettamisesta (huomaa hipsut):

export PS1='\h:\w\$ '


24. Laitteiden asennus

Linuxissa on kaksi tapaa, jolla laiteajuri saadaan käyttöön: suoraan kerneliin (ytimeen) käännettynä tai moduulina. Kerneliin on yleensä käännetty tuki vain koneen peruskomponenteille ja tuki lisälaitteille ladataan moduuleina. Moduuleja voidaan käynnistää ja poistaa ajon aikana ilman koneen uudelleenkäynnistystä. Pelottavalta kuullostavaan kernelin kääntöön ei nykyään ole suurtakaan tarvetta, sillä useimmille laitteille löytyy tuki valmiina moduulina. Moduulit sijaitsevat hakemistossa /lib/modules/preferred, joka on itse asiassa symbolinen linkki kernelin versiota vastaavaan hakemistoon kuten 2.0.36.

Moduulit säästävät myös muistia, sillä järjestelmä voi siirtää käyttämättömät moduulit näennäismuistiin levylle odottamaan. Jos laitetuki olisi kernelissä, tämä ei olisi mahdollista. Aivan kaikkia laitteita ei tueta kernelissä tai moduulina, esim. tuki näyttökorteille on sisäänrakennettuna X:ssä.

modprobe, insmod, lsmod ja rmmod

Red Hatin graafisella asetustyökalulla voi muokata moduuleja, tätä varten on Control-panelissa kohta 'Kernel Daemon Configuration'. Monesti on kuitenkin tehokkaampaa käsitellä moduuleja suoraan komentoriviltä. Komennoilla modprobe ja insmod voidaan ladata moduuli ja antaa sille parametrit. Kumpi tahansa komento käy, joskin modprobe on suositeltavampi, sillä se ottaa huomioon tiedoston /etc/conf.modules, jossa on moduulien asetuksia. Moduulikohtaiset parametrit annetaan moduulin nimen jälkeen. Komento lsmod näyttää ladatut moduulit ja rmmod poistaa moduulin muistista.
Esimerkkejä:

modprobe BusLogic
Lataa moduulin BusLogic eli tuen Bus Logicin SCSI-ohjaimille. Moduuli sijaitsee hakemistossa /lib/modules/preferred/scsi, mutta polkua ei tarvitse antaa, sillä järjestelmä osaa hakea moduulit automaattisesti oikeasta paikasta.

modprobe 3c509 irq=11 xcvr=0
Lataa moduulin 3c509 eli tuen 3Comin Etherlink III-korteille. Moduulille annetaan parametrina keskeytyksen numero ja käytettävän verkkoliittimen tyyppi (BNC). Parametrit ovat moduulikohtaisia, eivätkä välttämättä samanlaisia kuin esimerkissä. Verkkokortin moduuli ladataan automaattisesti, jos sellainen on asennuksen yhteydessä valittu.

lsmod
Näyttää tiedot kaikista ladatuista moduuleista. Nimen lisäksi näytetään tiedot moduulin koosta ja sitä käyttävistä järjestelmän osista.

rmmod BusLogic
Poistaa edellä ladatun moduulin BusLogic järjestelmästä ja vapauttaa sen käyttämät resurssit.

Tiedostossa /etc/conf.modules voidaan antaa valmiita parametreja ladattaville moduuleille ja tehdä niille aliaksia. Mikäli automaattisesti käynnistyviä moduuleita ei haluta säätää graafisella asetustyökalulla, voidaan niiden modprobe-komennot laittaa tiedostoon /etc/rc.d/rc.modules. Oletuksena tiedostoa rc.modules ei ole, mutta kun sen luo ja antaa siihen ajo-oikeuden, niin käynnistyskomentojonot suorittavat sen. Seuraavassa luettelossa esimerkinomaisesti joitakin moduuleja:

Äänikorttien moduulit ladataan automaattisesti, jos äänikortti on valittu sndconfig-ohjelmalla. Tiedosto /dev/sndstat sisältää tekstimuotoiset tiedot äänituesta.