Nägemist GNU screen ja tere tmux

Kui juba kirjutamiseks läks, siis annan teada ka sellest, kuidas sujus mul üleminek GNU screenilt tmux-le. Kõigepealt vast põhjustest. Neid on kolm:

* tmuxi võtab vähem mälu;
* automaatne tiitliriba. Screeni jaoks oli vaja kasutada häkki, mis rikkus ära gnome terminali prompti. Mitte, et ma gnome terminali kasutaks, aga ikkagi põhjus;
* ja muidugi uuem koodibaas, mis annab võimaluse rohkemateks featuurideks. Vertikaalne split on üks nendest.

Tegelikult oli neljas veel. Vahetult enne üleminekut tekkis screenil akna joonistamise bug, mida oli võimalik ajutiselt “paranda” tehes detach ja re-attach, aga see oli ebamugav.

Seadistasin teise käituma enamvähem sarnaselt nagu tegi seda mul screen. Kogu konfimine käib .tmux.conf faili kaudu ja hetkel näeb ta välja selline:

# Loome väga lihtsa tiitliriba
set bell-action none
set -g status-right ""
set -g status-bg black
set -g status-fg white

# Aktiivse akna tiitel boldiks
setw -g window-status-current-attr bold

# UTF-8 ofkoors
set -g status-utf8 on
setw -g utf8 on

# C-b asendatakse C-o'ga (emacsi pärast)
unbind C-b
set -g prefix C-o
bind C-o send-prefix

# Luuakse üks sessioon nimega 0 ja kolm akent
new -d -s0 -nrtorrent 'exec rtorrent'
neww -d -nirssi 'exec irssi'
neww -d
selectw -t 1

#Lõpp

Mõned kiirklahvid, et uued tutvujad saaksid üle kassisaba. Oma tmuxi sessiooni koos kolme eelnevalt defineeritud aknaga käivitan nii:

tmux a

Ka re-attach-mine käib sama käsuga (screenil oli screen -r)

C+o d - detach-ib aktiive sessiooni
C+o <nr> - valitakse aken number...
C+o l - valitakse eelmine aktiivne aken
C+o n - valitakse järgmine (numbriliselt) aken
C+o p - valitakse eelmine (numbriliselt) aken
C+o c - luuakse uus aken shelliga
C+o s või tmux ls või tmux list-sessions - kuvab töötavaid sessioone

Saigi vast kõik olulisemad. Rohkem infi sarnaselt GNU screeniga

C+o ?

Vast nüüd on siin blogis jälle pikamat aega vaikus.

Emacs ja firefox

Jätkame siis ikka linuxi teemal… muust ma ju siin enam ei kirjuta. Kunagi olid ka filmid, aga ensekriitika on selleks liialt suur… ei taha head filmi oma arvamusega solkida.
See sissekanne tuleb lühike ja on teemal firefox ning emacs. Kuigi pea aastaid tagasi andsin siinsamas blogis teada, et vim on minu valik, siis see ei ole tõsi juba oi-oi kui kaua. Emacs all the way :)
Hiljuti sattusin sellise lehe otsa, nagu see siin ja sellest hetkest alates muutus firefoxiga majandamine hulga loomupärasemaks. On ja ka kogu GNU süsteem vaikimisi üles ehitatud Emacsi (tegelikult küll readline-i) sarnaste kiirklahvide alusel. Miks mitte kasutada tuttavaid kombinatsioone ka GNOME keskkonnas ja sh. ka brauseris.
Igatahes palju vaeva pole vaja näha… lihtsalt üks muutuja vaja gconfi kaudu ära vahetada.

/desktop/gnome/interface/gtk_key_theme

väärtuseks kribada Emacs (suure algustähega) ja valma. Nüüd saab kasutada näiteks selliseid kiirklahve:

Ctrl+A       Rea algusesse
Ctrl+E       Rea lõppu
Ctrl+F       Üks täht paremale
Ctrl+B       Üks täht vasakule
Ctrl+P       Eelmisele reale (muidugi peab olema mitu rida)
Ctrl+N       Järgmisele reale
Ctrl+K       Kustuta kõik kursorist kuni rea lõpuni
Ctrl+U       Kustuta terve rida
Ctrl+W       Kustuta sõna, mis jääb vasakule
Alt+D        Kustuta sõna, mis jääb paremale
Ctrl+H       Kustuta vasakpoolne täht (nagu backspace)
Ctrl+D       Kustuta parempoolne täht

Mõnna

rsyslog ja iptables

Mul on komme panna kirja kõik vähegi keerukamad (st. enam kui paar rida) muudatused, mis ma oma masinas teen ja üks kapsas vedeleb juba pikemat aega kõvaketta nurgal. Nüüd, loetud päevad enne jaani, punusin talle ümmarguse jutu ümber ja postitasin siia… nii bäkkappi mõttes :P
Kes on iptables-ga tulemüüri ehitanud, see ka arvatavasti logib teatud reegleid. Mis mind nende logide puhul on häirinud, on see, et vaikimisi topitakse nad kokku koos kõige muuga, mis süsteemis toimub. Ehk kõik läheb näiteks messages, syslog või kern.log faili või sootuks kõigisse korraga. Palju mõistlikum oleks ju, kui kõik müüri poolt logitavad read kirjutatakse eraldi faili – nii on lihtsam logides tuhnida ning vajalikku infot leida. Mõeldud, tehtud. Esimese asjana tuleks veenduda, kas kasutatakse standardset syslogd teenust või rsyslogi. Kes kasutab Debian Lenny-t või uuemat, nendel peaks juba vaikimisi rsyslog peal olema. Kõik teised, aga võivad julgesti ta ise paigaldada, kuna ideepoolest on rsyslog 100% ühilduv syslogd konfiguratsioonifailiga. Inglise keeles drop in replacement.
Järgmisena on vaja selgeks teha, mis kriteeriumite järgi logisid parsida. Selleks võib kasutada /etc/rsyslog.conf faili või /etc/rsyslog.d/ kataloogi. Viimane variant on mõistlikum, kuna rsyslog.conf on hallatav debiani arendajate poolt. Ehk, kui arendajad leiavad, et seal failis peaks midagi juurde lisatama või ära võetama, siis uuenduste paigaldamisel küsitakse, kas kasutada arendaja või sinu enda versiooni. Tüütuks muutub, kui pead neid kahe pidevalt võrdlema ning ise muudatusi sisse viima. Selliste ebameeldivuste ärahoidmiseks ongi loodud *.d kataloogid, kuhu pannakse seadistusfailid, mida arvuti omanik vajalikuks peab.
Antud juhul loome rsyslog.d kataloogi faili nimega iptables ning kirjutame sinna kaks rida (pluss kommentaar, sest kommentaarid on alati kasulikud).

if $syslogtag == 'kernel:' and ($msg contains 'IN=eth0' or $msg contains 'IN=6in4') then /var/log/iptables.log
& ~

Ja mida see rida tähendab? Lugema peaks teda nii: kui sõnum tuleb kernelilt (st. operatsioonisüsteemi tuumalt) ja sisaldab endas fraasi ‘IN=eth0′ või ‘IN=6in4′, siis kirjutada need read /var/log/iptables.log faili. Teine rida ütleb: ja viska ära (discard) kõik teised sõnumid. Antud reeglisse peaks suhtuma loominguliselt – kui teie võrguliides pole eth0, siis tuleks see tingimus loomulikult asendada. 6in4 on minu IPv6 tunneli liides – jällegi, kui teil sellist võrguliidest pole, siis teda reeglisse lisada pole vaja. Ilma IPv6 liideseta näeks iptables faili sisu välja selline:

if $syslogtag == 'kernel:' and $msg contains 'IN=eth0' then /var/log/iptables.log
& ~

Üks oluline märkus veel. Kõiki seadistusfaile loetakse ülevalt alla. Seega, et meie iptables-i read ei satuks näiteks messages faili, tuleb hoolt kanda selle eest, et rsyslog näeks eelpool toodud ridu enne, kui messages faili kohta käivat infot. /etc/rsyslog.conf failis peaks seega olema järgmine rida:

$IncludeConfig /etc/rsyslog.d/*.conf

piisavalt faili alguses. Liialt muretsema ei pea, sest vaikimisi ta nii juba on :)
Nüüd veel rsyslog teenusele taaskäivitus:

# /etc/init.d/rsyslog restart

Ja peakski korras olema. Kõik tulemüüri poolt logitavad read lähevad iptables.log faili ja mitte muudesse failidesse. Aga üks probleem on veel jäänud. Hoolt tuleb kanda ka selle eest, et iptables.log fail liiga suureks ei paisuks, sest kõvaketta pind pole ju raisata. Siin tuleb appi logrotate. Mis ta on ja mida ta täpselt teeb, seda ütleb

man logrotate.

Meie aga kasutame ära jällegi *.d kataloogi võlusid, ning loome /etc/logrotate.d/iptables faili. Aluseks võtsin sealt samast asuva rsyslog faili. Seega äsjaloodud iptables faili kirjutasin järgnevad read:

/var/log/iptables.log
{
        rotate 7
        daily
        missingok
        notifempty
        delaycompress
        compress
        postrotate
                invoke-rc.d rsyslog reload > /dev/null
        endscript
}

Sellega teeme logrotate rakendusele selgeks, et iptables.log faile tuleks “roteerida” või töödelda iga päev ja hoida alles viimase seitsme päeva logid.

Vsjoo. Veidi enam süstematiseeritud logidega on ju hoopis julgem tunne jaani tähistada. Kas pole? :D

Paranoia?

Selle kuu kahekümnendal päeval, kui tähtede seis on sobiv, näeb ilmavalgust Debian Lenny järjekordne hooldusväljalase. Ideepoolest peaks teine saama endale külge numbri 5.0.2 või 5.0r2, kuidas keegi soovib. Aga mitte sellest pisiasjast ei taha ma täna kirjutada.  Vaid sellest, kuidas veenduda, et serverist tiritud debiani isod on ikka need õiged, mitte kurja kreekeri poolt täisussitatud botnetihakatis :)

Lihtsuse mõttes kasutame ainult isot nimega debian-501-i386-businesscard.iso. See tuleb kõigepealt alla laadida. Kiirem koht on vast Eesti kohalik peegel, mis asub estpaki serveris. Ilukirjandust harrastama ei viitsi hakata, seega järgnev jutt puiste punktidena.

1. Tiri alla failid SHA1SUMS ja SHA1SUMS.sign või vastavad MD5 analoogid. SHA1SUMS sisaldab endas iso kontrollsummat, SHA1SUMS.sign on eelmise faili “allkiri”, tõestamaks, et kontrollsummasid pole muudetud.

2. Kontrolli gpg-ga üle, et ega neid kontrollsummasid kompromiteeritud pole:

$ gpg --verify SHA1SUMS.sign SHA1SUMS
gpg: Signature made T 14 apr      2009 21:16:21 EEST using DSA key ID 88C7C1F7
gpg: Allkirja ei saa kontrollida: ei leia avalikku võtit

Nagu näha ei leita vastavat avalikku võtit, millega failide õigsust kontrollida.

3. Impordime vastava võtme (ID 88C7C1F7). Võtmeserveriks on antud juhul igati paslik kasutada debiani enda serverit – keyring.debian.org

$ gpg --keyserver keyring.debian.org --recv-keys 88C7C1F7

4. Laseme uuesti gpg-ga SHA1SUMS* failid üle:

$ gpg --verify SHA1SUMS.sign SHA1SUMS
gpg: Signature made T 14 apr      2009 21:16:21 EEST using DSA key ID 88C7C1F7
gpg: Good signature from "Steve McIntyre <steve@einval.com>"
gpg:            aka "Steve McIntyre    <stevem@chiark.greenend.org.uk>"
gpg:            aka "Steve McIntyre    <93sam@debian.org>"
gpg: HOIATUS: Seda võtit ei ole sertifitseeritud usaldatava allkirjaga!
gpg:         Ei ole midagi, mis näitaks, et allkiri kuulub omanikule.
Primaarse võtme sõrmejälg: AC65 6D79 E362 32CF 77BB B0E8 7C3B 7970 88C7 C1F7

Õnnestus!!! Kuvatakse küll üks hoiatus, aga selle kohta loe juba siit:

http://www.cryptnet.net/fdp/crypto/keysigning_party/en/keysigning_party.html

5. Kontrollime ka tiritud iso üle:

$ sha1sum -c SHA1SUMS

Aga võib ka kasutada käsku “shasum”. See saab ise aru, kui pika räsiga tegu on.

$ shasum -c SHA1SUMS

Ja vastus

...
sha1sum: debian-501-i386-CD-9.iso: No such file or directory
debian-501-i386-CD-9.iso: avamine või lugemine ebaõnnestus
debian-501-i386-businesscard.iso: OK
sha1sum: debian-501-i386-kde-CD-1.iso: No such file or directory
debian-501-i386-kde-CD-1.iso: avamine või lugemine ebaõnnestus
...

Loomulikult neid isosid ei suudetud kontrollida, mida me alla ei laadinud, aga oluline on rida:

debian-501-i386-businesscard.iso: OK

6. Nüüd võib südamerahuga iso plaadile kõrvetada ning rõõmsat debiani elu elada. Paranoiavajadused rahuldatud.

Protsess näeb analoogne välja ka kõikide teiste distrode ning muude failide kontrollimisel. Kokkuvõtvalt – et olla 100% faili terviklikkuses ja autentsuses kindel, tuleb ta tervikklikkust kontrollida kontrollsummade abil (abiks failid md5sum, SHA1SUM vms), aga veendumaks, et kontrollfail ise karvase käe poolt puudutatud pole, tuleks teine omakorda avaliku võtme poolt kinnitada. Avalik võti saadakse võtmeserverist, võti ise on aga allkirjastatud mõne “tähtsa isiku” poolt.

Muide, samal põhimõttel kontrollitakse üle ka iga pakk, mis pakivaramust tuleb. Niiet jutud, mis pajatavad, kuidas mõni paha inimene võib sokutada ametlikku pakivaramusse “nakatunud” koodi, ei pea paika. Vähemalt debiani ja debianipõhiste distrode puhul, sh. ubuntu. Ametlik termin on secure apt.

GNU Screen

Raputame maha tolmu ning pühime ära ämblikuvõrgud. Tuli tahtmine midagi siia ajaveebi lisada. Olgugi, et täna on valimiste päev, jätan oma poliitilised eelistused enda teada ja räägin hoopis kaks sõna oma ühest lemmikumast programmist GNU/Linuxile… või noh tegelikult töötab ta pea kõigis unixilistes. GNU Screen – http://www.gnu.org/software/screen/
Väga lihtsalt seletades on ta käsureafännide parim sõber. Ta lubab ühes aknas jooksutada mitut erinevat rakendust. Vähe sellest, ta hoiab need rakendused ka siis töös, kui terminali aken sulgeda. Väga mugav on sinna sisse toppida programme, mis nagunii enamuse ajast teevad oma tööd taustal, mida mul pole vaja pidevalt jälgida – näiteks rtorrent, irssi, wget jne.
Veel mugavam on kui screen kuvab akna allservas jooksvate rakenduste nimed. Tääbidega (eesti k. kaart) terminalid võib sootuks unustada. Aga kuidas seda teha. Lihtne. Tuleb muuta oma .screenrc faili vastavalt :)
Näiteks nii:

screen -t rtorrent           0 rtorrent
screen -t irssi              1 irssi
# dünaamiline tiitle
shelltitle '$ |bash'

utf8 on
autodetach on
startup_message off

# Statusbar
caption always "%{= kw}%-w%{+b}%n %t%{-}%+w"

# Ctrl+a asemel Ctrl+o, siis ei minda emacsiga konflikti
escape ^Oo

Nagu näha, käivitatakse screeni rakendamisel automaatselt tema sees kaks programmi – rtorrent ja irssi ning antakse nende “tiitlitele” vastavad nimed. Teine oluline rida on

shelltitle '$ |bash'

Selle abiga luuakse akna allserva dünaamiline tiitel. Ehk uue akna nimeks saab see, mis rakendust seal jooksutada. Ja lõpuks on veel

caption always "%{= kw}%-w%{+b}%n %t%{-}%+w"

Sellega defineeritakse ära terminali akna alla riba, kus kogu infot näidatakse.
Selleks, et dünaamiline tiitel töötaks, tuleb veel muuta oma .bashrc faili. Oluline blokk on

[33k33\\\]

mis tuleb lisada PS1 rea juurde. Minul näeb teine välja niimoodi:

PS1="${debian_chroot:+($debian_chroot)}\[33[00;32m\]\u@\h\[33[00m\]:\[33[00;34m\]\w\[33[00m\]"'\
[33k33\\\]$ '

No vot. Nüüd laduge screen oma lemmikrakendusi täis ja kasutage klahvikombinatsiooni Ctrl+o DD või Ctrl+a DD, kui kasutate screeni vaikimisi kiirklahve. Terminali aken suletakse, aga kõik programmid jätkavad oma töö tegemist. Kui tekib tahtmine neid jälle näha, siis avage oma terminal ja tippige
screen -r
Mõnna, kas pole :)
Rohkem infot annab

man screen

või Google
Kogu kupatus näeb välja nii. Terminaliks on rxvt-unicode

GNU screen ja urxvt

GNU screen ja urxvt

Nüüd aga panen oma uhked kriuksuga saapad jalga ja lähen valima… mis sest, et e-hääl on antud. Ikka lähen :)

Täiendus!

Panin tähele, et wordpressile meeldib olulist infot ära süüa, näiteks PS1 rida, mis .bashrc faili tuleb lisada. Ei suutnud ma talle selgeks teha, et ka \ ja 0 on tähtsad. Seega õige rida tuleb maha viksida hoopis pildi pealt.

IPv6 saamisloost minu masinas.

Nüüdseks olen ipv6 teemal oma otsingutega nii kaugele jõudnud, et otsustasin masinale juba käivitamisel anda võimalus uues internetis liikuda. Kuna pea ei ole prügikasti, siis panen ka siia lühidalt kirja, mida selleks vaja teha on. Taustaks nii palju, et interneti teenust pakub Elion, paketiks Kodulahendus avatud portidega, millega anti kaasa Speedtouchi ruuter nr 716v5. Ruuteri taga Debian Testing.

1. Registreerida tunnel lehel www.ipv6.estpak.ee. See ei tohiks raske olla :)

Kui tunnel registreeritud, siis kliki oma tunneli nimel, kus näed elioni ipv6-e ja ipv4 aadressi ning enda ipv6 aadressi.

2. Ava /etc/network/interfaces fail ja lisa sinna lõppu:

#ipv6 jaoks (kommentaarid on alati kasulikud)
auto 6in4
       iface 6in4 inet6 v4tunnel
       address [sinu_ipv6_aadress]
       netmask 16
       endpoint [estpaki ipv4 aadress]
       ttl 64
       up ip link set mtu 1280 dev 6in4
       up ip route add default via [estpaki_ipv6_aadress] dev 6in4

Loomulikult tuleb seda faili muuta juurkasutaja õigustes.
Muudatuste tööle rakendamiseks, tuleb võrguteenus taaskäivitada:

/etc/init.d/networking restart

Nojaa valmis ta ongi. Kontrolliks võib pingida näiteks google ipv6 aadressi

ping6 ipv6.google.com

Paranoilised või lihtsalt uudishimulikud inimesed loovad ka tulemüüri. Linuxi all on selleks ip6tables, nagu ma eelmises sissekandes mainisin. Nüüdseks olen teada saanud, et päris nii lihtsalt ipv4 müüri konvertimine ipv6 müüriks pole, kui ennist sai välja käidud. Näiteks icmp protokoll kannab ip6tables-is nime ipv6-icmp. Silmas peab pidama ka seda, et liideseks ei ole enam eth0 vaid tunneldamiseks loodud liides. Minu näite puhul 6in4.

Müüri saab masina käivitamisel sisse lugeda samamoodi, nagu ipv4 müürgi (interfaces faili: pre-up ip6tables-restore < /etc/iptables/basic_firewall_ipv6). Mingisugune skriptijupi toon siin ka ära… et oleks lihtsam järjepeale saada, kes veel ei oska. Ja kui keegi jääb hätta tulemüüri üles seadmisega, siis tasuks lugeda minu kirjutist nimega “Elementaare tulemüür iptablesi abiga”.

#!/bin/sh

#Kustutame ära kõik olemasolevad reeglid ja ahelad
ip6tables -F
ip6tables -X

# Määrame vaikereeglistiku. Kui edaspidi ei ole reegleid,
# mis väidaksid vastupidist, siis lubatakse ainult väljaminevad
# paketid.
ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT ACCEPT

# Ignoreerime pakke, mis on mingil põhjusel vigased ja logime need
ip6tables -A INPUT -m state --state INVALID -j LOG --log-prefix " IPv6 INPUT invalid: "
ip6tables -A INPUT -m state --state INVALID -j DROP

# Lubame kohalikud sissetulevad paketid
ip6tables -A INPUT -i lo -j ACCEPT

# Kui sissetulev pakett eksisteerib, kui me tulemüüri käivitame või
# on seotud olemasolevaga, siis lubame ühenduse.
ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Avame pordi 55666
# -i eth0 võib asendada mingi muu liidesega või üldse ära jätta.
ip6tables -A INPUT -p tcp -i 6in4 --dport 55566 -j ACCEPT

# Esimene reegel lubab esimese 5 ICMP paketti olenemata nende saabumise
# kiirusest, pärast seda ainult pakett per sekund.
# Teine reegel ütleb, et kõik, mis ei mahu esimese kahe reegli alla, tuleb
# maha lüüa.
ip6tables -A INPUT -p ipv6-icmp -m limit --limit 1/second --limit-burst 5 -j ACCEPT
ip6tables -A INPUT -p ipv6-icmp -j DROP

# Logime juhud, mis ei mahu eelnevate reeglite alla
# Logi kirjutatakse /var/log/messages faili
ip6tables -A INPUT -j LOG --log-prefix " IPv6 INPUT DROP "

# Logime FORWARD INVALID paketid ja DROPime need
ip6tables -A FORWARD -m state --state INVALID -j LOG --log-prefix " IPv6 FORWARD invalid: "
ip6tables -A FORWARD -m state --state INVALID -j DROP

# Logime FORWARD DROP juhud
ip6tables -A FORWARD -j LOG --log-prefix " IPv6 FORWARD DROP "

# Logime OUTPUT INVALID paketid ja DROPime need
# ip6tables -A OUTPUT -m state --state INVALID -j LOG --log-prefix " OUTPUT invalid: "
ip6tables -A OUTPUT -m state --state INVALID -j DROP

#FIN

Siin ongi lõpp… praeguseks :P

ip6tables

Viimasel ajal olen ennast lõbustanud ipv6 võrkudes. Eriti lõbus pole, kuna neid teisi pole eriti. Aga see selleks. Vähemalt on ipv6-e jaoks lihtne müüri ehitamine. Võta ainult v4 skript ja asenda ‘iptables’ ‘ip6tablesiga’. Mingi algse versiooni saate mu ühest eelmisest sissekandest.

Saab ka koos hakkama – miks ei peakski?

Ip6tablesi müüris tekitab hetkel liiklust ainult Raadio Mania bitijada ühest Icecast serverist (töötab ka üle ipv4).

Rohkem nagu polegi midagi ette kanda. Olen ipv6 tulekuks valmis :P

Big Buck Bunny

Vardasse tõmmatud orav peatses marinaadis

Vardasse torgatud lendorav, garneeringuks peatne linnusitt. Loomamaailmas nalja ei mõisteta. Nad on tõsised tegelased, evolutsiooniteooria töötab, võidab see kes kõrgel kohal istub… või siis antud juhul lendab.

http://www.bigbuckbunny.org/

Teine film seeriast blender-creative-commons-gpl-ja-veel-kindlasti-midagi. Esimene teadupoolest oli Elephants Dream.

Ahjaa üks vana anekdoot tuli kah meelde:

Vares istub kõrgel puu otsas ja suitsetab.
Tuleb jänes, küsib vareselt: “Mis teed?”
Vares vastu: “Suitsetan ja mitte sittagi ei tee.”
Jänes vaatab, et ohhoo, see on ju väga lahe. Küsib vareselt suitsu, istub puu alla maha suitsetama.
Veidi aja pärast jalutab mööda karu. Uurib jäneselt: “Mida sa, pikk-kõrv, siin teed?”
Jänes vastab – suitsetan ja mitte sittagi ei tee.
Karule hakkab idee meeldima, küsib jäneselt suitsu ja istub puu alla maha.
Istuvad rõõmsalt seal, suitsetavad ja mitte sittagi ei tee.
Mõne aja pärast tuleb jahimees, vaatab – hoo, puu all – karu ja jänes. Paneb püssi palge ja laseb ühe pauguga mõlemad maha.
Vares vaatab seda ülevalt oksa pealt ning muigab omaette:
“Selleks, et suitsetada ja mitte sittagi teha, tuleb kõrgel kohal istuda!”

Üht-teist linuxi lokaliseerimisest.

Olen viimasel ajal otsinud üksjagu infot selle kohta, kuidas aidata kaasa nendele tublidele inimestele, kes juba aastaid oma vabast ajast on tegelenud vaba tarkvara eestindamisega. Seda tehes olen ka pidanud peenikest plaani mingil hetkel ühineda mõne tõlkemeeskonnaga. Aga enne pidin protsessi, kui sellise endale põhjalikult selgeks tegema. Internetis tuuseldades leidsin huvitava raamatu Indiast, kus on pikalt ja laialt seletatud lokaliseerimise vajadusest, tehnilistest detailidest, töökäigust ja kes-teab-millest-kõigest-veel. “Mingil kummalisel põhjusel” ei liigu bitid Eesti ja India vahel teab mis kiiresti, sestap võtsin endale vabaduse ja tegin koopia zone.ee serverisse, kuna paremat kohta polnud lihtsalt võtta.

Raamat on vabalt levitatav Creative Commons litsentsi alusel, seega kõik peaks korras olemas.

Kärsitute inimeste jaoks soovitan lugeda aga Ivar Smolini koostatud juhendit, nimega “Tõlkimisest Linuxis“.

Aga mitte ainult sellest ei tahtnud ma kirjutada. Egas ilma eputamata ka saa. Nimelt olen juba mõnda aega ühe toreda programmijupi tõlkija. Alates versioonist 1.5 on Sonata saadaval ka maakeelsena. Tõsi, järgmisse versiooni (1.5.2) tahan sisse viia paar terminoloogilist muudadust, et ta sulanduks paremini GNOME töölauaga.

Selline laisavõitu inimene, nagu ma olen, ei viitsinud eraldi rakendust .po failidega toimetamiseks paigaldada. Otsisin oma lemmikuks saanud tekstitoimetile, nimega vim, po.vim skripti ja tehtud ta sai.

Otse loomulikult on Sonata tõlke kohta oodatud konstruktiivne kriitaka. Kontaktandmed leiab vast igaüks ise üles.

Paari kuu pärast siis jälle :)

Sain ka teada, et varukoopiad on vajalikud

Oh seda elu-elukest küll. Ei suuda millestki enne puudust tunda, kui see miski kadunud pole. See miski, mis ajendas mind järjekordset sissekannet tegema, on minu olematud failid kodukataloogis. Täiesti süüdimatult toksisin terminali rm * ja tagatipuks ka enter :) … aga mis siin enam halada. Ega mõistus pole enda teha. Igatahes nüüd tekkis kange kihk hakata regulaarselt oma andmeid varuma, et järgmise vaimupuhangu järel oleks hea võtta. Ei hakka pikalt seletama miks, aga varude meisterdamiseks otsustasin kasutada rsync-i nimelist vidinat ning ega ma kade pole, jagan teile ka. Võib olla kulub kellelgi marjaks ära.
Tegemist on lihtsa shell skriptiga, mida peab käivitama käsurealt. Kuna koopiad tehakse ainult kodukataloogist, siis käivitamiseks ei ole vaja administraatori õigusi. Tööpõhimõte on lihtne:
Kõigepealt on exclude nimekiri, kus on kirjas kõik kataloogid, millest koopiat ei soovita. Näiteks erinevad ajutised puhvrid (cache), .thumbnails kataloog .Trash ja teised, milles sisalduv info ei ole eluliselt tähtis või vahetub liiga kiiresti. Oma skripti olen koostanud nii, et minu kodu kataloogist kopeeritakse kõik vajalik kataloogi /mnt/vanaketas/tagavara. Muidugi oleks hea kopeerida hoopis teise masinasse üle ssh, aga hetkel pole sellist looma kuskilt võtta. Füüsiliselt teine ketas on ka enam-vähem hea valik. Kindlasti ei ole arukas kopeerida oma andmeid samale partitsioonile, millest andmeid varundatakse.
Ära vajaks märkimist ka asjaolu, et “tagavara” kataloogi luuakse iga kord 1:1 koopia. Kui midagi kodu kataloogist ära kustutada, siis kustutakse ka “tagavara” kataloogist. Niiet üleliigselt kettaruumi ei raisata. Kasutatud lipukeste kohta on kommentaar olemas – sellel ma ei peatu. Nüüd pole muud üle jäänud, kui järgnev jupp oma tekstitoimetisse kopeerida ja salvestada mingi meeldejääva nimega nähtavale kohale, anda käivitamise õigus

chmod +x varundaja.sh

ning käivitada

./varundaja.sh

Olenevalt sellest, kui kiire on masin ja kui palju on andmeid, mida kopeerida, võtab skripti jooksutamine mõned minutid aega – tuleb ära kannatada. Järgmised käivitamised on juba vähem aega nõudvad, kuna kopeeritakse ainult neid faile, mida on vahepeal muudetud.

#!/bin/sh

EXCLUDE=" --exclude Mängud
--exclude Torrentid
--exclude google-earth
--exclude azureus
--exclude Muusika
--exclude */cache
--exclude .azureus
--exclude */Cache
--exclude .googleearth
--exclude */temp
--exclude */tmp
--exclude .thumbnails
--exclude .macromedia
--exclude .Trash
"

# a - arhiveeri
# v - verbose ehk antakse teada, mida tehakse
# --max-size=300M - ei kopeerita faile, mis on suuremad, kui 300 mega
# --delete-excluded - kustuta ka backup kataloogist failid, mis
#		                 on source kataloomast kustutatud ja on excluded nimekirjas

rsync -av --stats --max-size=300M --delete-excluded $EXCLUDE /home/mihkel /mnt/vanaketas/tagavara

echo "Valmis!"

Muidugi korralik arvutikasutaja teeb koopiaid regulaarselt, lisades skripti cron-i tööde hulka, aga kirjutaja näol ei ole tegemist korraliku arvutikasutajaga. Küll elu õpetab. Kui kunagi tulevikus suudan jälle oma dokuskid kodu kataloomast kaotada ja koopia on nii kolm-neli kuud vana, eks siis lisan ka mina selle jupi näiteks cron.daily tööde hulka :P