On Monday 06 August 2007 11:58, Elias Aarnio wrote:
> Hei,
>
> Yritän selvittää yhtä OpenOfficen käytön kannalta kohtalaisen keskeistä
> kysymystä.
>
> Olemme huomanneet, että jos Ubuntu-työasemalla avaa verkkolevyllä olevan
> tiedoston (kokeiltu .xls ja .ods-tiedostoilla), OOo ei osaa kunnioittaa
> file lockia. Tiedosto siis avataan varoittamatta käyttäjää siitä, että
> toinen käyttäjä muokkaa sitä. Tämä johtaa tietysti käytännön työssä
> hankaliin tilanteisiin.
>
> Tämä on verifioitu näin:
>
> **********
>
> Käyttäjä A avaa Windows XP-koneellaan OpenOffice 2.1:llä Excel-tiedoston
> verkkolevyltä. Palvelin on Windows 2000-palvelin.
>
> Käyttäjä B pystyy avaamaan Ubuntu Feisty  + OOo 2.2-yhdistelmällä saman
> tiedoston, ilman että saa eteensä mitään herjaa siitä, että tiedosto on
> avattu ja että sitä muokataan.
>
> Käyttäjä B pystyy myös kirjoittamaan tiedostoon.
>
> Mitä ilmeisimmin vika on Ubuntun samba-clientissa. Mistä lähtisin
> hakemaan lisäosviittaa asiaan?
>
> **********
>
> Kysyin asiaa myös uutisryhmässä sfnet.atk.linux. Kysymyksen sanamuoto
> oli tuo tähdillä erotettu.
>
> Ari Laitinen vastasi näin:
>
> "
>
> Ei välttämättä ole vika sambassa vaan koko ajatuksessa että tuo voisi
> toimia. Ubuntun OOO tuskin näet sisältää Windowsissa käytettäviä
> lukitusmekanismeja. Itse aloittaisin selvittämällä miten OOO:ssa on
> ylipäänsä ajateltu hoitaa koko lukitus ja eroaako ne näiden ohjelmien
> kesken
> niin paljon ettei ole toivoakaan saada niitä keskenään lukitsemaan. Siis
> näkisin että pääongelma on siinä, että käytät käytännössä eri ohjelmia
> vaikka nimi onkin sama."
>
> Tämä on minulle outo ajatus. Olen ymmärtänyt, että OOo:n yksi vahvuus on
> se, että kaikkien eri käyttisten binäärit pyöräytetään samasta
> lähteestä. Olen jotenkin olettanut, että ne olisivat tästä syystä
> toiminnallisesti samanlaisia.

Valitettavasti tämä on vähän monimutkaisempaa. Windowsissa ja Linuxissa 
tiedostojen lukitusmekanismit ovat erilaisia, joten OOo ei voi olla tältä 
osin toiminnallisesti samanlainen näissä käyttöjärjestelmissä. Erot ovat niin 
suuria, että tiedostojen avaamiseen liittyvät rutiinit on 
lähdekooditasollakin toteutettu kokonaan eri tiedostoissa eri alustoja 
varten. Kyseessä on siis oleellisesti kaksi eri ohjelmaa, kuten Ari totesi.

Voidaan tietysti kysyä, miksi OOo hoitaa lukituksen Windowsissa 
käyttäen "share modeja" joilla ei ole vastinetta Posix-maailmassa, kun 
käytettävissä olisi myös LockFileEx-kutsu, jonka tuottamat lukot ovat 
semanttisesti niin lähellä Posix-lukkoja, että Samba osaisi ne muuntaa 
helposti toisikseen. Tällöin näitä havaitsemiasi ongelmia ei yhtä helposti 
syntyisi. Ehkäpä kyse on siitä, että OOo:n kehittäjät ovat halunneet käyttää 
lukitusmekanismeja, jotka ovat kullekin käyttöjärjestelmälle tyypillisiä, 
jottei syntyisi ongelmia saman käyttöjärjestelmän eri sovellusten välillä.

Jos lukitus halutaan saada toimimaan käyttöjärjestelmien välillä (eikä haluta 
muuttaa OOo:n lähdekoodia, mikä toki on mahdollista) niin tiedostopalvelimen 
on joko muunnettava lukkotyypit toisikseen tai sitten estettävä pääsy 
tiedostoon kokonaan, mikäli sille on asetettu minkä tahansa tyyppinen lukko. 
Samba (palvelin) ei OOo:n kohdalla voi käyttää ensimmäistä strategiaa, koska 
share modet ja Posix-lukot ovat liian erilaisia. Toinen strategia toimii, jos 
asetustiedostossa on verkkojaolle asetettu "strict locking = yes". Tällä on 
tietysti sivuvaikutuksia, jotka on syytä ymmärtää jos saman verkkojaon kautta 
jaetaan muutakin kuin OOo-asiakirjoja. Lisäksi Linux-työasemalla kannattaa 
käyttää cifs-tiedostojärjestelmää eikä vanhaa smbfs-järjestelmää, jotta 
Posix-lukkojen yms. välitys työaseman ja palvelimen välillä toimii oikein.

En nyt uskalla varmasti sanoa kun en itse ole moista testannut, mutta 
arvelisin, että tuossa teidän käyttötapauksessanne ongelman ydin on Windows 
2000 -palvelimessa, joka ei ymmärrä tuon taivaallista Posix-lukoista. Voi 
olla, että se pitäisi korvata Samba-palvelimella, mutta voi myös olla että 
ongelmaan on helpompiakin ratkaisuja. Joka tapauksessa minulla itselläni on 
täällä käytössä konfiguraatio, jossa on OOo 2.2 Windows Vista -työasema, OOo 
SRC680_m224 Debian Sid -virtuaalityöasema ja Debian Etch Samba -palvelin. 
Sambassa lukitukseen liittyvät asetukset ovat
   strict locking = yes
   posix locking = yes
   oplocks = no
   level2 oplocks = no
Työasemien välinen lukitus toimii, tosin tuo "strict locking" aiheuttaa 
kosmeettisen bugin OOo:ssa: Yritettäessä avata lukittua tiedostoa OOo antaa 
epämääräisiä virheilmoituksia. Tämän on joku jo IssueZillaan raportoinut, en 
nyt vain löydä kyseistä raporttia.

Jo OOo 1.1:n aikoihin tuo lukitus saatiin toimimaan joten kuten myös 
ympäristössä, jossa samaa tiedostopalvelinta käytettiin Samban avulla 
Winsowsista ja NFS:n avulla Linuxista. Kieltämättä toivoisi, että nämä asiat 
olisi toteutettu OOo:n puolella paremmin. Tai jos nykyinen toteutus todella 
on paras mahdollinen, niin minäkin kyllä haluaisin tietää että miksi.

Harri

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to